summaryrefslogtreecommitdiffstats
path: root/dist
diff options
context:
space:
mode:
authorfenn-cs <fenn25.fn@gmail.com>2023-09-15 11:59:03 +0100
committernextcloud-command <nextcloud-command@users.noreply.github.com>2023-09-15 13:48:54 +0000
commit481f5bba81d2bf3c79c811cdefac8dd3e46d2012 (patch)
tree62a8467ad5b5ffd9b0bd203123cfbfc39eed79c0 /dist
parent5a9df6c1688d9bdd787e2b4c654b1451758b2076 (diff)
downloadnextcloud-server-481f5bba81d2bf3c79c811cdefac8dd3e46d2012.tar.gz
nextcloud-server-481f5bba81d2bf3c79c811cdefac8dd3e46d2012.zip
Correctly switch/revert from custom to bundled perms
We have a set custom permissions checkbox, that when selected should set the quick permissions settings to custom as well as show the custom permission settings. When the checkbox is unchecked the quick permissions have to be reset to the default, `bundledPermissions.ALL` but also users can switch from custom permissions to `bundled` by just changing the radio select, hence we need a mechanism to set the permissions back to the correct fallback depending on where the user has toggled the the custom permission from. The mechanism is `revertSharingPermission` and this commit, makes sure revert values are correctly set upon toggle. Resolves : https://github.com/nextcloud/server/issues/40431 Signed-off-by: fenn-cs <fenn25.fn@gmail.com> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Diffstat (limited to 'dist')
-rw-r--r--dist/files_sharing-files_sharing_tab.js4
-rw-r--r--dist/files_sharing-files_sharing_tab.js.map2
2 files changed, 3 insertions, 3 deletions
diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js
index e0454593817..c4f39e9da2c 100644
--- a/dist/files_sharing-files_sharing_tab.js
+++ b/dist/files_sharing-files_sharing_tab.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */
-(()=>{"use strict";var e,s,i,a={92792:(e,s,i)=>{var a=i(20144),n=i(31352),r=i(1794),o=i(79753),h=i(75925),l=i.n(h),c=i(4820),d=i(79954);class p{constructor(){this._shareConfig=(0,d.j)("files_sharing","shareConfig",{})}get isPublicUploadEnabled(){return this._shareConfig.allowPublicUploads}get isShareWithLinkAllowed(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}get federatedShareDocLink(){return OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultRemoteExpireDateEnforced(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnabled(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===OC.appConfig.core.remoteShareAllowed}get isMailShareAllowed(){var e,t,s;const i=OC.getCapabilities();return void 0!==(null==i||null===(e=i.files_sharing)||void 0===e?void 0:e.sharebymail)&&!0===(null==i||null===(t=i.files_sharing)||void 0===t||null===(s=t.public)||void 0===s?void 0:s.enabled)}get defaultExpireDate(){return OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}get shouldAlwaysShowUnique(){var e,t;return!0===(null===(e=OC.getCapabilities().files_sharing)||void 0===e||null===(t=e.sharee)||void 0===t?void 0:t.always_show_unique)}get allowGroupSharing(){return!0===OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){const e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}var u=i(41922),A=i(25108);class f{constructor(e){var t,s,i,a;if(s=this,a=void 0,(i=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="_share"))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(t){A.warn('Could not parse share attributes returned by server: "'+e.attributes+'"')}e.attributes=null!==(t=e.attributes)&&void 0!==t?t:[],this._share=e}get state(){return this._share}get id(){return this._share.id}get type(){return this._share.share_type}get permissions(){return this._share.permissions}get attributes(){return this._share.attributes}set permissions(e){this._share.permissions=e}get owner(){return this._share.uid_owner}get ownerDisplayName(){return this._share.displayname_owner}get shareWith(){return this._share.share_with}get shareWithDisplayName(){return this._share.share_with_displayname||this._share.share_with}get shareWithDisplayNameUnique(){return this._share.share_with_displayname_unique||this._share.share_with}get shareWithLink(){return this._share.share_with_link}get shareWithAvatar(){return this._share.share_with_avatar}get uidFileOwner(){return this._share.uid_file_owner}get displaynameFileOwner(){return this._share.displayname_file_owner||this._share.uid_file_owner}get createdTime(){return this._share.stime}get expireDate(){return this._share.expiration}set expireDate(e){this._share.expiration=e}get token(){return this._share.token}get note(){return this._share.note}set note(e){this._share.note=e}get label(){return this._share.label}set label(e){this._share.label=e}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download}set hideDownload(e){this._share.hide_download=!0===e}get password(){return this._share.password}set password(e){this._share.password=e}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(e){this._share.password_expiration_time=e}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(e){this._share.send_password_by_talk=e}get path(){return this._share.path}get itemType(){return this._share.item_type}get mimetype(){return this._share.mimetype}get fileSource(){return this._share.file_source}get fileTarget(){return this._share.file_target}get fileParent(){return this._share.file_parent}get hasReadPermission(){return!!(this.permissions&OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&OC.PERMISSION_SHARE)}get hasDownloadPermission(){for(const e in this._share.attributes){const t=this._share.attributes[e];if("permissions"===t.scope&&"download"===t.key)return t.enabled}return!0}set hasDownloadPermission(e){this.setAttribute("permissions","download",!!e)}setAttribute(e,t,s){const i={scope:e,key:t,enabled:s};for(const e in this._share.attributes){const t=this._share.attributes[e];if(t.scope===i.scope&&t.key===i.key)return void this._share.attributes.splice(e,1,i)}this._share.attributes.push(i)}get canEdit(){return!0===this._share.can_edit}get canDelete(){return!0===this._share.can_delete}get viaFileid(){return this._share.via_fileid}get viaPath(){return this._share.via_path}get parent(){return this._share.parent}get storageId(){return this._share.storage_id}get storage(){return this._share.storage}get itemSource(){return this._share.item_source}get status(){return this._share.status}}const g={data:()=>({SHARE_TYPES:u.D})};var _=i(64024),m=i(76212),w=i.n(m),E=i(12945),C=i.n(E);const y={name:"SharingEntrySimple",components:{NcActions:C()},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}};var S=i(93379),v=i.n(S),b=i(7795),x=i.n(b),P=i(90569),D=i.n(P),T=i(3565),k=i.n(T),R=i(19216),I=i.n(R),N=i(44589),O=i.n(N),L=i(82574),Y={};Y.styleTagTransform=O(),Y.setAttributes=k(),Y.insert=D().bind(null,"head"),Y.domAPI=x(),Y.insertStyleElement=I(),v()(L.Z,Y),L.Z&&L.Z.locals&&L.Z.locals;var H=i(51900);const B=(0,H.Z)(y,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[e._t("avatar"),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[e._v(e._s(e.title))]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":e.ariaExpandedValue}},[e._t("default")],2):e._e()],2)}),[],!1,null,"776f7b36",null).exports;var U=i(25108);const F={name:"SharingEntryInternal",components:{NcActionLink:w(),SharingEntrySimple:B},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/f/")+this.fileInfo.id},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link to clipboard")},internalLinkSubtitle(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{async copyLink(){try{await navigator.clipboard.writeText(this.internalLink),(0,_.s$)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,U.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var M=i(2256),q={};q.styleTagTransform=O(),q.setAttributes=k(),q.insert=D().bind(null,"head"),q.domAPI=x(),q.insertStyleElement=I(),v()(M.Z,q),M.Z&&M.Z.locals&&M.Z.locals;const W=(0,H.Z)(F,(function(){var e=this,t=e._self._c;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:e.t("files_sharing","Internal link"),subtitle:e.internalLinkSubtitle},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[e._v(" "),t("NcActionLink",{attrs:{href:e.internalLink,"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,target:"_blank",icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1)],1)}),[],!1,null,"71a426be",null).exports;var j=i(77958),Z=i(69183),$=i(20296),V=i.n($),G=i(36456),z=i.n(G),Q=i(25108);const K=new p;async function J(){if(K.passwordPolicy.api&&K.passwordPolicy.api.generate)try{const e=await c.default.get(K.passwordPolicy.api.generate);if(e.data.ocs.data.password)return(0,_.s$)(t("files_sharing","Password created successfully")),e.data.ocs.data.password}catch(e){Q.info("Error generating password from password_policy",e),(0,_.x2)(t("files_sharing","Error generating password from password policy"))}const e=new Uint8Array(10);self.crypto.getRandomValues(e);let s="";for(let t=0;t<e.length;t++)s+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(.20392156862745098*e[t]);return s}i(35449);var X=i(25108);const ee=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),te={methods:{async createShare(e){let{path:s,permissions:i,shareType:a,shareWith:n,publicUpload:r,password:o,sendPasswordByTalk:h,expireDate:l,label:d,note:p,attributes:u}=e;try{var A;const e=await c.default.post(ee,{path:s,permissions:i,shareType:a,shareWith:n,publicUpload:r,password:o,sendPasswordByTalk:h,expireDate:l,label:d,note:p,attributes:u});if(null==e||null===(A=e.data)||void 0===A||!A.ocs)throw e;const t=new f(e.data.ocs.data);return(0,Z.j8)("files_sharing:share:created",{share:t}),t}catch(e){var g,_,m,w;X.error("Error while creating share",e);const s=null==e||null===(g=e.response)||void 0===g||null===(_=g.data)||void 0===_||null===(m=_.ocs)||void 0===m||null===(w=m.meta)||void 0===w?void 0:w.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error creating the share"),{type:"error"}),e}},async deleteShare(e){try{var s;const t=await c.default.delete(ee+"/".concat(e));if(null==t||null===(s=t.data)||void 0===s||!s.ocs)throw t;return(0,Z.j8)("files_sharing:share:deleted",{id:e}),!0}catch(e){var i,a,n,r;X.error("Error while deleting share",e);const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(n=a.ocs)||void 0===n||null===(r=n.meta)||void 0===r?void 0:r.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error deleting the share"),{type:"error"}),e}},async updateShare(e,s){try{var i;const t=await c.default.put(ee+"/".concat(e),s);if((0,Z.j8)("files_sharing:share:updated",{id:e}),null!=t&&null!==(i=t.data)&&void 0!==i&&i.ocs)return t.data.ocs.data;throw t}catch(e){if(X.error("Error while updating share",e),400!==e.response.status){var a,n,r,o;const s=null==e||null===(a=e.response)||void 0===a||null===(n=a.data)||void 0===n||null===(r=n.ocs)||void 0===r||null===(o=r.meta)||void 0===o?void 0:o.message;OC.Notification.showTemporary(s?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error updating the share"),{type:"error"})}const s=e.response.data.ocs.meta.message;throw new Error(s)}}}},se={methods:{async openSharingDetails(e){let t={};e.handler?(this.suggestions&&(e.suggestions=this.suggestions,e.fileInfo=this.fileInfo,e.query=this.query),t=await e.handler(e),t=new f(t)):t=this.mapShareRequestToShareObject(e);const s={fileInfo:this.fileInfo,share:t};this.$emit("open-sharing-details",s)},openShareDetailsForCustomSettings(e){e.setCustomPermissions=!0,this.openSharingDetails(e)},mapShareRequestToShareObject(e){if(e.id)return e;const t={attributes:[{enabled:!0,key:"download",scope:"permissions"}],share_type:e.shareType,share_with:e.shareWith,is_no_user:e.isNoUser,user:e.shareWith,share_with_displayname:e.displayName,subtitle:e.subtitle,permissions:e.permissions,expiration:""};return new f(t)}}};var ie=i(25108);const ae={name:"SharingInput",components:{NcSelect:z()},mixins:[g,te,se],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:f,default:null},canReshare:{type:Boolean,required:!0}},data:()=>({config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}),computed:{externalResults(){return this.ShareSearch.results},inputPlaceholder(){const e=this.config.isRemoteShareAllowed;return this.canReshare?e?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted(){this.getRecommendations()},methods:{handleOpen(){(0,Z.j8)("viewer:trapElements:changed",this.$refs.select.$el)},async asyncFind(e){this.query=e.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(e))},async getSuggestions(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(s=!0);const i=[this.SHARE_TYPES.SHARE_TYPE_USER,this.SHARE_TYPES.SHARE_TYPE_GROUP,this.SHARE_TYPES.SHARE_TYPE_REMOTE,this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,this.SHARE_TYPES.SHARE_TYPE_CIRCLE,this.SHARE_TYPES.SHARE_TYPE_ROOM,this.SHARE_TYPES.SHARE_TYPE_GUEST,this.SHARE_TYPES.SHARE_TYPE_DECK,this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH];!0===OC.getCapabilities().files_sharing.public.enabled&&i.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL);let a=null;try{a=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===this.fileInfo.type?"folder":"file",search:e,lookup:s,perPage:this.config.maxAutocompleteResults,shareType:i}})}catch(e){return void ie.error("Error fetching suggestions",e)}const n=a.data.ocs.data,r=a.data.ocs.data.exact;n.exact=[];const h=Object.values(r).reduce(((e,t)=>e.concat(t)),[]),l=Object.values(n).reduce(((e,t)=>e.concat(t)),[]),d=this.filterOutExistingShares(h).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),p=this.filterOutExistingShares(l).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),u=[];n.lookupEnabled&&!s&&u.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const A=this.externalResults.filter((e=>!e.condition||e.condition(this))),f=d.concat(p).concat(A).concat(u),g=f.reduce(((e,t)=>t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e),{});this.suggestions=f.map((e=>g[e.displayName]>1&&!e.desc?{...e,desc:e.shareWithDisplayNameUnique}:e)),this.loading=!1,ie.info("suggestions",this.suggestions)},debounceGetSuggestions:V()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let e=null;try{e=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(e){return void ie.error("Error fetching recommendations",e)}const t=this.externalResults.filter((e=>!e.condition||e.condition(this))),s=Object.values(e.data.ocs.data.exact).reduce(((e,t)=>e.concat(t)),[]);this.recommendations=this.filterOutExistingShares(s).map((e=>this.formatForMultiselect(e))).concat(t),this.loading=!1,ie.info("recommendations",this.recommendations)},filterOutExistingShares(e){return e.reduce(((e,t)=>{if("object"!=typeof t)return e;try{if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,j.ts)().uid)return e;if(this.reshare&&t.value.shareWith===this.reshare.owner)return e}if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==this.linkShares.map((e=>e.shareWith)).indexOf(t.value.shareWith.trim()))return e}else{const s=this.shares.reduce(((e,t)=>(e[t.shareWith]=t.type,e)),{}),i=t.value.shareWith.trim();if(i in s&&s[i]===t.value.shareType)return e}e.push(t)}catch{return e}return e}),[])},shareTypeToIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-circle",iconTitle:t("files_sharing","Circle")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let s;var i;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)s=null!==(i=e.shareWithDisplayNameUnique)&&void 0!==i?i:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)s=e.value.shareWith;else{var a;s=null!==(a=e.shareWithDescription)&&void 0!==a?a:""}else s=t("files_sharing","on {server}",{server:e.value.server});return{shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subtitle:s,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}},async addShare(e){if(this.value=null,e.lookup)return await this.getSuggestions(this.query,!0),this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),!0;if(e.handler){const t=await e.handler(this);return this.$emit("add:share",new f(t)),!0}this.loading=!0,ie.debug("Adding a new share from the input for",e);try{let t=null;this.config.enforcePasswordForPublicLink&&e.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=await J());const s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=await this.createShare({path:s,shareType:e.shareType,shareWith:e.shareWith,password:t,permissions:this.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(this.fileInfo.shareAttributes)});t?(i.newPassword=t,(await new Promise((e=>{this.$emit("add:share",i,e)}))).open=!0):this.$emit("add:share",i),await this.getRecommendations()}catch(t){this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),this.query=e.shareWith,ie.error("Error while adding new share",t)}finally{this.loading=!1}}}};var ne=i(24764),re={};re.styleTagTransform=O(),re.setAttributes=k(),re.insert=D().bind(null,"head"),re.domAPI=x(),re.insertStyleElement=I(),v()(ne.Z,re),ne.Z&&ne.Z.locals&&ne.Z.locals;const oe=(0,H.Z)(ae,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[e._v(e._s(e.t("files_sharing","Search for share recipients")))]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":"sharing-search-input",disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:e.options},on:{open:e.handleOpen,search:e.asyncFind,"option:selected":e.openSharingDetails},scopedSlots:e._u([{key:"no-options",fn:function(t){let{search:s}=t;return[e._v("\n\t\t\t"+e._s(s?e.noResultText:e.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null).exports;var he=i(45400),le=i.n(he),ce=i(65358),de=i(1162),pe=i.n(de),ue=i(25746);const Ae={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},fe={READ_ONLY:Ae.READ,UPLOAD_AND_UPDATE:Ae.READ|Ae.UPDATE|Ae.CREATE|Ae.DELETE,FILE_DROP:Ae.CREATE,ALL:Ae.UPDATE|Ae.CREATE|Ae.READ|Ae.DELETE|Ae.SHARE,ALL_FILE:Ae.UPDATE|Ae.READ|Ae.SHARE};function ge(e,t){return e!==Ae.NONE&&(e&t)===t}var _e=i(25108);const me={mixins:[te,g],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:f,default:null},isUnique:{type:Boolean,default:!0}},data(){var e;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new ue.Z({concurrency:1}),reactiveState:null===(e=this.share)||void 0===e?void 0:e.state}},computed:{hasNote:{get(){return""!==this.share.note},set(e){this.share.note=e?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const e=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],t=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:t,weekdaysMin:e,weekdaysShort:e},monthFormat:"MMM"}},isFolder(){return"dir"===this.fileInfo.type},isPublicShare(){var e;const t=null!==(e=this.share.shareType)&&void 0!==e?e:this.share.type;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(t)},isShareOwner(){return this.share&&this.share.owner===(0,j.ts)().uid},hasCustomPermissions(){return![fe.ALL,fe.READ_ONLY,fe.FILE_DROP].includes(this.share.permissions)}},methods:{checkShare:e=>(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid()),parseDateString(e){var t;if(e)return new Date(null===(t=e.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===t?void 0:t.pop())},formatDateToString:e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0],onExpirationChange(e){this.share.expireDate=this.formatDateToString(new Date(e))},onExpirationDisable(){this.share.expireDate=""},onNoteChange(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},async onDelete(){try{this.loading=!0,this.open=!1,await this.deleteShare(this.share.id),_e.debug("Share deleted",this.share.id);const e="file"===this.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:this.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:this.share.path});(0,_.s$)(e),this.$emit("remove:share",this.share)}catch(e){this.open=!0}finally{this.loading=!1}},queueUpdate(){for(var e=arguments.length,s=new Array(e),i=0;i<e;i++)s[i]=arguments[i];if(0!==s.length){if(this.share.id){const e={};return s.forEach((t=>{"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),void this.updateQueue.add((async()=>{this.saving=!0,this.errors={};try{const i=await this.updateShare(this.share.id,e);s.indexOf("password")>=0&&(this.$delete(this.share,"newPassword"),this.share.passwordExpirationTime=i.password_expiration_time),this.$delete(this.errors,s[0]),(0,_.s$)(t("files_sharing","Share {propertyName} saved",{propertyName:s[0]}))}catch({message:e}){e&&""!==e&&(this.onSyncError(s[0],e),(0,_.x2)(t("files_sharing",e)))}finally{this.saving=!1}}))}_e.debug("Updated local share",this.share)}},onSyncError(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,e,t);let s=this.$refs[e];if(s){s.$el&&(s=s.$el);const e=s.querySelector(".focusable");e&&e.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:V()((function(e){this.queueUpdate(e)}),500)}},we={name:"SharingEntryInherited",components:{NcActionButton:le(),NcActionLink:w(),NcActionText:pe(),NcAvatar:l(),SharingEntrySimple:B},mixins:[me],props:{share:{type:f,required:!0}},computed:{viaFileTargetUrl(){return(0,o.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,ce.EZ)(this.share.viaPath)}}};var Ee=i(33668),Ce={};Ce.styleTagTransform=O(),Ce.setAttributes=k(),Ce.insert=D().bind(null,"head"),Ce.domAPI=x(),Ce.insertStyleElement=I(),v()(Ee.Z,Ce),Ee.Z&&Ee.Z.locals&&Ee.Z.locals;const ye=(0,H.Z)(we,(function(){var e=this,t=e._self._c;return t("SharingEntrySimple",{key:e.share.id,staticClass:"sharing-entry__inherited",attrs:{title:e.share.shareWithDisplayName},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.share.shareWith,"display-name":e.share.shareWithDisplayName}})]},proxy:!0}])},[e._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Added by {initiator}",{initiator:e.share.ownerDisplayName}))+"\n\t")]),e._v(" "),e.share.viaPath&&e.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:e.viaFileTargetUrl}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Via “{folder}”",{folder:e.viaFolderName}))+"\n\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t")]):e._e()],1)}),[],!1,null,"038f97f0",null).exports;var Se=i(25108);const ve={name:"SharingInherited",components:{NcActionButton:le(),SharingEntryInherited:ye,SharingEntrySimple:B},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}),computed:{showInheritedSharesIcon(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:()=>t("files_sharing","Others with access"),subTitle(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo(){this.resetState()}},methods:{toggleInheritedShares(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},async fetchInheritedShares(){this.loading=!0;try{const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),t=await c.default.get(e);this.shares=t.data.ocs.data.map((e=>new f(e))).sort(((e,t)=>t.createdTime-e.createdTime)),Se.info(this.shares),this.loaded=!0}catch(e){OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"})}finally{this.loading=!1}},resetState(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}};var be=i(84772),xe={};xe.styleTagTransform=O(),xe.setAttributes=k(),xe.insert=D().bind(null,"head"),xe.domAPI=x(),xe.insertStyleElement=I(),v()(be.Z,xe),be.Z&&be.Z.locals&&be.Z.locals;const Pe=(0,H.Z)(ve,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:e.mainTitle,subtitle:e.subTitle,"aria-expanded":e.showInheritedShares},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[e._v(" "),t("NcActionButton",{attrs:{icon:e.showInheritedSharesIcon,"aria-label":e.toggleTooltip,title:e.toggleTooltip},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.toggleInheritedShares.apply(null,arguments)}}})],1),e._v(" "),e._l(e.shares,(function(s){return t("SharingEntryInherited",{key:s.id,attrs:{"file-info":e.fileInfo,share:s},on:{"remove:share":e.removeShare}})}))],2)}),[],!1,null,"05b67dc8",null).exports;var De=i(79570),Te=i.n(De),ke=i(875),Re=i.n(ke),Ie=i(55976),Ne=i(3641),Oe=i(15303);const Le={components:{DropdownIcon:Ne.Z},mixins:[me,se,g],props:{share:{type:Object,required:!0},toggle:{type:Boolean,default:!1}},data(){return{selectedOption:"",showDropdown:this.toggle,focusTrap:null}},computed:{canViewText:()=>t("files_sharing","View only"),canEditText:()=>t("files_sharing","Can edit"),fileDropText:()=>t("files_sharing","File drop"),customPermissionsText:()=>t("files_sharing","Custom permissions"),preSelectedOption(){return(this.share.permissions&~Ae.SHARE)===fe.READ_ONLY?this.canViewText:this.share.permissions===fe.ALL||this.share.permissions===fe.ALL_FILE?this.canEditText:(this.share.permissions&~Ae.SHARE)===fe.FILE_DROP?this.fileDropText:this.customPermissionsText},options(){const e=[this.canViewText,this.canEditText];return this.supportsFileDrop&&e.push(this.fileDropText),e.push(this.customPermissionsText),e},supportsFileDrop(){if(this.isFolder&&this.config.isPublicUploadEnabled){var e;const t=null!==(e=this.share.type)&&void 0!==e?e:this.share.shareType;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(t)}return!1},dropDownPermissionValue(){switch(this.selectedOption){case this.canEditText:return this.isFolder?fe.ALL:fe.ALL_FILE;case this.fileDropText:return fe.FILE_DROP;case this.customPermissionsText:return"custom";case this.canViewText:default:return fe.READ_ONLY}},dropdownId:()=>"dropdown-".concat(Math.random().toString(36).substr(2,9))},watch:{toggle(e){this.showDropdown=e}},mounted(){this.initializeComponent(),window.addEventListener("click",this.handleClickOutside)},beforeDestroy(){window.removeEventListener("click",this.handleClickOutside)},methods:{toggleDropdown(){this.showDropdown=!this.showDropdown,this.showDropdown?this.$nextTick((()=>{this.useFocusTrap()})):this.clearFocusTrap()},closeDropdown(){this.clearFocusTrap(),this.showDropdown=!1},selectOption(e){this.selectedOption=e,e===this.customPermissionsText?this.$emit("open-sharing-details"):(this.share.permissions=this.dropDownPermissionValue,this.queueUpdate("permissions")),this.showDropdown=!1},initializeComponent(){this.selectedOption=this.preSelectedOption},handleClickOutside(e){const t=this.$refs.quickShareDropdownContainer;t&&!t.contains(e.target)&&(this.showDropdown=!1)},useFocusTrap(){Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]});const e=this.$refs.quickShareDropdown;this.focusTrap=(0,Oe.createFocusTrap)(e,{allowOutsideClick:!0,trapStack:window._nc_focus_trap}),this.focusTrap.activate()},clearFocusTrap(){var e;null===(e=this.focusTrap)||void 0===e||e.deactivate(),this.focusTrap=null},shiftFocusForward(){let e=document.activeElement.nextElementSibling;e||(e=this.$refs.quickShareDropdown.firstElementChild),e.focus()},shiftFocusBackward(){let e=document.activeElement.previousElementSibling;e||(e=this.$refs.quickShareDropdown.lastElementChild),e.focus()},handleArrowUp(){this.shiftFocusBackward()},handleArrowDown(){this.shiftFocusForward()}}},Ye=Le;var He=i(94345),Be={};Be.styleTagTransform=O(),Be.setAttributes=k(),Be.insert=D().bind(null,"head"),Be.domAPI=x(),Be.insertStyleElement=I(),v()(He.Z,Be),He.Z&&He.Z.locals&&He.Z.locals;const Ue=(0,H.Z)(Ye,(function(){var e=this,t=e._self._c;return t("div",{ref:"quickShareDropdownContainer",class:{active:e.showDropdown,"share-select":!0}},[t("span",{staticClass:"trigger-text",attrs:{id:e.dropdownId,"aria-expanded":e.showDropdown,"aria-haspopup":!0,"aria-label":"Quick share options dropdown"},on:{click:e.toggleDropdown}},[e._v("\n\t\t"+e._s(e.selectedOption)+"\n\t\t"),t("DropdownIcon",{attrs:{size:15}})],1),e._v(" "),e.showDropdown?t("div",{ref:"quickShareDropdown",staticClass:"share-select-dropdown",attrs:{"aria-labelledby":e.dropdownId,tabindex:"0"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:e.handleArrowDown.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:e.handleArrowUp.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.closeDropdown.apply(null,arguments)}]}},e._l(e.options,(function(s){return t("button",{key:s,class:{"dropdown-item":!0,selected:s===e.selectedOption},attrs:{"aria-selected":s===e.selectedOption},on:{click:function(t){return e.selectOption(s)}}},[e._v("\n\t\t\t"+e._s(s)+"\n\t\t")])})),0):e._e()])}),[],!1,null,"c003ab64",null).exports,Fe={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:f,default:null}},computed:{data(){return this.action.data(this)}}},Me=(0,H.Z)(Fe,(function(){var e=this;return(0,e._self._c)(e.data.is,e._g(e._b({tag:"Component"},"Component",e.data,!1),e.action.handlers),[e._v("\n\t"+e._s(e.data.text)+"\n")])}),[],!1,null,null,null).exports;var qe=i(25108);const We={name:"SharingEntryLink",components:{ExternalShareAction:Me,NcActions:C(),NcActionButton:le(),NcActionInput:Te(),NcActionLink:w(),NcActionText:pe(),NcActionSeparator:Re(),NcAvatar:l(),Tune:Ie.Z,QuickShareSelect:Ue},mixins:[me,se],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({showDropdown:!1,copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}),computed:{title(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Share link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set(e){const t=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",qe.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){a.default.set(this.share,"password",e?await J():""),a.default.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword(){return this.config.enableLinkPasswordByDefault&&this.share&&!this.share.id},pendingEnforcedPassword(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/s/")+this.share.token},actionsTooltip(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing",'Copy public link of "{title}" to clipboard',{title:this.title})},externalLegacyLinkActions(){return this.ExternalLegacyLinkActions.actions},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>e.shareType.includes(u.D.SHARE_TYPE_LINK)||e.shareType.includes(u.D.SHARE_TYPE_EMAIL)))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.enabled))}},methods:{async onNewLinkShare(){if(this.loading)return;const e={share_type:u.D.SHARE_TYPE_LINK};if(this.config.isDefaultExpireDateEnforced&&(e.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced){if(this.pending=!0,this.share&&!this.share.id){if(this.checkShare(this.share)){try{await this.pushNewLinkShare(this.share,!0)}catch(e){return this.pending=!1,qe.error(e),!1}return!0}return this.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}(this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink)&&(e.password=await J());const s=new f(e),i=await new Promise((e=>{this.$emit("add:share",s,e)}));this.open=!1,this.pending=!1,i.open=!0}else{const t=new f(e);await this.pushNewLinkShare(t)}},async pushNewLinkShare(e,s){try{if(this.loading)return!0;this.loading=!0,this.errors={};const i={path:(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),shareType:u.D.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(this.fileInfo.shareAttributes)};qe.debug("Creating link share with options",i);const a=await this.createShare(i);let n;this.open=!1,qe.debug("Link share created",a),n=s?await new Promise((e=>{this.$emit("update:share",a,e)})):await new Promise((e=>{this.$emit("add:share",a,e)})),this.config.enforcePasswordForPublicLink||n.copyLink(),(0,_.s$)(t("files_sharing","Link share created"))}catch(e){var i,a,n,r;const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(n=a.ocs)||void 0===n||null===(r=n.meta)||void 0===r?void 0:r.message;if(!s)return(0,_.x2)(t("files_sharing","Error while creating the share")),void qe.error(e);throw s.match(/password/i)?this.onSyncError("password",s):s.match(/date/i)?this.onSyncError("expireDate",s):this.onSyncError("pending",s),e}finally{this.loading=!1}},async copyLink(){try{await navigator.clipboard.writeText(this.shareLink),(0,_.s$)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,qe.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(e){this.$set(this.share,"newPassword",e)},onPasswordDisable(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel(){this.$emit("remove:share",this.share)},toggleQuickShareSelect(){this.showDropdown=!this.showDropdown}}},je=We;var Ze=i(1981),$e={};$e.styleTagTransform=O(),$e.setAttributes=k(),$e.insert=D().bind(null,"head"),$e.domAPI=x(),$e.insertStyleElement=I(),v()(Ze.Z,$e),Ze.Z&&Ze.Z.locals&&Ze.Z.locals;const Ve={name:"SharingLinkList",components:{SharingEntryLink:(0,H.Z)(je,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":e.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":e.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),e._v(" "),t("div",{staticClass:"sharing-entry__desc",on:{click:function(t){return t.preventDefault(),e.toggleQuickShareSelect.apply(null,arguments)}}},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t"+e._s(e.title)+"\n\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e(),e._v(" "),e.share&&void 0!==e.share.permissions?t("QuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo,toggle:e.showDropdown},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}}):e._e()],1),e._v(" "),e.share&&!e.isEmailShareType&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionLink",{attrs:{href:e.shareLink,target:"_blank",title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip,icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1):e._e(),e._v(" "),!e.pending&&(e.pendingPassword||e.pendingEnforcedPassword||e.pendingExpirationDate)?t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onNewLinkShare}},[e.errors.pending?t("NcActionText",{class:{error:e.errors.pending},attrs:{icon:"icon-error"}},[e._v("\n\t\t\t"+e._s(e.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),e._v(" "),e.pendingEnforcedPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):e.pendingPassword?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingEnforcedPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:e.onNewLinkShare}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1):e.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onMenuClose}},[e.share?[e.share.canEdit&&e.canReshare?[t("NcActionButton",{attrs:{disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.openSharingDetails.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Customize link"))+"\n\t\t\t\t")])]:e._e(),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(s){return t("ExternalShareAction",{key:s.id,attrs:{id:s.id,action:s,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(s,i){let{icon:a,url:n,name:r}=s;return t("NcActionLink",{key:i,attrs:{href:n(e.shareLink),icon:a,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(r)+"\n\t\t\t")])})),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t\t")]):e._e()]:e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{title:e.t("files_sharing","Create a new share link"),"aria-label":e.t("files_sharing","Create a new share link"),icon:e.loading?"icon-loading-small":"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}}):e._e()],2)],1)}),[],!1,null,"6b7b22e9",null).exports},mixins:[g,se],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:OC.getCapabilities().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK)).length>0},hasShares(){return this.shares.length>0}},methods:{addShare(e,t){this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare(e,t){this.$nextTick((()=>{const s=this.$children.find((t=>t.share===e));s&&t(s)}))},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},Ge=(0,H.Z)(Ve,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!e.hasLinkShares&&e.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo},on:{"add:share":e.addShare}}):e._e(),e._v(" "),e.hasShares?e._l(e.shares,(function(s,i){return t("SharingEntryLink",{key:s.id,attrs:{index:e.shares.length>1?i+1:null,"can-reshare":e.canReshare,share:e.shares[i],"file-info":e.fileInfo},on:{"update:share":[function(t){return e.$set(e.shares,i,t)},function(t){return e.awaitForShare(...arguments)}],"add:share":function(t){return e.addShare(...arguments)},"remove:share":e.removeShare,"open-sharing-details":function(t){return e.openSharingDetails(s)}}})})):e._e()],2):e._e()}),[],!1,null,null,null).exports;var ze=i(10861),Qe=i.n(ze),Ke=i(89115);const Je={name:"SharingEntry",components:{NcButton:Qe(),NcAvatar:l(),DotsHorizontalIcon:Ke.default,NcSelect:z(),QuickShareSelect:Ue},mixins:[me,se],data:()=>({showDropdown:!1}),computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},hasStatus(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)}},methods:{onMenuClose(){this.onNoteSubmit()},toggleQuickShareSelect(){this.showDropdown=!this.showDropdown}}};var Xe=i(57854),et={};et.styleTagTransform=O(),et.setAttributes=k(),et.insert=D().bind(null,"head"),et.domAPI=x(),et.insertStyleElement=I(),v()(Xe.Z,et),Xe.Z&&Xe.Z.locals&&Xe.Z.locals;const tt={name:"SharingList",components:{SharingEntry:(0,H.Z)(Je,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.type!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t("div",{staticClass:"sharing-entry__summary",on:{click:function(t){return t.preventDefault(),e.toggleQuickShareSelect.apply(null,arguments)}}},[t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__summary__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)+"\n\t\t\t\t"),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__summary__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")]),e._v(" "),e.hasStatus&&e.share.status.message?t("small",[e._v("("+e._s(e.share.status.message)+")")]):e._e()])]),e._v(" "),t("QuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo,toggle:e.showDropdown},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}})],1),e._v(" "),t("NcButton",{staticClass:"sharing-entry__action",attrs:{"aria-label":e.t("files_sharing","Open Sharing Details"),type:"tertiary-no-background"},on:{click:function(t){return e.openSharingDetails(e.share)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}])})],1)}),[],!1,null,"532437fc",null).exports},mixins:[g,se],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},computed:{hasShares(){return 0===this.shares.length},isUnique(){return e=>[...this.shares].filter((t=>e.type===this.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName)).length<=1}}},st=(0,H.Z)(tt,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list"},e._l(e.shares,(function(s){return t("SharingEntry",{key:s.id,attrs:{"file-info":e.fileInfo,share:s,"is-unique":e.isUnique(s)},on:{"open-sharing-details":function(t){return e.openSharingDetails(s)}}})})),1)}),[],!1,null,null,null).exports;var it=i(36029),at=i.n(it),nt=i(36767),rt=i.n(nt),ot=i(19286),ht=i.n(ot),lt=i(20571),ct=i.n(lt),dt=i(10549),pt=i(82675),ut=i(73229),At=i(41447),ft=i(19695),gt=i(50413),_t=i(42055),mt=i(76205),wt=i(82640),Et=i(75762),Ct=i(20404),yt=i(25108);const St={name:"SharingDetailsTab",components:{NcAvatar:l(),NcButton:Qe(),NcInputField:at(),NcDatetimePicker:rt(),NcDateTimePickerNative:ht(),NcCheckboxRadioSwitch:ct(),CloseIcon:pt.default,CircleIcon:dt.Z,EditIcon:ut.default,LinkIcon:ft.Z,GroupIcon:gt.Z,ShareIcon:_t.Z,UserIcon:mt.Z,UploadIcon:Et.Z,ViewIcon:wt.default,MenuDownIcon:Ct.Z,DotsHorizontalIcon:Ke.default},mixins:[g,te,me],props:{shareRequestValue:{type:Object,required:!1},fileInfo:{type:Object,required:!0},share:{type:Object,required:!0}},data:()=>({writeNoteToRecipientIsChecked:!1,sharingPermission:fe.ALL.toString(),revertSharingPermission:null,setCustomPermissions:!1,passwordError:!1,advancedSectionAccordionExpanded:!1,bundledPermissions:fe,isFirstComponentLoad:!0,test:!1}),computed:{title(){let e=t("files_sharing","Share with ");return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER?e+=this.share.shareWithDisplayName:this.share.type===this.SHARE_TYPES.SHARE_TYPE_LINK?e=t("files_sharing","Share link"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},canEdit:{get(){return this.share.hasUpdatePermission},set(e){this.updateAtomicPermissions({isEditChecked:e})}},canCreate:{get(){return this.share.hasCreatePermission},set(e){this.updateAtomicPermissions({isCreateChecked:e})}},canDelete:{get(){return this.share.hasDeletePermission},set(e){this.updateAtomicPermissions({isDeleteChecked:e})}},canReshare:{get(){return this.share.hasSharePermission},set(e){this.updateAtomicPermissions({isReshareChecked:e})}},canDownload:{get(){return this.share.hasDownloadPermission},set(e){this.updateAtomicPermissions({isDownloadChecked:e})}},hasRead:{get(){return this.share.hasReadPermission},set(e){this.updateAtomicPermissions({isReadChecked:e})}},hasExpirationDate:{get(){return!!this.share.expireDate||this.config.isDefaultInternalExpireDateEnforced},set(e){this.share.expireDate=e?this.formatDateToString(this.defaultExpiryDate):""}},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){this.share.password=e?await J():"",this.$set(this.share,"newPassword",this.share.password)}},isFolder(){return"dir"===this.fileInfo.type},dateMaxEnforced(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},isSetDownloadButtonVisible(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)},isPasswordEnforced(){return this.isPublicShare&&this.config.enforcePasswordForPublicLink},isExpiryDateEnforced(){return this.config.isDefaultInternalExpireDateEnforced},defaultExpiryDate(){return(this.isGroupShare||this.isUserShare)&&this.config.isDefaultInternalExpireDateEnabled?new Date(this.config.defaultInternalExpirationDate):this.isRemoteShare&&this.config.isDefaultRemoteExpireDateEnabled?new Date(this.config.defaultRemoteExpireDateEnabled):this.isPublicShare&&this.config.isDefaultExpireDateEnabled?new Date(this.config.defaultExpirationDate):new Date((new Date).setDate((new Date).getDate()+1))},isUserShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER},isGroupShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP},isRemoteShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE},isNewShare(){return null===this.share.id||void 0===this.share.id},allowsFileDrop(){return!(!this.isFolder||!this.config.isPublicUploadEnabled||this.share.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&this.share.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)},hasFileDropPermissions(){return this.share.permissions===this.bundledPermissions.FILE_DROP},shareButtonText(){return this.isNewShare?t("file_sharing","Save share"):t("file_sharing","Update share")},canSetEdit(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload(){return this.fileInfo.canDownload()||this.canDownload},hasUnsavedPassword(){return void 0!==this.share.newPassword},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPublicShare||!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.enabled))},customPermissionsList(){const e=[];return ge(this.share.permissions,Ae.READ)&&e.push("read"),ge(this.share.permissions,Ae.CREATE)&&e.push("create"),ge(this.share.permissions,Ae.UPDATE)&&e.push("update"),ge(this.share.permissions,Ae.DELETE)&&e.push("delete"),ge(this.share.permissions,Ae.SHARE)&&e.push("share"),this.share.hasDownloadPermission&&e.push("download"),e.map(((e,t)=>0===t?e[0].toUpperCase()+e.substring(1):e)).join(", ")}},watch:{setCustomPermissions(e){this.sharingPermission=e?"custom":this.revertSharingPermission}},beforeMount(){this.initializePermissions(),this.initializeAttributes(),yt.debug("shareSentIn",this.share),yt.debug("config",this.config)},methods:{updateAtomicPermissions(){let{isReadChecked:e=this.hasRead,isEditChecked:t=this.canEdit,isCreateChecked:s=this.canCreate,isDeleteChecked:i=this.canDelete,isReshareChecked:a=this.canReshare,isDownloadChecked:n=this.canDownload}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=0|(e?Ae.READ:0)|(s?Ae.CREATE:0)|(i?Ae.DELETE:0)|(t?Ae.UPDATE:0)|(a?Ae.SHARE:0);this.share.permissions=r,this.share.hasDownloadPermission!==n&&this.$set(this.share,"hasDownloadPermission",n)},expandCustomPermissions(){this.advancedSectionAccordionExpanded||(this.advancedSectionAccordionExpanded=!0),this.toggleCustomPermissions()},toggleCustomPermissions(){this.setCustomPermissions="custom"===this.sharingPermission},initializeAttributes(){if(this.isNewShare)return;let e=!1;this.isValidShareAttribute(this.share.note)&&(this.writeNoteToRecipientIsChecked=!0,e=!0),this.isValidShareAttribute(this.share.password)&&(e=!0),this.isValidShareAttribute(this.share.expireDate)&&(e=!0),this.isValidShareAttribute(this.share.label)&&(e=!0),e&&(this.advancedSectionAccordionExpanded=!0)},initializePermissions(){this.share.share_type&&(this.share.type=this.share.share_type),"shareType"in this.share&&(this.share.type=this.share.shareType),this.isNewShare?this.isPublicShare?this.sharingPermission=fe.READ_ONLY.toString():this.sharingPermission=fe.ALL.toString():this.hasCustomPermissions||this.share.setCustomPermissions?(this.sharingPermission="custom",this.advancedSectionAccordionExpanded=!0,this.setCustomPermissions=!0):this.sharingPermission=this.share.permissions.toString()},async saveShare(){const e=["permissions","attributes","note","expireDate"];this.isPublicShare&&e.push("label","password","hideDownload");const t=parseInt(this.sharingPermission);if(this.setCustomPermissions?this.updateAtomicPermissions():this.share.permissions=t,this.isFolder||this.share.permissions!==fe.ALL||(this.share.permissions=fe.ALL_FILE),this.writeNoteToRecipientIsChecked||(this.share.note=""),this.isPasswordProtected){if(this.isValidShareAttribute(this.share.newPassword))this.share.password=this.share.newPassword,this.$delete(this.share,"newPassword");else if(this.isPasswordEnforced)return void(this.passwordError=!0)}else this.share.password="";if(this.hasExpirationDate||(this.share.expireDate=""),this.isNewShare){const e={permissions:this.share.permissions,shareType:this.share.type,shareWith:this.share.shareWith,attributes:this.share.attributes,note:this.share.note,fileInfo:this.fileInfo};this.hasExpirationDate&&(e.expireDate=this.share.expireDate),this.isPasswordProtected&&(e.password=this.share.password);const t=await this.addShare(e,this.fileInfo);this.share=t,this.$emit("add:share",this.share)}else this.queueUpdate(...e);this.$emit("close-sharing-details")},async addShare(e,t){yt.debug("Adding a new share from the input for",e);try{const s=(t.path+"/"+t.name).replace("//","/");return await this.createShare({path:s,shareType:e.shareType,shareWith:e.shareWith,permissions:e.permissions,attributes:JSON.stringify(t.shareAttributes),...e.note?{note:e.note}:{},...e.password?{password:e.password}:{},...e.expireDate?{expireDate:e.expireDate}:{}})}catch(e){yt.error("Error while adding new share",e)}},async removeShare(){await this.onDelete(),this.$emit("close-sharing-details")},onPasswordChange(e){this.passwordError=!this.isValidShareAttribute(e),this.$set(this.share,"newPassword",e)},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},isValidShareAttribute:e=>![null,void 0].includes(e)&&e.trim().length>0,getShareTypeIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_LINK:return ft.Z;case this.SHARE_TYPES.SHARE_TYPE_GUEST:return mt.Z;case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return gt.Z;case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return At.Z;case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return dt.Z;case this.SHARE_TYPES.SHARE_TYPE_ROOM:case this.SHARE_TYPES.SHARE_TYPE_DECK:case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return _t.Z;default:return null}}}};var vt=i(58886),bt={};bt.styleTagTransform=O(),bt.setAttributes=k(),bt.insert=D().bind(null,"head"),bt.domAPI=x(),bt.insertStyleElement=I(),v()(vt.Z,bt),vt.Z&&vt.Z.locals&&vt.Z.locals;const xt=(0,H.Z)(St,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharingTabDetailsView"},[t("div",{staticClass:"sharingTabDetailsView__header"},[t("span",[e.isUserShare?t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.shareType!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}):e._e(),e._v(" "),t(e.getShareTypeIcon(e.share.type),{tag:"component",attrs:{size:32}})],1),e._v(" "),t("span",[t("h1",[e._v(e._s(e.title))])])]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__quick-permissions"},[t("div",[t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.READ_ONLY.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]}},[t("ViewIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","View only")))])],1),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.ALL.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]}},[t("EditIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","Allow upload and editing")))])],1),e._v(" "),e.allowsFileDrop?t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.FILE_DROP.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]}},[t("UploadIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","File drop")))]),e._v(" "),t("small",[e._v(e._s(e.t("files_sharing","Upload only")))])],1):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:"custom",name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.expandCustomPermissions]}},[t("DotsHorizontalIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","Custom permissions")))]),e._v(" "),t("small",[e._v(e._s(e.t("files_sharing",e.customPermissionsList)))])],1)],1)]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__advanced-control"},[t("NcButton",{attrs:{type:"tertiary",alignment:"end-reverse"},on:{click:function(t){e.advancedSectionAccordionExpanded=!e.advancedSectionAccordionExpanded}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("MenuDownIcon")]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Advanced settings"))+"\n\t\t\t")])],1),e._v(" "),e.advancedSectionAccordionExpanded?t("div",{staticClass:"sharingTabDetailsView__advanced"},[t("section",[e.isPublicShare?t("NcInputField",{attrs:{value:e.share.label,type:"text",label:e.t("file_sharing","Share label")},on:{"update:value":function(t){return e.$set(e.share,"label",t)}}}):e._e(),e._v(" "),e.isPublicShare?[t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtected,disabled:e.isPasswordEnforced},on:{"update:checked":function(t){e.isPasswordProtected=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Set password"))+"\n\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcInputField",{attrs:{type:e.hasUnsavedPassword?"text":"password",value:e.hasUnsavedPassword?e.share.newPassword:"***************",error:e.passwordError,required:e.isPasswordEnforced,label:e.t("file_sharing","Password")},on:{"update:value":e.onPasswordChange}}):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("span",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("span",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):e._e()]:e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.hasExpirationDate,disabled:e.isExpiryDateEnforced},on:{"update:checked":function(t){e.hasExpirationDate=t}}},[e._v("\n\t\t\t\t"+e._s(e.isExpiryDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcDateTimePickerNative",{attrs:{id:"share-date-picker",value:new Date(e.share.expireDate),min:e.dateTomorrow,max:e.dateMaxEnforced,"hide-label":!0,disabled:e.isExpiryDateEnforced,placeholder:e.t("file_sharing","Expiration date"),type:"date"},on:{input:e.onExpirationChange}}):e._e(),e._v(" "),e.isPublicShare?t("NcCheckboxRadioSwitch",{attrs:{disabled:e.canChangeHideDownload,checked:e.share.hideDownload},on:{"update:checked":[function(t){return e.$set(e.share,"hideDownload",t)},function(t){return e.queueUpdate("hideDownload")}]}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Hide download"))+"\n\t\t\t")]):e._e(),e._v(" "),e.canTogglePasswordProtectedByTalkAvailable?t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtectedByTalk},on:{"update:checked":[function(t){e.isPasswordProtectedByTalk=t},e.onPasswordProtectedByTalkChange]}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Video verification"))+"\n\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.writeNoteToRecipientIsChecked},on:{"update:checked":function(t){e.writeNoteToRecipientIsChecked=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Note to recipient"))+"\n\t\t\t")]),e._v(" "),e.writeNoteToRecipientIsChecked?[t("textarea",{domProps:{value:e.share.note},on:{input:function(t){e.share.note=t.target.value}}})]:e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.setCustomPermissions},on:{"update:checked":function(t){e.setCustomPermissions=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Custom permissions"))+"\n\t\t\t")]),e._v(" "),e.setCustomPermissions?t("section",{staticClass:"custom-permissions-group"},[t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.allowsFileDrop&&e.share.type===e.SHARE_TYPES.SHARE_TYPE_LINK,checked:e.hasRead},on:{"update:checked":function(t){e.hasRead=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Read"))+"\n\t\t\t\t")]),e._v(" "),e.isFolder?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetCreate,checked:e.canCreate},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Create"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetEdit,checked:e.canEdit},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Update"))+"\n\t\t\t\t")]),e._v(" "),e.config.isResharingAllowed&&e.share.type!==e.SHARE_TYPES.SHARE_TYPE_LINK?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetReshare,checked:e.canReshare},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Share"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isPublicShare?e._e():t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDownload,checked:e.canDownload},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Download"))+"\n\t\t\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDelete,checked:e.canDelete},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Delete"))+"\n\t\t\t\t")])],1):e._e()],2)]):e._e(),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__footer"},[e.isNewShare?e._e():t("NcButton",{attrs:{"aria-label":e.t("files_sharing","Delete share"),disabled:!1,readonly:!1,type:"tertiary"},on:{click:function(t){return t.preventDefault(),e.removeShare.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:16}})]},proxy:!0}],null,!1,2746485232)},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Delete share"))+"\n\t\t")]),e._v(" "),t("div",{staticClass:"button-group"},[t("NcButton",{on:{click:function(t){return e.$emit("close-sharing-details")}}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Cancel"))+"\n\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary"},on:{click:e.saveShare}},[e._v("\n\t\t\t\t"+e._s(e.shareButtonText)+"\n\t\t\t")])],1)],1)])}),[],!1,null,"5cbfa7ba",null).exports;var Pt=i(25108);const Dt={name:"SharingTab",components:{NcAvatar:l(),CollectionList:r.G,SharingEntryInternal:W,SharingEntrySimple:B,SharingInherited:Pe,SharingInput:oe,SharingLinkList:Ge,SharingList:st,SharingDetailsTab:xt},mixins:[g],data:()=>({config:new p,deleteEvent:null,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,d.j)("core","projects_enabled",!1),showSharingDetailsView:!1,shareDetailsData:{}}),computed:{isSharedWithMe(){return Object.keys(this.sharedWithMe).length>0},canReshare(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),t="json",s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=c.default.get(e,{params:{format:t,path:s,reshares:!0}}),a=c.default.get(e,{params:{format:t,path:s,shared_with_me:!0}}),[n,r]=await Promise.all([i,a]);this.loading=!1,this.processSharedWithMe(r),this.processShares(n)}catch(a){var e,s,i;null!==(e=a.response.data)&&void 0!==e&&null!==(s=e.ocs)&&void 0!==s&&null!==(i=s.meta)&&void 0!==i&&i.message?this.error=a.response.data.ocs.meta.message:this.error=t("files_sharing","Unable to load the shares list"),this.loading=!1,Pt.error("Error loading the shares list",a)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[],this.showSharingDetailsView=!1,this.shareDetailsData={}},updateExpirationSubtitle(e){const s=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*s)})),moment().unix()>s&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(e){let{data:t}=e;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){const e=t.ocs.data.map((e=>new f(e))).sort(((e,t)=>t.createdTime-e.createdTime));this.linkShares=e.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK||e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)),this.shares=e.filter((e=>e.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&e.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)),Pt.debug("Processed",this.linkShares.length,"link share(s)"),Pt.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe(e){let{data:s}=e;if(s.ocs&&s.ocs.data&&s.ocs.data[0]){const e=new f(s),i=function(e){return e.type===u.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===u.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===u.D.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1})}(e),a=e.ownerDisplayName,n=e.owner;this.sharedWithMe={displayName:a,title:i,user:n},this.reshare=e,e.expireDate&&moment(e.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},removeShare(e){const t=this.shares.findIndex((t=>t.id===e.id));this.shares.splice(t,1)},awaitForShare(e,t){let s=this.$refs.shareList;e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(s=this.$refs.linkShareList),this.$nextTick((()=>{const i=s.$children.find((t=>t.share===e));i&&t(i)}))},toggleShareDetailsView(e){e&&(this.shareDetailsData=e),this.showSharingDetailsView=!this.showSharingDetailsView}}},Tt=Dt;var kt=i(3224),Rt={};Rt.styleTagTransform=O(),Rt.setAttributes=k(),Rt.insert=D().bind(null,"head"),Rt.domAPI=x(),Rt.insertStyleElement=I(),v()(kt.Z,Rt),kt.Z&&kt.Z.locals&&kt.Z.locals;const It=(0,H.Z)(Tt,(function(){var e=this,t=e._self._c;return t("div",{class:{"icon-loading":e.loading}},[e.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:e.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),e._v(" "),t("h2",[e._v(e._s(e.error))])]):e._e(),e._v(" "),e.showSharingDetailsView?t("div",[t("SharingDetailsTab",{attrs:{"file-info":e.shareDetailsData.fileInfo,share:e.shareDetailsData.share},on:{"close-sharing-details":e.toggleShareDetailsView,"add:share":e.addShare,"remove:share":e.removeShare}})],1):[t("div",{staticClass:"sharingTab__content"},[e.isSharedWithMe?t("SharingEntrySimple",e._b({staticClass:"sharing-entry__reshare",scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.sharedWithMe.user,"display-name":e.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",e.sharedWithMe,!1)):e._e(),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,reshare:e.reshare,shares:e.shares},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}}),e._v(" "),e.projectsEnabled&&e.fileInfo?t("CollectionList",{attrs:{id:"".concat(e.fileInfo.id),type:"file",name:e.fileInfo.name}}):e._e()],1),e._v(" "),e._l(e.sections,(function(s,i){return t("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(s(e.$refs["section-"+i],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)}))]],2)}),[],!1,null,"4bd1eb33",null).exports;var Nt=i(25108);var Ot=i(25108);var Lt=i(25108);var Yt=i(44582);window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.results=[],Nt.debug("OCA.Sharing.ShareSearch initialized")}get state(){return this._state}addNewResult(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(Nt.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],Ot.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return OC.debug&&Ot.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"==typeof e&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(Ot.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],Lt.debug("OCA.Sharing.ExternalShareActions initialized")}get state(){return this._state}registerAction(e){return"object"==typeof e&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"==typeof e.handlers&&Object.values(e.handlers).every((e=>"function"==typeof e))?this._state.actions.findIndex((t=>t.id===e.id))>-1?(Lt.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(Lt.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_sections"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._sections=[]}registerSection(e){this._sections.push(e)}getSections(){return this._sections}}}),a.default.prototype.t=n.Iu,a.default.prototype.n=n.uN;const Ht=a.default.extend(It);let Bt=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,n.Iu)("files_sharing","Sharing"),iconSvg:Yt,async mount(e,t,s){Bt&&Bt.$destroy(),Bt=new Ht({parent:s}),await Bt.update(t),Bt.$mount(e)},update(e){Bt.update(e)},destroy(){Bt.$destroy(),Bt=null}}))}))},57854:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-532437fc]{display:flex;justify-content:space-between;align-items:center;height:44px}.sharing-entry__summary[data-v-532437fc]{padding:8px;padding-left:10px;display:flex;flex-direction:column;justify-content:center;width:75%;min-width:75%}.sharing-entry__summary__desc[data-v-532437fc]{display:inline-block;flex-direction:column;justify-content:space-between;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-532437fc],.sharing-entry__summary__desc small[data-v-532437fc]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-532437fc]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,WAAA,CAEA,yCACC,WAAA,CACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,+CACC,oBAAA,CACA,qBAAA,CACA,6BAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 44px;\n\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-left: 10px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\twidth: 75%;\n\t\tmin-width: 75%;\n\n\t\t&__desc {\n\t\t\tdisplay: inline-block;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding-bottom: 0;\n\t\t\tline-height: 1.2em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\tp,\n\t\t\tsmall {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&-unique {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t}\n\n}\n"],sourceRoot:""}]);const o=r},33668:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=r},2256:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=r},1981:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-6b7b22e9]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-6b7b22e9]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-6b7b22e9]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-6b7b22e9]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-6b7b22e9]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-6b7b22e9] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-6b7b22e9]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-6b7b22e9]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-6b7b22e9]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-6b7b22e9],.sharing-entry .action-item~.sharing-entry__loading[data-v-6b7b22e9]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-6b7b22e9]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=r},94345:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".share-select[data-v-c003ab64]{position:relative;cursor:pointer}.share-select .trigger-text[data-v-c003ab64]{display:flex;flex-direction:row;align-items:center;font-size:12.5px;gap:2px;color:var(--color-primary-element)}.share-select .share-select-dropdown[data-v-c003ab64]{position:absolute;display:flex;flex-direction:column;top:100%;left:0;background-color:var(--color-main-background);border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.2);padding:4px 0;z-index:1}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]{padding:8px;font-size:12px;background:none;border:none;border-radius:0;font:inherit;cursor:pointer;color:inherit;outline:none;width:100%;white-space:nowrap;text-align:left}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]:hover{background-color:#f2f2f2}.share-select .share-select-dropdown .dropdown-item.selected[data-v-c003ab64]{background-color:#f0f0f0}.share-select .share-select-dropdown[data-v-c003ab64]{max-height:0;overflow:hidden;transition:max-height .3s ease}.share-select.active .share-select-dropdown[data-v-c003ab64]{max-height:200px}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue"],names:[],mappings:"AACA,+BACC,iBAAA,CACA,cAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,gBAAA,CACA,OAAA,CACA,kCAAA,CAGD,sDACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,MAAA,CACA,6CAAA,CACA,iBAAA,CACA,mCAAA,CACA,aAAA,CACA,SAAA,CAEA,qEACC,WAAA,CACA,cAAA,CACA,eAAA,CACA,WAAA,CACA,eAAA,CACA,YAAA,CACA,cAAA,CACA,aAAA,CACA,YAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CAEA,2EACC,wBAAA,CAGD,8EACC,wBAAA,CAMH,sDACC,YAAA,CACA,eAAA,CACA,8BAAA,CAGD,6DACC,gBAAA",sourcesContent:["\n.share-select {\n\tposition: relative;\n\tcursor: pointer;\n\n\t.trigger-text {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tfont-size: 12.5px;\n\t\tgap: 2px;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.share-select-dropdown {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttop: 100%;\n\t\tleft: 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 8px;\n\t\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\t\tpadding: 4px 0;\n\t\tz-index: 1;\n\n\t\t.dropdown-item {\n\t\t\tpadding: 8px;\n\t\t\tfont-size: 12px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\tfont: inherit;\n\t\t\tcursor: pointer;\n\t\t\tcolor: inherit;\n\t\t\toutline: none;\n\t\t\twidth: 100%;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: left;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #f2f2f2;\n\t\t\t}\n\n\t\t\t&.selected {\n\t\t\t\tbackground-color: #f0f0f0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Optional: Add a transition effect for smoother dropdown animation */\n\t.share-select-dropdown {\n\t\tmax-height: 0;\n\t\toverflow: hidden;\n\t\ttransition: max-height 0.3s ease;\n\t}\n\n\t&.active .share-select-dropdown {\n\t\tmax-height: 200px;\n\t\t/* Adjust the value to your desired height */\n\t}\n}\n"],sourceRoot:""}]);const o=r},82574:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-776f7b36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-776f7b36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-776f7b36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-776f7b36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-776f7b36]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]);const o=r},24764:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const o=r},58886:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharingTabDetailsView[data-v-5cbfa7ba]{display:flex;flex-direction:column;align-items:flex-start;width:96%;margin:0 auto}.sharingTabDetailsView__header[data-v-5cbfa7ba]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-5cbfa7ba]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-5cbfa7ba]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__quick-permissions[data-v-5cbfa7ba]{display:flex;justify-content:center;margin-bottom:.2em;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-5cbfa7ba]:nth-child(1){align-items:center;justify-content:center;color:var(--color-primary-element);padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label{display:flex;flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label span{display:flex}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label span:first-of-type{flex:10%}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label span:last-of-type{flex:90%}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label small{padding-left:10%;flex-basis:100% !important}.sharingTabDetailsView__advanced-control[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-5cbfa7ba]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-5cbfa7ba]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-5cbfa7ba],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-5cbfa7ba]{height:80px}.sharingTabDetailsView__advanced section span[data-v-5cbfa7ba] label{background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-5cbfa7ba]{padding-left:1.5em}.sharingTabDetailsView__footer[data-v-5cbfa7ba]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start}.sharingTabDetailsView__footer>button[data-v-5cbfa7ba]:first-child{color:#df0707;background-color:#f5f5f5}.sharingTabDetailsView__footer .button-group[data-v-5cbfa7ba]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-5cbfa7ba]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-5cbfa7ba]:first-child{margin-left:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue"],names:[],mappings:"AACA,wCACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,iBAAA,CAMH,2DACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,kCAAA,CACA,YAAA,CAGD,0EACC,YAAA,CACA,cAAA,CAEA,+EACC,YAAA,CAEA,6FACC,QAAA,CAGD,4FACC,QAAA,CAIF,gFACC,gBAAA,CACA,0BAAA,CASL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CAaA,qEACC,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAKH,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CAEA,mEACC,aAAA,CACA,wBAAA,CAGD,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,gBAAA,CAEA,iFACC,aAAA",sourcesContent:["\n.sharingTabDetailsView {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\twidth: 96%;\n\tmargin: 0 auto;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0.2em;\n\n\t\tspan {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\th1 {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tpadding-left: 0.3em;\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__quick-permissions {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-bottom: 0.2em;\n\t\twidth: 100%;\n\t\tmargin: 0 auto;\n\t\tborder-radius: 0;\n\n\t\tdiv {\n\t\t\twidth: 100%;\n\n\t\t\tspan {\n\t\t\t\twidth: 100%;\n\n\t\t\t\tspan:nth-child(1) {\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tpadding: 0.1em;\n\t\t\t\t}\n\n\t\t\t\t::v-deep label {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-wrap: wrap;\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\n\t\t\t\t\t\t&:first-of-type {\n\t\t\t\t\t\t\tflex: 10%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:last-of-type {\n\t\t\t\t\t\t\tflex: 90%\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsmall {\n\t\t\t\t\t\tpadding-left: 10%;\n\t\t\t\t\t\tflex-basis: 100% !important;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__advanced-control {\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\n\t}\n\n\t&__advanced {\n\t\twidth: 100%;\n\t\tmargin-bottom: 0.5em;\n\t\ttext-align: left;\n\t\tpadding-left: 0;\n\n\t\tsection {\n\n\t\t\ttextarea,\n\t\t\tdiv.mx-datepicker {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttextarea {\n\t\t\t\theight: 80px;\n\t\t\t}\n\n\t\t\t/*\n The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__footer {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\n\t\t>button:first-child {\n\t\t\tcolor: rgb(223, 7, 7);\n\t\t\tbackground-color: #f5f5f5;\n\t\t}\n\n\t\t.button-group {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 16px;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},84772:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const o=r},3224:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".emptyContentWithSections[data-v-4bd1eb33]{margin:1rem auto}.sharingTab__content[data-v-4bd1eb33]{padding:0 6px}.sharingTab__additionalContent[data-v-4bd1eb33]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAGD,gDACC,aAAA",sourcesContent:["\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]);const o=r}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={id:e,loaded:!1,exports:{}};return a[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=a,e=[],r.O=(t,s,i,a)=>{if(!s){var n=1/0;for(c=0;c<e.length;c++){s=e[c][0],i=e[c][1],a=e[c][2];for(var o=!0,h=0;h<s.length;h++)(!1&a||n>=a)&&Object.keys(r.O).every((e=>r.O[e](s[h])))?s.splice(h--,1):(o=!1,a<n&&(n=a));if(o){e.splice(c--,1);var l=i();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[s,i,a]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v=00434e4baa0d8e7b79f1",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},i="nextcloud:",r.l=(e,t,a,n)=>{if(s[e])s[e].push(t);else{var o,h;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==i+a){o=d;break}}o||(h=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",i+a),o.src=e),s[e]=[t];var p=(t,i)=>{o.onerror=o.onload=null,clearTimeout(u);var a=s[e];if(delete s[e],o.parentNode&&o.parentNode.removeChild(o),a&&a.forEach((e=>e(i))),t)return t(i)},u=setTimeout(p.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=p.bind(null,o.onerror),o.onload=p.bind(null,o.onload),h&&document.head.appendChild(o)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=7870,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={7870:0};r.f.j=(t,s)=>{var i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)s.push(i[2]);else{var a=new Promise(((s,a)=>i=e[t]=[s,a]));s.push(i[2]=a);var n=r.p+r.u(t),o=new Error;r.l(n,(s=>{if(r.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var a=s&&("load"===s.type?"missing":s.type),n=s&&s.target&&s.target.src;o.message="Loading chunk "+t+" failed.\n("+a+": "+n+")",o.name="ChunkLoadError",o.type=a,o.request=n,i[1](o)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var i,a,n=s[0],o=s[1],h=s[2],l=0;if(n.some((t=>0!==e[t]))){for(i in o)r.o(o,i)&&(r.m[i]=o[i]);if(h)var c=h(r)}for(t&&t(s);l<n.length;l++)a=n[l],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(c)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var o=r.O(void 0,[7874],(()=>r(92792)));o=r.O(o)})();
-//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=926236bd3971a98f984d \ No newline at end of file
+(()=>{"use strict";var e,s,i,a={73600:(e,s,i)=>{var a=i(20144),n=i(31352),r=i(1794),o=i(79753),h=i(75925),l=i.n(h),c=i(4820),d=i(79954);class p{constructor(){this._shareConfig=(0,d.j)("files_sharing","shareConfig",{})}get isPublicUploadEnabled(){return this._shareConfig.allowPublicUploads}get isShareWithLinkAllowed(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}get federatedShareDocLink(){return OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultRemoteExpireDateEnforced(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnabled(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===OC.appConfig.core.remoteShareAllowed}get isMailShareAllowed(){var e,t,s;const i=OC.getCapabilities();return void 0!==(null==i||null===(e=i.files_sharing)||void 0===e?void 0:e.sharebymail)&&!0===(null==i||null===(t=i.files_sharing)||void 0===t||null===(s=t.public)||void 0===s?void 0:s.enabled)}get defaultExpireDate(){return OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}get shouldAlwaysShowUnique(){var e,t;return!0===(null===(e=OC.getCapabilities().files_sharing)||void 0===e||null===(t=e.sharee)||void 0===t?void 0:t.always_show_unique)}get allowGroupSharing(){return!0===OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){const e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}var u=i(41922),A=i(25108);class f{constructor(e){var t,s,i,a;if(s=this,a=void 0,(i=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="_share"))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(t){A.warn('Could not parse share attributes returned by server: "'+e.attributes+'"')}e.attributes=null!==(t=e.attributes)&&void 0!==t?t:[],this._share=e}get state(){return this._share}get id(){return this._share.id}get type(){return this._share.share_type}get permissions(){return this._share.permissions}get attributes(){return this._share.attributes}set permissions(e){this._share.permissions=e}get owner(){return this._share.uid_owner}get ownerDisplayName(){return this._share.displayname_owner}get shareWith(){return this._share.share_with}get shareWithDisplayName(){return this._share.share_with_displayname||this._share.share_with}get shareWithDisplayNameUnique(){return this._share.share_with_displayname_unique||this._share.share_with}get shareWithLink(){return this._share.share_with_link}get shareWithAvatar(){return this._share.share_with_avatar}get uidFileOwner(){return this._share.uid_file_owner}get displaynameFileOwner(){return this._share.displayname_file_owner||this._share.uid_file_owner}get createdTime(){return this._share.stime}get expireDate(){return this._share.expiration}set expireDate(e){this._share.expiration=e}get token(){return this._share.token}get note(){return this._share.note}set note(e){this._share.note=e}get label(){return this._share.label}set label(e){this._share.label=e}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download}set hideDownload(e){this._share.hide_download=!0===e}get password(){return this._share.password}set password(e){this._share.password=e}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(e){this._share.password_expiration_time=e}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(e){this._share.send_password_by_talk=e}get path(){return this._share.path}get itemType(){return this._share.item_type}get mimetype(){return this._share.mimetype}get fileSource(){return this._share.file_source}get fileTarget(){return this._share.file_target}get fileParent(){return this._share.file_parent}get hasReadPermission(){return!!(this.permissions&OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&OC.PERMISSION_SHARE)}get hasDownloadPermission(){for(const e in this._share.attributes){const t=this._share.attributes[e];if("permissions"===t.scope&&"download"===t.key)return t.enabled}return!0}set hasDownloadPermission(e){this.setAttribute("permissions","download",!!e)}setAttribute(e,t,s){const i={scope:e,key:t,enabled:s};for(const e in this._share.attributes){const t=this._share.attributes[e];if(t.scope===i.scope&&t.key===i.key)return void this._share.attributes.splice(e,1,i)}this._share.attributes.push(i)}get canEdit(){return!0===this._share.can_edit}get canDelete(){return!0===this._share.can_delete}get viaFileid(){return this._share.via_fileid}get viaPath(){return this._share.via_path}get parent(){return this._share.parent}get storageId(){return this._share.storage_id}get storage(){return this._share.storage}get itemSource(){return this._share.item_source}get status(){return this._share.status}}const g={data:()=>({SHARE_TYPES:u.D})};var _=i(64024),m=i(76212),w=i.n(m),E=i(12945),C=i.n(E);const y={name:"SharingEntrySimple",components:{NcActions:C()},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}};var S=i(93379),v=i.n(S),b=i(7795),x=i.n(b),P=i(90569),D=i.n(P),T=i(3565),k=i.n(T),R=i(19216),I=i.n(R),N=i(44589),O=i.n(N),L=i(82574),Y={};Y.styleTagTransform=O(),Y.setAttributes=k(),Y.insert=D().bind(null,"head"),Y.domAPI=x(),Y.insertStyleElement=I(),v()(L.Z,Y),L.Z&&L.Z.locals&&L.Z.locals;var H=i(51900);const B=(0,H.Z)(y,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[e._t("avatar"),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[e._v(e._s(e.title))]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":e.ariaExpandedValue}},[e._t("default")],2):e._e()],2)}),[],!1,null,"776f7b36",null).exports;var U=i(25108);const F={name:"SharingEntryInternal",components:{NcActionLink:w(),SharingEntrySimple:B},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/f/")+this.fileInfo.id},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link to clipboard")},internalLinkSubtitle(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{async copyLink(){try{await navigator.clipboard.writeText(this.internalLink),(0,_.s$)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,U.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var M=i(2256),q={};q.styleTagTransform=O(),q.setAttributes=k(),q.insert=D().bind(null,"head"),q.domAPI=x(),q.insertStyleElement=I(),v()(M.Z,q),M.Z&&M.Z.locals&&M.Z.locals;const W=(0,H.Z)(F,(function(){var e=this,t=e._self._c;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:e.t("files_sharing","Internal link"),subtitle:e.internalLinkSubtitle},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[e._v(" "),t("NcActionLink",{attrs:{href:e.internalLink,"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,target:"_blank",icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1)],1)}),[],!1,null,"71a426be",null).exports;var j=i(77958),Z=i(69183),$=i(20296),V=i.n($),G=i(36456),z=i.n(G),Q=i(25108);const K=new p;async function J(){if(K.passwordPolicy.api&&K.passwordPolicy.api.generate)try{const e=await c.default.get(K.passwordPolicy.api.generate);if(e.data.ocs.data.password)return(0,_.s$)(t("files_sharing","Password created successfully")),e.data.ocs.data.password}catch(e){Q.info("Error generating password from password_policy",e),(0,_.x2)(t("files_sharing","Error generating password from password policy"))}const e=new Uint8Array(10);self.crypto.getRandomValues(e);let s="";for(let t=0;t<e.length;t++)s+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(.20392156862745098*e[t]);return s}i(35449);var X=i(25108);const ee=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),te={methods:{async createShare(e){let{path:s,permissions:i,shareType:a,shareWith:n,publicUpload:r,password:o,sendPasswordByTalk:h,expireDate:l,label:d,note:p,attributes:u}=e;try{var A;const e=await c.default.post(ee,{path:s,permissions:i,shareType:a,shareWith:n,publicUpload:r,password:o,sendPasswordByTalk:h,expireDate:l,label:d,note:p,attributes:u});if(null==e||null===(A=e.data)||void 0===A||!A.ocs)throw e;const t=new f(e.data.ocs.data);return(0,Z.j8)("files_sharing:share:created",{share:t}),t}catch(e){var g,_,m,w;X.error("Error while creating share",e);const s=null==e||null===(g=e.response)||void 0===g||null===(_=g.data)||void 0===_||null===(m=_.ocs)||void 0===m||null===(w=m.meta)||void 0===w?void 0:w.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error creating the share"),{type:"error"}),e}},async deleteShare(e){try{var s;const t=await c.default.delete(ee+"/".concat(e));if(null==t||null===(s=t.data)||void 0===s||!s.ocs)throw t;return(0,Z.j8)("files_sharing:share:deleted",{id:e}),!0}catch(e){var i,a,n,r;X.error("Error while deleting share",e);const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(n=a.ocs)||void 0===n||null===(r=n.meta)||void 0===r?void 0:r.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error deleting the share"),{type:"error"}),e}},async updateShare(e,s){try{var i;const t=await c.default.put(ee+"/".concat(e),s);if((0,Z.j8)("files_sharing:share:updated",{id:e}),null!=t&&null!==(i=t.data)&&void 0!==i&&i.ocs)return t.data.ocs.data;throw t}catch(e){if(X.error("Error while updating share",e),400!==e.response.status){var a,n,r,o;const s=null==e||null===(a=e.response)||void 0===a||null===(n=a.data)||void 0===n||null===(r=n.ocs)||void 0===r||null===(o=r.meta)||void 0===o?void 0:o.message;OC.Notification.showTemporary(s?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error updating the share"),{type:"error"})}const s=e.response.data.ocs.meta.message;throw new Error(s)}}}},se={methods:{async openSharingDetails(e){let t={};e.handler?(this.suggestions&&(e.suggestions=this.suggestions,e.fileInfo=this.fileInfo,e.query=this.query),t=await e.handler(e),t=new f(t)):t=this.mapShareRequestToShareObject(e);const s={fileInfo:this.fileInfo,share:t};this.$emit("open-sharing-details",s)},openShareDetailsForCustomSettings(e){e.setCustomPermissions=!0,this.openSharingDetails(e)},mapShareRequestToShareObject(e){if(e.id)return e;const t={attributes:[{enabled:!0,key:"download",scope:"permissions"}],share_type:e.shareType,share_with:e.shareWith,is_no_user:e.isNoUser,user:e.shareWith,share_with_displayname:e.displayName,subtitle:e.subtitle,permissions:e.permissions,expiration:""};return new f(t)}}};var ie=i(25108);const ae={name:"SharingInput",components:{NcSelect:z()},mixins:[g,te,se],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:f,default:null},canReshare:{type:Boolean,required:!0}},data:()=>({config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}),computed:{externalResults(){return this.ShareSearch.results},inputPlaceholder(){const e=this.config.isRemoteShareAllowed;return this.canReshare?e?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted(){this.getRecommendations()},methods:{handleOpen(){(0,Z.j8)("viewer:trapElements:changed",this.$refs.select.$el)},async asyncFind(e){this.query=e.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(e))},async getSuggestions(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(s=!0);const i=[this.SHARE_TYPES.SHARE_TYPE_USER,this.SHARE_TYPES.SHARE_TYPE_GROUP,this.SHARE_TYPES.SHARE_TYPE_REMOTE,this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,this.SHARE_TYPES.SHARE_TYPE_CIRCLE,this.SHARE_TYPES.SHARE_TYPE_ROOM,this.SHARE_TYPES.SHARE_TYPE_GUEST,this.SHARE_TYPES.SHARE_TYPE_DECK,this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH];!0===OC.getCapabilities().files_sharing.public.enabled&&i.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL);let a=null;try{a=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===this.fileInfo.type?"folder":"file",search:e,lookup:s,perPage:this.config.maxAutocompleteResults,shareType:i}})}catch(e){return void ie.error("Error fetching suggestions",e)}const n=a.data.ocs.data,r=a.data.ocs.data.exact;n.exact=[];const h=Object.values(r).reduce(((e,t)=>e.concat(t)),[]),l=Object.values(n).reduce(((e,t)=>e.concat(t)),[]),d=this.filterOutExistingShares(h).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),p=this.filterOutExistingShares(l).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),u=[];n.lookupEnabled&&!s&&u.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const A=this.externalResults.filter((e=>!e.condition||e.condition(this))),f=d.concat(p).concat(A).concat(u),g=f.reduce(((e,t)=>t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e),{});this.suggestions=f.map((e=>g[e.displayName]>1&&!e.desc?{...e,desc:e.shareWithDisplayNameUnique}:e)),this.loading=!1,ie.info("suggestions",this.suggestions)},debounceGetSuggestions:V()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let e=null;try{e=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(e){return void ie.error("Error fetching recommendations",e)}const t=this.externalResults.filter((e=>!e.condition||e.condition(this))),s=Object.values(e.data.ocs.data.exact).reduce(((e,t)=>e.concat(t)),[]);this.recommendations=this.filterOutExistingShares(s).map((e=>this.formatForMultiselect(e))).concat(t),this.loading=!1,ie.info("recommendations",this.recommendations)},filterOutExistingShares(e){return e.reduce(((e,t)=>{if("object"!=typeof t)return e;try{if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,j.ts)().uid)return e;if(this.reshare&&t.value.shareWith===this.reshare.owner)return e}if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==this.linkShares.map((e=>e.shareWith)).indexOf(t.value.shareWith.trim()))return e}else{const s=this.shares.reduce(((e,t)=>(e[t.shareWith]=t.type,e)),{}),i=t.value.shareWith.trim();if(i in s&&s[i]===t.value.shareType)return e}e.push(t)}catch{return e}return e}),[])},shareTypeToIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-circle",iconTitle:t("files_sharing","Circle")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let s;var i;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)s=null!==(i=e.shareWithDisplayNameUnique)&&void 0!==i?i:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)s=e.value.shareWith;else{var a;s=null!==(a=e.shareWithDescription)&&void 0!==a?a:""}else s=t("files_sharing","on {server}",{server:e.value.server});return{shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subtitle:s,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}},async addShare(e){if(this.value=null,e.lookup)return await this.getSuggestions(this.query,!0),this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),!0;if(e.handler){const t=await e.handler(this);return this.$emit("add:share",new f(t)),!0}this.loading=!0,ie.debug("Adding a new share from the input for",e);try{let t=null;this.config.enforcePasswordForPublicLink&&e.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=await J());const s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=await this.createShare({path:s,shareType:e.shareType,shareWith:e.shareWith,password:t,permissions:this.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(this.fileInfo.shareAttributes)});t?(i.newPassword=t,(await new Promise((e=>{this.$emit("add:share",i,e)}))).open=!0):this.$emit("add:share",i),await this.getRecommendations()}catch(t){this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),this.query=e.shareWith,ie.error("Error while adding new share",t)}finally{this.loading=!1}}}};var ne=i(24764),re={};re.styleTagTransform=O(),re.setAttributes=k(),re.insert=D().bind(null,"head"),re.domAPI=x(),re.insertStyleElement=I(),v()(ne.Z,re),ne.Z&&ne.Z.locals&&ne.Z.locals;const oe=(0,H.Z)(ae,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[e._v(e._s(e.t("files_sharing","Search for share recipients")))]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":"sharing-search-input",disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:e.options},on:{open:e.handleOpen,search:e.asyncFind,"option:selected":e.openSharingDetails},scopedSlots:e._u([{key:"no-options",fn:function(t){let{search:s}=t;return[e._v("\n\t\t\t"+e._s(s?e.noResultText:e.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null).exports;var he=i(45400),le=i.n(he),ce=i(65358),de=i(1162),pe=i.n(de),ue=i(25746);const Ae={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},fe={READ_ONLY:Ae.READ,UPLOAD_AND_UPDATE:Ae.READ|Ae.UPDATE|Ae.CREATE|Ae.DELETE,FILE_DROP:Ae.CREATE,ALL:Ae.UPDATE|Ae.CREATE|Ae.READ|Ae.DELETE|Ae.SHARE,ALL_FILE:Ae.UPDATE|Ae.READ|Ae.SHARE};function ge(e,t){return e!==Ae.NONE&&(e&t)===t}var _e=i(25108);const me={mixins:[te,g],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:f,default:null},isUnique:{type:Boolean,default:!0}},data(){var e;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new ue.Z({concurrency:1}),reactiveState:null===(e=this.share)||void 0===e?void 0:e.state}},computed:{hasNote:{get(){return""!==this.share.note},set(e){this.share.note=e?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const e=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],t=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:t,weekdaysMin:e,weekdaysShort:e},monthFormat:"MMM"}},isFolder(){return"dir"===this.fileInfo.type},isPublicShare(){var e;const t=null!==(e=this.share.shareType)&&void 0!==e?e:this.share.type;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(t)},isShareOwner(){return this.share&&this.share.owner===(0,j.ts)().uid},hasCustomPermissions(){return![fe.ALL,fe.READ_ONLY,fe.FILE_DROP].includes(this.share.permissions)}},methods:{checkShare:e=>(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid()),parseDateString(e){var t;if(e)return new Date(null===(t=e.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===t?void 0:t.pop())},formatDateToString:e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0],onExpirationChange(e){this.share.expireDate=this.formatDateToString(new Date(e))},onExpirationDisable(){this.share.expireDate=""},onNoteChange(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},async onDelete(){try{this.loading=!0,this.open=!1,await this.deleteShare(this.share.id),_e.debug("Share deleted",this.share.id);const e="file"===this.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:this.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:this.share.path});(0,_.s$)(e),this.$emit("remove:share",this.share)}catch(e){this.open=!0}finally{this.loading=!1}},queueUpdate(){for(var e=arguments.length,s=new Array(e),i=0;i<e;i++)s[i]=arguments[i];if(0!==s.length){if(this.share.id){const e={};return s.forEach((t=>{"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),void this.updateQueue.add((async()=>{this.saving=!0,this.errors={};try{const i=await this.updateShare(this.share.id,e);s.indexOf("password")>=0&&(this.$delete(this.share,"newPassword"),this.share.passwordExpirationTime=i.password_expiration_time),this.$delete(this.errors,s[0]),(0,_.s$)(t("files_sharing","Share {propertyName} saved",{propertyName:s[0]}))}catch({message:e}){e&&""!==e&&(this.onSyncError(s[0],e),(0,_.x2)(t("files_sharing",e)))}finally{this.saving=!1}}))}_e.debug("Updated local share",this.share)}},onSyncError(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,e,t);let s=this.$refs[e];if(s){s.$el&&(s=s.$el);const e=s.querySelector(".focusable");e&&e.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:V()((function(e){this.queueUpdate(e)}),500)}},we={name:"SharingEntryInherited",components:{NcActionButton:le(),NcActionLink:w(),NcActionText:pe(),NcAvatar:l(),SharingEntrySimple:B},mixins:[me],props:{share:{type:f,required:!0}},computed:{viaFileTargetUrl(){return(0,o.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,ce.EZ)(this.share.viaPath)}}};var Ee=i(33668),Ce={};Ce.styleTagTransform=O(),Ce.setAttributes=k(),Ce.insert=D().bind(null,"head"),Ce.domAPI=x(),Ce.insertStyleElement=I(),v()(Ee.Z,Ce),Ee.Z&&Ee.Z.locals&&Ee.Z.locals;const ye=(0,H.Z)(we,(function(){var e=this,t=e._self._c;return t("SharingEntrySimple",{key:e.share.id,staticClass:"sharing-entry__inherited",attrs:{title:e.share.shareWithDisplayName},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.share.shareWith,"display-name":e.share.shareWithDisplayName}})]},proxy:!0}])},[e._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Added by {initiator}",{initiator:e.share.ownerDisplayName}))+"\n\t")]),e._v(" "),e.share.viaPath&&e.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:e.viaFileTargetUrl}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Via “{folder}”",{folder:e.viaFolderName}))+"\n\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t")]):e._e()],1)}),[],!1,null,"038f97f0",null).exports;var Se=i(25108);const ve={name:"SharingInherited",components:{NcActionButton:le(),SharingEntryInherited:ye,SharingEntrySimple:B},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}),computed:{showInheritedSharesIcon(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:()=>t("files_sharing","Others with access"),subTitle(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo(){this.resetState()}},methods:{toggleInheritedShares(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},async fetchInheritedShares(){this.loading=!0;try{const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),t=await c.default.get(e);this.shares=t.data.ocs.data.map((e=>new f(e))).sort(((e,t)=>t.createdTime-e.createdTime)),Se.info(this.shares),this.loaded=!0}catch(e){OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"})}finally{this.loading=!1}},resetState(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}};var be=i(84772),xe={};xe.styleTagTransform=O(),xe.setAttributes=k(),xe.insert=D().bind(null,"head"),xe.domAPI=x(),xe.insertStyleElement=I(),v()(be.Z,xe),be.Z&&be.Z.locals&&be.Z.locals;const Pe=(0,H.Z)(ve,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:e.mainTitle,subtitle:e.subTitle,"aria-expanded":e.showInheritedShares},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[e._v(" "),t("NcActionButton",{attrs:{icon:e.showInheritedSharesIcon,"aria-label":e.toggleTooltip,title:e.toggleTooltip},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.toggleInheritedShares.apply(null,arguments)}}})],1),e._v(" "),e._l(e.shares,(function(s){return t("SharingEntryInherited",{key:s.id,attrs:{"file-info":e.fileInfo,share:s},on:{"remove:share":e.removeShare}})}))],2)}),[],!1,null,"05b67dc8",null).exports;var De=i(79570),Te=i.n(De),ke=i(875),Re=i.n(ke),Ie=i(55976),Ne=i(3641),Oe=i(15303);const Le={components:{DropdownIcon:Ne.Z},mixins:[me,se,g],props:{share:{type:Object,required:!0},toggle:{type:Boolean,default:!1}},data(){return{selectedOption:"",showDropdown:this.toggle,focusTrap:null}},computed:{canViewText:()=>t("files_sharing","View only"),canEditText:()=>t("files_sharing","Can edit"),fileDropText:()=>t("files_sharing","File drop"),customPermissionsText:()=>t("files_sharing","Custom permissions"),preSelectedOption(){return(this.share.permissions&~Ae.SHARE)===fe.READ_ONLY?this.canViewText:this.share.permissions===fe.ALL||this.share.permissions===fe.ALL_FILE?this.canEditText:(this.share.permissions&~Ae.SHARE)===fe.FILE_DROP?this.fileDropText:this.customPermissionsText},options(){const e=[this.canViewText,this.canEditText];return this.supportsFileDrop&&e.push(this.fileDropText),e.push(this.customPermissionsText),e},supportsFileDrop(){if(this.isFolder&&this.config.isPublicUploadEnabled){var e;const t=null!==(e=this.share.type)&&void 0!==e?e:this.share.shareType;return[this.SHARE_TYPES.SHARE_TYPE_LINK,this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(t)}return!1},dropDownPermissionValue(){switch(this.selectedOption){case this.canEditText:return this.isFolder?fe.ALL:fe.ALL_FILE;case this.fileDropText:return fe.FILE_DROP;case this.customPermissionsText:return"custom";case this.canViewText:default:return fe.READ_ONLY}},dropdownId:()=>"dropdown-".concat(Math.random().toString(36).substr(2,9))},watch:{toggle(e){this.showDropdown=e}},mounted(){this.initializeComponent(),window.addEventListener("click",this.handleClickOutside)},beforeDestroy(){window.removeEventListener("click",this.handleClickOutside)},methods:{toggleDropdown(){this.showDropdown=!this.showDropdown,this.showDropdown?this.$nextTick((()=>{this.useFocusTrap()})):this.clearFocusTrap()},closeDropdown(){this.clearFocusTrap(),this.showDropdown=!1},selectOption(e){this.selectedOption=e,e===this.customPermissionsText?this.$emit("open-sharing-details"):(this.share.permissions=this.dropDownPermissionValue,this.queueUpdate("permissions")),this.showDropdown=!1},initializeComponent(){this.selectedOption=this.preSelectedOption},handleClickOutside(e){const t=this.$refs.quickShareDropdownContainer;t&&!t.contains(e.target)&&(this.showDropdown=!1)},useFocusTrap(){Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]});const e=this.$refs.quickShareDropdown;this.focusTrap=(0,Oe.createFocusTrap)(e,{allowOutsideClick:!0,trapStack:window._nc_focus_trap}),this.focusTrap.activate()},clearFocusTrap(){var e;null===(e=this.focusTrap)||void 0===e||e.deactivate(),this.focusTrap=null},shiftFocusForward(){let e=document.activeElement.nextElementSibling;e||(e=this.$refs.quickShareDropdown.firstElementChild),e.focus()},shiftFocusBackward(){let e=document.activeElement.previousElementSibling;e||(e=this.$refs.quickShareDropdown.lastElementChild),e.focus()},handleArrowUp(){this.shiftFocusBackward()},handleArrowDown(){this.shiftFocusForward()}}},Ye=Le;var He=i(94345),Be={};Be.styleTagTransform=O(),Be.setAttributes=k(),Be.insert=D().bind(null,"head"),Be.domAPI=x(),Be.insertStyleElement=I(),v()(He.Z,Be),He.Z&&He.Z.locals&&He.Z.locals;const Ue=(0,H.Z)(Ye,(function(){var e=this,t=e._self._c;return t("div",{ref:"quickShareDropdownContainer",class:{active:e.showDropdown,"share-select":!0}},[t("span",{staticClass:"trigger-text",attrs:{id:e.dropdownId,"aria-expanded":e.showDropdown,"aria-haspopup":!0,"aria-label":"Quick share options dropdown"},on:{click:e.toggleDropdown}},[e._v("\n\t\t"+e._s(e.selectedOption)+"\n\t\t"),t("DropdownIcon",{attrs:{size:15}})],1),e._v(" "),e.showDropdown?t("div",{ref:"quickShareDropdown",staticClass:"share-select-dropdown",attrs:{"aria-labelledby":e.dropdownId,tabindex:"0"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:e.handleArrowDown.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:e.handleArrowUp.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.closeDropdown.apply(null,arguments)}]}},e._l(e.options,(function(s){return t("button",{key:s,class:{"dropdown-item":!0,selected:s===e.selectedOption},attrs:{"aria-selected":s===e.selectedOption},on:{click:function(t){return e.selectOption(s)}}},[e._v("\n\t\t\t"+e._s(s)+"\n\t\t")])})),0):e._e()])}),[],!1,null,"c003ab64",null).exports,Fe={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:f,default:null}},computed:{data(){return this.action.data(this)}}},Me=(0,H.Z)(Fe,(function(){var e=this;return(0,e._self._c)(e.data.is,e._g(e._b({tag:"Component"},"Component",e.data,!1),e.action.handlers),[e._v("\n\t"+e._s(e.data.text)+"\n")])}),[],!1,null,null,null).exports;var qe=i(25108);const We={name:"SharingEntryLink",components:{ExternalShareAction:Me,NcActions:C(),NcActionButton:le(),NcActionInput:Te(),NcActionLink:w(),NcActionText:pe(),NcActionSeparator:Re(),NcAvatar:l(),Tune:Ie.Z,QuickShareSelect:Ue},mixins:[me,se],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({showDropdown:!1,copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}),computed:{title(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Share link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set(e){const t=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",qe.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){a.default.set(this.share,"password",e?await J():""),a.default.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword(){return this.config.enableLinkPasswordByDefault&&this.share&&!this.share.id},pendingEnforcedPassword(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/s/")+this.share.token},actionsTooltip(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing",'Copy public link of "{title}" to clipboard',{title:this.title})},externalLegacyLinkActions(){return this.ExternalLegacyLinkActions.actions},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>e.shareType.includes(u.D.SHARE_TYPE_LINK)||e.shareType.includes(u.D.SHARE_TYPE_EMAIL)))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.enabled))}},methods:{async onNewLinkShare(){if(this.loading)return;const e={share_type:u.D.SHARE_TYPE_LINK};if(this.config.isDefaultExpireDateEnforced&&(e.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced){if(this.pending=!0,this.share&&!this.share.id){if(this.checkShare(this.share)){try{await this.pushNewLinkShare(this.share,!0)}catch(e){return this.pending=!1,qe.error(e),!1}return!0}return this.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}(this.config.enableLinkPasswordByDefault||this.config.enforcePasswordForPublicLink)&&(e.password=await J());const s=new f(e),i=await new Promise((e=>{this.$emit("add:share",s,e)}));this.open=!1,this.pending=!1,i.open=!0}else{const t=new f(e);await this.pushNewLinkShare(t)}},async pushNewLinkShare(e,s){try{if(this.loading)return!0;this.loading=!0,this.errors={};const i={path:(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),shareType:u.D.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(this.fileInfo.shareAttributes)};qe.debug("Creating link share with options",i);const a=await this.createShare(i);let n;this.open=!1,qe.debug("Link share created",a),n=s?await new Promise((e=>{this.$emit("update:share",a,e)})):await new Promise((e=>{this.$emit("add:share",a,e)})),this.config.enforcePasswordForPublicLink||n.copyLink(),(0,_.s$)(t("files_sharing","Link share created"))}catch(e){var i,a,n,r;const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(n=a.ocs)||void 0===n||null===(r=n.meta)||void 0===r?void 0:r.message;if(!s)return(0,_.x2)(t("files_sharing","Error while creating the share")),void qe.error(e);throw s.match(/password/i)?this.onSyncError("password",s):s.match(/date/i)?this.onSyncError("expireDate",s):this.onSyncError("pending",s),e}finally{this.loading=!1}},async copyLink(){try{await navigator.clipboard.writeText(this.shareLink),(0,_.s$)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,qe.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(e){this.$set(this.share,"newPassword",e)},onPasswordDisable(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel(){this.$emit("remove:share",this.share)},toggleQuickShareSelect(){this.showDropdown=!this.showDropdown}}},je=We;var Ze=i(1981),$e={};$e.styleTagTransform=O(),$e.setAttributes=k(),$e.insert=D().bind(null,"head"),$e.domAPI=x(),$e.insertStyleElement=I(),v()(Ze.Z,$e),Ze.Z&&Ze.Z.locals&&Ze.Z.locals;const Ve={name:"SharingLinkList",components:{SharingEntryLink:(0,H.Z)(je,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":e.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":e.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),e._v(" "),t("div",{staticClass:"sharing-entry__desc",on:{click:function(t){return t.preventDefault(),e.toggleQuickShareSelect.apply(null,arguments)}}},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t"+e._s(e.title)+"\n\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e(),e._v(" "),e.share&&void 0!==e.share.permissions?t("QuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo,toggle:e.showDropdown},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}}):e._e()],1),e._v(" "),e.share&&!e.isEmailShareType&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionLink",{attrs:{href:e.shareLink,target:"_blank",title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip,icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1):e._e(),e._v(" "),!e.pending&&(e.pendingPassword||e.pendingEnforcedPassword||e.pendingExpirationDate)?t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onNewLinkShare}},[e.errors.pending?t("NcActionText",{class:{error:e.errors.pending},attrs:{icon:"icon-error"}},[e._v("\n\t\t\t"+e._s(e.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),e._v(" "),e.pendingEnforcedPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):e.pendingPassword?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingEnforcedPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:e.onNewLinkShare}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1):e.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onMenuClose}},[e.share?[e.share.canEdit&&e.canReshare?[t("NcActionButton",{attrs:{disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.openSharingDetails.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Customize link"))+"\n\t\t\t\t")])]:e._e(),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(s){return t("ExternalShareAction",{key:s.id,attrs:{id:s.id,action:s,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(s,i){let{icon:a,url:n,name:r}=s;return t("NcActionLink",{key:i,attrs:{href:n(e.shareLink),icon:a,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(r)+"\n\t\t\t")])})),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t\t")]):e._e()]:e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{title:e.t("files_sharing","Create a new share link"),"aria-label":e.t("files_sharing","Create a new share link"),icon:e.loading?"icon-loading-small":"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}}):e._e()],2)],1)}),[],!1,null,"6b7b22e9",null).exports},mixins:[g,se],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:OC.getCapabilities().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK)).length>0},hasShares(){return this.shares.length>0}},methods:{addShare(e,t){this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare(e,t){this.$nextTick((()=>{const s=this.$children.find((t=>t.share===e));s&&t(s)}))},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},Ge=(0,H.Z)(Ve,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!e.hasLinkShares&&e.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo},on:{"add:share":e.addShare}}):e._e(),e._v(" "),e.hasShares?e._l(e.shares,(function(s,i){return t("SharingEntryLink",{key:s.id,attrs:{index:e.shares.length>1?i+1:null,"can-reshare":e.canReshare,share:e.shares[i],"file-info":e.fileInfo},on:{"update:share":[function(t){return e.$set(e.shares,i,t)},function(t){return e.awaitForShare(...arguments)}],"add:share":function(t){return e.addShare(...arguments)},"remove:share":e.removeShare,"open-sharing-details":function(t){return e.openSharingDetails(s)}}})})):e._e()],2):e._e()}),[],!1,null,null,null).exports;var ze=i(10861),Qe=i.n(ze),Ke=i(89115);const Je={name:"SharingEntry",components:{NcButton:Qe(),NcAvatar:l(),DotsHorizontalIcon:Ke.default,NcSelect:z(),QuickShareSelect:Ue},mixins:[me,se],data:()=>({showDropdown:!1}),computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},hasStatus(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)}},methods:{onMenuClose(){this.onNoteSubmit()},toggleQuickShareSelect(){this.showDropdown=!this.showDropdown}}};var Xe=i(57854),et={};et.styleTagTransform=O(),et.setAttributes=k(),et.insert=D().bind(null,"head"),et.domAPI=x(),et.insertStyleElement=I(),v()(Xe.Z,et),Xe.Z&&Xe.Z.locals&&Xe.Z.locals;const tt={name:"SharingList",components:{SharingEntry:(0,H.Z)(Je,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.type!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t("div",{staticClass:"sharing-entry__summary",on:{click:function(t){return t.preventDefault(),e.toggleQuickShareSelect.apply(null,arguments)}}},[t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__summary__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)+"\n\t\t\t\t"),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__summary__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")]),e._v(" "),e.hasStatus&&e.share.status.message?t("small",[e._v("("+e._s(e.share.status.message)+")")]):e._e()])]),e._v(" "),t("QuickShareSelect",{attrs:{share:e.share,"file-info":e.fileInfo,toggle:e.showDropdown},on:{"open-sharing-details":function(t){return e.openShareDetailsForCustomSettings(e.share)}}})],1),e._v(" "),t("NcButton",{staticClass:"sharing-entry__action",attrs:{"aria-label":e.t("files_sharing","Open Sharing Details"),type:"tertiary-no-background"},on:{click:function(t){return e.openSharingDetails(e.share)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("DotsHorizontalIcon",{attrs:{size:20}})]},proxy:!0}])})],1)}),[],!1,null,"532437fc",null).exports},mixins:[g,se],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},computed:{hasShares(){return 0===this.shares.length},isUnique(){return e=>[...this.shares].filter((t=>e.type===this.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName)).length<=1}}},st=(0,H.Z)(tt,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list"},e._l(e.shares,(function(s){return t("SharingEntry",{key:s.id,attrs:{"file-info":e.fileInfo,share:s,"is-unique":e.isUnique(s)},on:{"open-sharing-details":function(t){return e.openSharingDetails(s)}}})})),1)}),[],!1,null,null,null).exports;var it=i(36029),at=i.n(it),nt=i(36767),rt=i.n(nt),ot=i(19286),ht=i.n(ot),lt=i(20571),ct=i.n(lt),dt=i(10549),pt=i(82675),ut=i(73229),At=i(41447),ft=i(19695),gt=i(50413),_t=i(42055),mt=i(76205),wt=i(82640),Et=i(75762),Ct=i(20404),yt=i(25108);const St={name:"SharingDetailsTab",components:{NcAvatar:l(),NcButton:Qe(),NcInputField:at(),NcDatetimePicker:rt(),NcDateTimePickerNative:ht(),NcCheckboxRadioSwitch:ct(),CloseIcon:pt.default,CircleIcon:dt.Z,EditIcon:ut.default,LinkIcon:ft.Z,GroupIcon:gt.Z,ShareIcon:_t.Z,UserIcon:mt.Z,UploadIcon:Et.Z,ViewIcon:wt.default,MenuDownIcon:Ct.Z,DotsHorizontalIcon:Ke.default},mixins:[g,te,me],props:{shareRequestValue:{type:Object,required:!1},fileInfo:{type:Object,required:!0},share:{type:Object,required:!0}},data:()=>({writeNoteToRecipientIsChecked:!1,sharingPermission:fe.ALL.toString(),revertSharingPermission:fe.ALL.toString(),setCustomPermissions:!1,passwordError:!1,advancedSectionAccordionExpanded:!1,bundledPermissions:fe,isFirstComponentLoad:!0,test:!1}),computed:{title(){let e=t("files_sharing","Share with ");return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER?e+=this.share.shareWithDisplayName:this.share.type===this.SHARE_TYPES.SHARE_TYPE_LINK?e=t("files_sharing","Share link"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},canEdit:{get(){return this.share.hasUpdatePermission},set(e){this.updateAtomicPermissions({isEditChecked:e})}},canCreate:{get(){return this.share.hasCreatePermission},set(e){this.updateAtomicPermissions({isCreateChecked:e})}},canDelete:{get(){return this.share.hasDeletePermission},set(e){this.updateAtomicPermissions({isDeleteChecked:e})}},canReshare:{get(){return this.share.hasSharePermission},set(e){this.updateAtomicPermissions({isReshareChecked:e})}},canDownload:{get(){return this.share.hasDownloadPermission},set(e){this.updateAtomicPermissions({isDownloadChecked:e})}},hasRead:{get(){return this.share.hasReadPermission},set(e){this.updateAtomicPermissions({isReadChecked:e})}},hasExpirationDate:{get(){return!!this.share.expireDate||this.config.isDefaultInternalExpireDateEnforced},set(e){this.share.expireDate=e?this.formatDateToString(this.defaultExpiryDate):""}},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){this.share.password=e?await J():"",this.$set(this.share,"newPassword",this.share.password)}},isFolder(){return"dir"===this.fileInfo.type},dateMaxEnforced(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},isSetDownloadButtonVisible(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)},isPasswordEnforced(){return this.isPublicShare&&this.config.enforcePasswordForPublicLink},isExpiryDateEnforced(){return this.config.isDefaultInternalExpireDateEnforced},defaultExpiryDate(){return(this.isGroupShare||this.isUserShare)&&this.config.isDefaultInternalExpireDateEnabled?new Date(this.config.defaultInternalExpirationDate):this.isRemoteShare&&this.config.isDefaultRemoteExpireDateEnabled?new Date(this.config.defaultRemoteExpireDateEnabled):this.isPublicShare&&this.config.isDefaultExpireDateEnabled?new Date(this.config.defaultExpirationDate):new Date((new Date).setDate((new Date).getDate()+1))},isUserShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER},isGroupShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP},isRemoteShare(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE},isNewShare(){return null===this.share.id||void 0===this.share.id},allowsFileDrop(){return!(!this.isFolder||!this.config.isPublicUploadEnabled||this.share.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&this.share.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)},hasFileDropPermissions(){return this.share.permissions===this.bundledPermissions.FILE_DROP},shareButtonText(){return this.isNewShare?t("file_sharing","Save share"):t("file_sharing","Update share")},canSetEdit(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload(){return this.fileInfo.canDownload()||this.canDownload},hasUnsavedPassword(){return void 0!==this.share.newPassword},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPublicShare||!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.enabled))},customPermissionsList(){const e=[];return ge(this.share.permissions,Ae.READ)&&e.push("read"),ge(this.share.permissions,Ae.CREATE)&&e.push("create"),ge(this.share.permissions,Ae.UPDATE)&&e.push("update"),ge(this.share.permissions,Ae.DELETE)&&e.push("delete"),ge(this.share.permissions,Ae.SHARE)&&e.push("share"),this.share.hasDownloadPermission&&e.push("download"),e.map(((e,t)=>0===t?e[0].toUpperCase()+e.substring(1):e)).join(", ")}},watch:{setCustomPermissions(e){this.sharingPermission=e?"custom":this.revertSharingPermission}},beforeMount(){this.initializePermissions(),this.initializeAttributes(),yt.debug("shareSentIn",this.share),yt.debug("config",this.config)},methods:{updateAtomicPermissions(){let{isReadChecked:e=this.hasRead,isEditChecked:t=this.canEdit,isCreateChecked:s=this.canCreate,isDeleteChecked:i=this.canDelete,isReshareChecked:a=this.canReshare,isDownloadChecked:n=this.canDownload}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=0|(e?Ae.READ:0)|(s?Ae.CREATE:0)|(i?Ae.DELETE:0)|(t?Ae.UPDATE:0)|(a?Ae.SHARE:0);this.share.permissions=r,this.share.hasDownloadPermission!==n&&this.$set(this.share,"hasDownloadPermission",n)},expandCustomPermissions(){this.advancedSectionAccordionExpanded||(this.advancedSectionAccordionExpanded=!0),this.toggleCustomPermissions()},toggleCustomPermissions(e){const t="custom"===this.sharingPermission;this.revertSharingPermission=t?"custom":e,this.setCustomPermissions=t},initializeAttributes(){if(this.isNewShare)return;let e=!1;this.isValidShareAttribute(this.share.note)&&(this.writeNoteToRecipientIsChecked=!0,e=!0),this.isValidShareAttribute(this.share.password)&&(e=!0),this.isValidShareAttribute(this.share.expireDate)&&(e=!0),this.isValidShareAttribute(this.share.label)&&(e=!0),e&&(this.advancedSectionAccordionExpanded=!0)},initializePermissions(){this.share.share_type&&(this.share.type=this.share.share_type),"shareType"in this.share&&(this.share.type=this.share.shareType),this.isNewShare?this.isPublicShare?this.sharingPermission=fe.READ_ONLY.toString():this.sharingPermission=fe.ALL.toString():this.hasCustomPermissions||this.share.setCustomPermissions?(this.sharingPermission="custom",this.advancedSectionAccordionExpanded=!0,this.setCustomPermissions=!0):this.sharingPermission=this.share.permissions.toString()},async saveShare(){const e=["permissions","attributes","note","expireDate"];this.isPublicShare&&e.push("label","password","hideDownload");const t=parseInt(this.sharingPermission);if(this.setCustomPermissions?this.updateAtomicPermissions():this.share.permissions=t,this.isFolder||this.share.permissions!==fe.ALL||(this.share.permissions=fe.ALL_FILE),this.writeNoteToRecipientIsChecked||(this.share.note=""),this.isPasswordProtected){if(this.isValidShareAttribute(this.share.newPassword))this.share.password=this.share.newPassword,this.$delete(this.share,"newPassword");else if(this.isPasswordEnforced)return void(this.passwordError=!0)}else this.share.password="";if(this.hasExpirationDate||(this.share.expireDate=""),this.isNewShare){const e={permissions:this.share.permissions,shareType:this.share.type,shareWith:this.share.shareWith,attributes:this.share.attributes,note:this.share.note,fileInfo:this.fileInfo};this.hasExpirationDate&&(e.expireDate=this.share.expireDate),this.isPasswordProtected&&(e.password=this.share.password);const t=await this.addShare(e,this.fileInfo);this.share=t,this.$emit("add:share",this.share)}else this.queueUpdate(...e);this.$emit("close-sharing-details")},async addShare(e,t){yt.debug("Adding a new share from the input for",e);try{const s=(t.path+"/"+t.name).replace("//","/");return await this.createShare({path:s,shareType:e.shareType,shareWith:e.shareWith,permissions:e.permissions,attributes:JSON.stringify(t.shareAttributes),...e.note?{note:e.note}:{},...e.password?{password:e.password}:{},...e.expireDate?{expireDate:e.expireDate}:{}})}catch(e){yt.error("Error while adding new share",e)}},async removeShare(){await this.onDelete(),this.$emit("close-sharing-details")},onPasswordChange(e){this.passwordError=!this.isValidShareAttribute(e),this.$set(this.share,"newPassword",e)},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},isValidShareAttribute:e=>![null,void 0].includes(e)&&e.trim().length>0,getShareTypeIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_LINK:return ft.Z;case this.SHARE_TYPES.SHARE_TYPE_GUEST:return mt.Z;case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return gt.Z;case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return At.Z;case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return dt.Z;case this.SHARE_TYPES.SHARE_TYPE_ROOM:case this.SHARE_TYPES.SHARE_TYPE_DECK:case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return _t.Z;default:return null}}}};var vt=i(2304),bt={};bt.styleTagTransform=O(),bt.setAttributes=k(),bt.insert=D().bind(null,"head"),bt.domAPI=x(),bt.insertStyleElement=I(),v()(vt.Z,bt),vt.Z&&vt.Z.locals&&vt.Z.locals;const xt=(0,H.Z)(St,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharingTabDetailsView"},[t("div",{staticClass:"sharingTabDetailsView__header"},[t("span",[e.isUserShare?t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.shareType!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}):e._e(),e._v(" "),t(e.getShareTypeIcon(e.share.type),{tag:"component",attrs:{size:32}})],1),e._v(" "),t("span",[t("h1",[e._v(e._s(e.title))])])]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__quick-permissions"},[t("div",[t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.READ_ONLY.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]}},[t("ViewIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","View only")))])],1),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.ALL.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]}},[t("EditIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","Allow upload and editing")))])],1),e._v(" "),e.allowsFileDrop?t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:e.bundledPermissions.FILE_DROP.toString(),name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.toggleCustomPermissions]}},[t("UploadIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","File drop")))]),e._v(" "),t("small",[e._v(e._s(e.t("files_sharing","Upload only")))])],1):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"button-variant":!0,checked:e.sharingPermission,value:"custom",name:"sharing_permission_radio",type:"radio","button-variant-grouped":"vertical"},on:{"update:checked":[function(t){e.sharingPermission=t},e.expandCustomPermissions]}},[t("DotsHorizontalIcon",{attrs:{size:20}}),e._v(" "),t("span",[e._v(e._s(e.t("files_sharing","Custom permissions")))]),e._v(" "),t("small",[e._v(e._s(e.t("files_sharing",e.customPermissionsList)))])],1)],1)]),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__advanced-control"},[t("NcButton",{attrs:{type:"tertiary",alignment:"end-reverse"},on:{click:function(t){e.advancedSectionAccordionExpanded=!e.advancedSectionAccordionExpanded}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("MenuDownIcon")]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Advanced settings"))+"\n\t\t\t")])],1),e._v(" "),e.advancedSectionAccordionExpanded?t("div",{staticClass:"sharingTabDetailsView__advanced"},[t("section",[e.isPublicShare?t("NcInputField",{attrs:{value:e.share.label,type:"text",label:e.t("file_sharing","Share label")},on:{"update:value":function(t){return e.$set(e.share,"label",t)}}}):e._e(),e._v(" "),e.isPublicShare?[t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtected,disabled:e.isPasswordEnforced},on:{"update:checked":function(t){e.isPasswordProtected=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Set password"))+"\n\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcInputField",{attrs:{type:e.hasUnsavedPassword?"text":"password",value:e.hasUnsavedPassword?e.share.newPassword:"***************",error:e.passwordError,required:e.isPasswordEnforced,label:e.t("file_sharing","Password")},on:{"update:value":e.onPasswordChange}}):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("span",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("span",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):e._e()]:e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.hasExpirationDate,disabled:e.isExpiryDateEnforced},on:{"update:checked":function(t){e.hasExpirationDate=t}}},[e._v("\n\t\t\t\t"+e._s(e.isExpiryDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcDateTimePickerNative",{attrs:{id:"share-date-picker",value:new Date(e.share.expireDate),min:e.dateTomorrow,max:e.dateMaxEnforced,"hide-label":!0,disabled:e.isExpiryDateEnforced,placeholder:e.t("file_sharing","Expiration date"),type:"date"},on:{input:e.onExpirationChange}}):e._e(),e._v(" "),e.isPublicShare?t("NcCheckboxRadioSwitch",{attrs:{disabled:e.canChangeHideDownload,checked:e.share.hideDownload},on:{"update:checked":[function(t){return e.$set(e.share,"hideDownload",t)},function(t){return e.queueUpdate("hideDownload")}]}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Hide download"))+"\n\t\t\t")]):e._e(),e._v(" "),e.canTogglePasswordProtectedByTalkAvailable?t("NcCheckboxRadioSwitch",{attrs:{checked:e.isPasswordProtectedByTalk},on:{"update:checked":[function(t){e.isPasswordProtectedByTalk=t},e.onPasswordProtectedByTalkChange]}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Video verification"))+"\n\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.writeNoteToRecipientIsChecked},on:{"update:checked":function(t){e.writeNoteToRecipientIsChecked=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Note to recipient"))+"\n\t\t\t")]),e._v(" "),e.writeNoteToRecipientIsChecked?[t("textarea",{domProps:{value:e.share.note},on:{input:function(t){e.share.note=t.target.value}}})]:e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.setCustomPermissions},on:{"update:checked":function(t){e.setCustomPermissions=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Custom permissions"))+"\n\t\t\t")]),e._v(" "),e.setCustomPermissions?t("section",{staticClass:"custom-permissions-group"},[t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.allowsFileDrop&&e.share.type===e.SHARE_TYPES.SHARE_TYPE_LINK,checked:e.hasRead},on:{"update:checked":function(t){e.hasRead=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Read"))+"\n\t\t\t\t")]),e._v(" "),e.isFolder?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetCreate,checked:e.canCreate},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Create"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetEdit,checked:e.canEdit},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Update"))+"\n\t\t\t\t")]),e._v(" "),e.config.isResharingAllowed&&e.share.type!==e.SHARE_TYPES.SHARE_TYPE_LINK?t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetReshare,checked:e.canReshare},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Share"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isPublicShare?e._e():t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDownload,checked:e.canDownload},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Download"))+"\n\t\t\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{disabled:!e.canSetDelete,checked:e.canDelete},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("file_sharing","Delete"))+"\n\t\t\t\t")])],1):e._e()],2)]):e._e(),e._v(" "),t("div",{staticClass:"sharingTabDetailsView__footer"},[e.isNewShare?e._e():t("NcButton",{attrs:{"aria-label":e.t("files_sharing","Delete share"),disabled:!1,readonly:!1,type:"tertiary"},on:{click:function(t){return t.preventDefault(),e.removeShare.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("CloseIcon",{attrs:{size:16}})]},proxy:!0}],null,!1,2746485232)},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Delete share"))+"\n\t\t")]),e._v(" "),t("div",{staticClass:"button-group"},[t("NcButton",{on:{click:function(t){return e.$emit("close-sharing-details")}}},[e._v("\n\t\t\t\t"+e._s(e.t("file_sharing","Cancel"))+"\n\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary"},on:{click:e.saveShare}},[e._v("\n\t\t\t\t"+e._s(e.shareButtonText)+"\n\t\t\t")])],1)],1)])}),[],!1,null,"0f46cc1b",null).exports;var Pt=i(25108);const Dt={name:"SharingTab",components:{NcAvatar:l(),CollectionList:r.G,SharingEntryInternal:W,SharingEntrySimple:B,SharingInherited:Pe,SharingInput:oe,SharingLinkList:Ge,SharingList:st,SharingDetailsTab:xt},mixins:[g],data:()=>({config:new p,deleteEvent:null,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,d.j)("core","projects_enabled",!1),showSharingDetailsView:!1,shareDetailsData:{}}),computed:{isSharedWithMe(){return Object.keys(this.sharedWithMe).length>0},canReshare(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),t="json",s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=c.default.get(e,{params:{format:t,path:s,reshares:!0}}),a=c.default.get(e,{params:{format:t,path:s,shared_with_me:!0}}),[n,r]=await Promise.all([i,a]);this.loading=!1,this.processSharedWithMe(r),this.processShares(n)}catch(a){var e,s,i;null!==(e=a.response.data)&&void 0!==e&&null!==(s=e.ocs)&&void 0!==s&&null!==(i=s.meta)&&void 0!==i&&i.message?this.error=a.response.data.ocs.meta.message:this.error=t("files_sharing","Unable to load the shares list"),this.loading=!1,Pt.error("Error loading the shares list",a)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[],this.showSharingDetailsView=!1,this.shareDetailsData={}},updateExpirationSubtitle(e){const s=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*s)})),moment().unix()>s&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(e){let{data:t}=e;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){const e=t.ocs.data.map((e=>new f(e))).sort(((e,t)=>t.createdTime-e.createdTime));this.linkShares=e.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK||e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)),this.shares=e.filter((e=>e.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&e.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)),Pt.debug("Processed",this.linkShares.length,"link share(s)"),Pt.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe(e){let{data:s}=e;if(s.ocs&&s.ocs.data&&s.ocs.data[0]){const e=new f(s),i=function(e){return e.type===u.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===u.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===u.D.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1})}(e),a=e.ownerDisplayName,n=e.owner;this.sharedWithMe={displayName:a,title:i,user:n},this.reshare=e,e.expireDate&&moment(e.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},removeShare(e){const t=this.shares.findIndex((t=>t.id===e.id));this.shares.splice(t,1)},awaitForShare(e,t){let s=this.$refs.shareList;e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(s=this.$refs.linkShareList),this.$nextTick((()=>{const i=s.$children.find((t=>t.share===e));i&&t(i)}))},toggleShareDetailsView(e){e&&(this.shareDetailsData=e),this.showSharingDetailsView=!this.showSharingDetailsView}}},Tt=Dt;var kt=i(3224),Rt={};Rt.styleTagTransform=O(),Rt.setAttributes=k(),Rt.insert=D().bind(null,"head"),Rt.domAPI=x(),Rt.insertStyleElement=I(),v()(kt.Z,Rt),kt.Z&&kt.Z.locals&&kt.Z.locals;const It=(0,H.Z)(Tt,(function(){var e=this,t=e._self._c;return t("div",{class:{"icon-loading":e.loading}},[e.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:e.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),e._v(" "),t("h2",[e._v(e._s(e.error))])]):e._e(),e._v(" "),e.showSharingDetailsView?t("div",[t("SharingDetailsTab",{attrs:{"file-info":e.shareDetailsData.fileInfo,share:e.shareDetailsData.share},on:{"close-sharing-details":e.toggleShareDetailsView,"add:share":e.addShare,"remove:share":e.removeShare}})],1):[t("div",{staticClass:"sharingTab__content"},[e.isSharedWithMe?t("SharingEntrySimple",e._b({staticClass:"sharing-entry__reshare",scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.sharedWithMe.user,"display-name":e.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",e.sharedWithMe,!1)):e._e(),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,reshare:e.reshare,shares:e.shares},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo},on:{"open-sharing-details":e.toggleShareDetailsView}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}}),e._v(" "),e.projectsEnabled&&e.fileInfo?t("CollectionList",{attrs:{id:"".concat(e.fileInfo.id),type:"file",name:e.fileInfo.name}}):e._e()],1),e._v(" "),e._l(e.sections,(function(s,i){return t("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(s(e.$refs["section-"+i],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)}))]],2)}),[],!1,null,"4bd1eb33",null).exports;var Nt=i(25108);var Ot=i(25108);var Lt=i(25108);var Yt=i(44582);window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.results=[],Nt.debug("OCA.Sharing.ShareSearch initialized")}get state(){return this._state}addNewResult(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(Nt.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],Ot.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return OC.debug&&Ot.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"==typeof e&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(Ot.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],Lt.debug("OCA.Sharing.ExternalShareActions initialized")}get state(){return this._state}registerAction(e){return"object"==typeof e&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"==typeof e.handlers&&Object.values(e.handlers).every((e=>"function"==typeof e))?this._state.actions.findIndex((t=>t.id===e.id))>-1?(Lt.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(Lt.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_sections"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._sections=[]}registerSection(e){this._sections.push(e)}getSections(){return this._sections}}}),a.default.prototype.t=n.Iu,a.default.prototype.n=n.uN;const Ht=a.default.extend(It);let Bt=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,n.Iu)("files_sharing","Sharing"),iconSvg:Yt,async mount(e,t,s){Bt&&Bt.$destroy(),Bt=new Ht({parent:s}),await Bt.update(t),Bt.$mount(e)},update(e){Bt.update(e)},destroy(){Bt.$destroy(),Bt=null}}))}))},57854:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-532437fc]{display:flex;justify-content:space-between;align-items:center;height:44px}.sharing-entry__summary[data-v-532437fc]{padding:8px;padding-left:10px;display:flex;flex-direction:column;justify-content:center;width:75%;min-width:75%}.sharing-entry__summary__desc[data-v-532437fc]{display:inline-block;flex-direction:column;justify-content:space-between;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-532437fc],.sharing-entry__summary__desc small[data-v-532437fc]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-532437fc]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,WAAA,CAEA,yCACC,WAAA,CACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,+CACC,oBAAA,CACA,qBAAA,CACA,6BAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 44px;\n\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-left: 10px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\twidth: 75%;\n\t\tmin-width: 75%;\n\n\t\t&__desc {\n\t\t\tdisplay: inline-block;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding-bottom: 0;\n\t\t\tline-height: 1.2em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\tp,\n\t\t\tsmall {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&-unique {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t}\n\n}\n"],sourceRoot:""}]);const o=r},33668:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=r},2256:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=r},1981:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-6b7b22e9]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-6b7b22e9]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-6b7b22e9]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-6b7b22e9]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-6b7b22e9]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-6b7b22e9] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-6b7b22e9]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-6b7b22e9]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-6b7b22e9]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-6b7b22e9],.sharing-entry .action-item~.sharing-entry__loading[data-v-6b7b22e9]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-6b7b22e9]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=r},94345:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".share-select[data-v-c003ab64]{position:relative;cursor:pointer}.share-select .trigger-text[data-v-c003ab64]{display:flex;flex-direction:row;align-items:center;font-size:12.5px;gap:2px;color:var(--color-primary-element)}.share-select .share-select-dropdown[data-v-c003ab64]{position:absolute;display:flex;flex-direction:column;top:100%;left:0;background-color:var(--color-main-background);border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.2);padding:4px 0;z-index:1}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]{padding:8px;font-size:12px;background:none;border:none;border-radius:0;font:inherit;cursor:pointer;color:inherit;outline:none;width:100%;white-space:nowrap;text-align:left}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]:hover{background-color:#f2f2f2}.share-select .share-select-dropdown .dropdown-item.selected[data-v-c003ab64]{background-color:#f0f0f0}.share-select .share-select-dropdown[data-v-c003ab64]{max-height:0;overflow:hidden;transition:max-height .3s ease}.share-select.active .share-select-dropdown[data-v-c003ab64]{max-height:200px}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue"],names:[],mappings:"AACA,+BACC,iBAAA,CACA,cAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,gBAAA,CACA,OAAA,CACA,kCAAA,CAGD,sDACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,MAAA,CACA,6CAAA,CACA,iBAAA,CACA,mCAAA,CACA,aAAA,CACA,SAAA,CAEA,qEACC,WAAA,CACA,cAAA,CACA,eAAA,CACA,WAAA,CACA,eAAA,CACA,YAAA,CACA,cAAA,CACA,aAAA,CACA,YAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CAEA,2EACC,wBAAA,CAGD,8EACC,wBAAA,CAMH,sDACC,YAAA,CACA,eAAA,CACA,8BAAA,CAGD,6DACC,gBAAA",sourcesContent:["\n.share-select {\n\tposition: relative;\n\tcursor: pointer;\n\n\t.trigger-text {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tfont-size: 12.5px;\n\t\tgap: 2px;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.share-select-dropdown {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttop: 100%;\n\t\tleft: 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 8px;\n\t\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\t\tpadding: 4px 0;\n\t\tz-index: 1;\n\n\t\t.dropdown-item {\n\t\t\tpadding: 8px;\n\t\t\tfont-size: 12px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\tfont: inherit;\n\t\t\tcursor: pointer;\n\t\t\tcolor: inherit;\n\t\t\toutline: none;\n\t\t\twidth: 100%;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: left;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #f2f2f2;\n\t\t\t}\n\n\t\t\t&.selected {\n\t\t\t\tbackground-color: #f0f0f0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Optional: Add a transition effect for smoother dropdown animation */\n\t.share-select-dropdown {\n\t\tmax-height: 0;\n\t\toverflow: hidden;\n\t\ttransition: max-height 0.3s ease;\n\t}\n\n\t&.active .share-select-dropdown {\n\t\tmax-height: 200px;\n\t\t/* Adjust the value to your desired height */\n\t}\n}\n"],sourceRoot:""}]);const o=r},82574:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry[data-v-776f7b36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-776f7b36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-776f7b36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-776f7b36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-776f7b36]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]);const o=r},24764:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const o=r},2304:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharingTabDetailsView[data-v-0f46cc1b]{display:flex;flex-direction:column;align-items:flex-start;width:96%;margin:0 auto}.sharingTabDetailsView__header[data-v-0f46cc1b]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-0f46cc1b]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-0f46cc1b]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__quick-permissions[data-v-0f46cc1b]{display:flex;justify-content:center;margin-bottom:.2em;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-0f46cc1b]:nth-child(1){align-items:center;justify-content:center;color:var(--color-primary-element);padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label{display:flex;flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label span{display:flex}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label span:first-of-type{flex:10%}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label span:last-of-type{flex:90%}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label small{padding-left:10%;flex-basis:100% !important}.sharingTabDetailsView__advanced-control[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-0f46cc1b]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-0f46cc1b]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-0f46cc1b],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-0f46cc1b]{height:80px}.sharingTabDetailsView__advanced section span[data-v-0f46cc1b] label{background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-0f46cc1b]{padding-left:1.5em}.sharingTabDetailsView__footer[data-v-0f46cc1b]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start}.sharingTabDetailsView__footer>button[data-v-0f46cc1b]:first-child{color:#df0707;background-color:#f5f5f5}.sharingTabDetailsView__footer .button-group[data-v-0f46cc1b]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-0f46cc1b]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-0f46cc1b]:first-child{margin-left:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue"],names:[],mappings:"AACA,wCACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,iBAAA,CAMH,2DACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,kCAAA,CACA,YAAA,CAGD,0EACC,YAAA,CACA,cAAA,CAEA,+EACC,YAAA,CAEA,6FACC,QAAA,CAGD,4FACC,QAAA,CAIF,gFACC,gBAAA,CACA,0BAAA,CASL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CAaA,qEACC,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAKH,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CAEA,mEACC,aAAA,CACA,wBAAA,CAGD,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,gBAAA,CAEA,iFACC,aAAA",sourcesContent:["\n.sharingTabDetailsView {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\twidth: 96%;\n\tmargin: 0 auto;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0.2em;\n\n\t\tspan {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\th1 {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tpadding-left: 0.3em;\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__quick-permissions {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-bottom: 0.2em;\n\t\twidth: 100%;\n\t\tmargin: 0 auto;\n\t\tborder-radius: 0;\n\n\t\tdiv {\n\t\t\twidth: 100%;\n\n\t\t\tspan {\n\t\t\t\twidth: 100%;\n\n\t\t\t\tspan:nth-child(1) {\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tpadding: 0.1em;\n\t\t\t\t}\n\n\t\t\t\t::v-deep label {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-wrap: wrap;\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\n\t\t\t\t\t\t&:first-of-type {\n\t\t\t\t\t\t\tflex: 10%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:last-of-type {\n\t\t\t\t\t\t\tflex: 90%\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsmall {\n\t\t\t\t\t\tpadding-left: 10%;\n\t\t\t\t\t\tflex-basis: 100% !important;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__advanced-control {\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\n\t}\n\n\t&__advanced {\n\t\twidth: 100%;\n\t\tmargin-bottom: 0.5em;\n\t\ttext-align: left;\n\t\tpadding-left: 0;\n\n\t\tsection {\n\n\t\t\ttextarea,\n\t\t\tdiv.mx-datepicker {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttextarea {\n\t\t\t\theight: 80px;\n\t\t\t}\n\n\t\t\t/*\n The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__footer {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\n\t\t>button:first-child {\n\t\t\tcolor: rgb(223, 7, 7);\n\t\t\tbackground-color: #f5f5f5;\n\t\t}\n\n\t\t.button-group {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 16px;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},84772:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const o=r},3224:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),n=s(23645),r=s.n(n)()(a());r.push([e.id,".emptyContentWithSections[data-v-4bd1eb33]{margin:1rem auto}.sharingTab__content[data-v-4bd1eb33]{padding:0 6px}.sharingTab__additionalContent[data-v-4bd1eb33]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAGD,gDACC,aAAA",sourcesContent:["\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]);const o=r}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={id:e,loaded:!1,exports:{}};return a[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=a,e=[],r.O=(t,s,i,a)=>{if(!s){var n=1/0;for(c=0;c<e.length;c++){s=e[c][0],i=e[c][1],a=e[c][2];for(var o=!0,h=0;h<s.length;h++)(!1&a||n>=a)&&Object.keys(r.O).every((e=>r.O[e](s[h])))?s.splice(h--,1):(o=!1,a<n&&(n=a));if(o){e.splice(c--,1);var l=i();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[s,i,a]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v=00434e4baa0d8e7b79f1",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},i="nextcloud:",r.l=(e,t,a,n)=>{if(s[e])s[e].push(t);else{var o,h;if(void 0!==a)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==i+a){o=d;break}}o||(h=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",i+a),o.src=e),s[e]=[t];var p=(t,i)=>{o.onerror=o.onload=null,clearTimeout(u);var a=s[e];if(delete s[e],o.parentNode&&o.parentNode.removeChild(o),a&&a.forEach((e=>e(i))),t)return t(i)},u=setTimeout(p.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=p.bind(null,o.onerror),o.onload=p.bind(null,o.onload),h&&document.head.appendChild(o)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=7870,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={7870:0};r.f.j=(t,s)=>{var i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)s.push(i[2]);else{var a=new Promise(((s,a)=>i=e[t]=[s,a]));s.push(i[2]=a);var n=r.p+r.u(t),o=new Error;r.l(n,(s=>{if(r.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var a=s&&("load"===s.type?"missing":s.type),n=s&&s.target&&s.target.src;o.message="Loading chunk "+t+" failed.\n("+a+": "+n+")",o.name="ChunkLoadError",o.type=a,o.request=n,i[1](o)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var i,a,n=s[0],o=s[1],h=s[2],l=0;if(n.some((t=>0!==e[t]))){for(i in o)r.o(o,i)&&(r.m[i]=o[i]);if(h)var c=h(r)}for(t&&t(s);l<n.length;l++)a=n[l],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(c)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var o=r.O(void 0,[7874],(()=>r(73600)));o=r.O(o)})();
+//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=fd28eb61ff636e1b7f85 \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map
index 36964ae6985..ddd23fad2c8 100644
--- a/dist/files_sharing-files_sharing_tab.js.map
+++ b/dist/files_sharing-files_sharing_tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-files_sharing_tab.js?v=926236bd3971a98f984d","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/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?95b1","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?1179","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareDetails.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?2e81","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?58c8","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?3fbf","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?de0b","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?1d81","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?4441","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?0b36","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?82b4","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?68ec","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?64e9","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?e340","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?0659","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?7f2e","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?faf3","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?10fc","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?440a","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=style&index=0&id=5cbfa7ba&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=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\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) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default class Config {\n\n\tconstructor() {\n\t\tthis._shareConfig = loadState('files_sharing', 'shareConfig', {})\n\t}\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn this._shareConfig.allowPublicUploads\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes.splice(i, 1, attrUpdate)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionLink',{attrs:{\"href\":_vm.internalLink,\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions v-if=\"$slots['default']\"\n\t\t\tref=\"actionsComponent\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=776f7b36&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"776f7b36\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionLink :href=\"internalLink\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.prevent=\"copyLink\" />\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport SharingEntrySimple from './SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy internal link to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=71a426be&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71a426be\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"open\":_vm.handleOpen,\"search\":_vm.asyncFind,\"option:selected\":_vm.openSharingDetails},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService.js'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\tshowSuccess(t('files_sharing', 'Password created successfully'))\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share.js'\nimport { emit } from '@nextcloud/event-bus'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate] expire the shareautomatically after\n\t\t * @param {string} [data.label] custom label\n\t\t * @param {string} [data.attributes] Share attributes encoded as json\n\t\t * @param data.note\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, note, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, note, attributes })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\tconst share = new Share(request.data.ocs.data)\n\t\t\t\temit('files_sharing:share:created', { share })\n\t\t\t\treturn share\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' },\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\temit('files_sharing:share:deleted', { id })\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' },\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\temit('files_sharing:share:updated', { id })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' },\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","import Share from '../models/Share.js'\n\nexport default {\n\tmethods: {\n\t\tasync openSharingDetails(shareRequestObject) {\n\t\t\tlet share = {}\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\t// TODO : Better name/interface for handler required\n\t\t\t// For example `externalAppCreateShareHook` with proper documentation\n\t\t\tif (shareRequestObject.handler) {\n\t\t\t\tif (this.suggestions) {\n\t\t\t\t\tshareRequestObject.suggestions = this.suggestions\n\t\t\t\t\tshareRequestObject.fileInfo = this.fileInfo\n\t\t\t\t\tshareRequestObject.query = this.query\n\t\t\t\t}\n\t\t\t\tshare = await shareRequestObject.handler(shareRequestObject)\n\t\t\t\tshare = new Share(share)\n\t\t\t} else {\n\t\t\t\tshare = this.mapShareRequestToShareObject(shareRequestObject)\n\t\t\t}\n\n\t\t\tconst shareDetails = {\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tshare,\n\t\t\t}\n\n\t\t\tthis.$emit('open-sharing-details', shareDetails)\n\t\t},\n\t\topenShareDetailsForCustomSettings(share) {\n\t\t\tshare.setCustomPermissions = true\n\t\t\tthis.openSharingDetails(share)\n\t\t},\n\t\tmapShareRequestToShareObject(shareRequestObject) {\n\n\t\t\tif (shareRequestObject.id) {\n\t\t\t\treturn shareRequestObject\n\t\t\t}\n\n\t\t\tconst share = {\n\t\t\t\tattributes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\tkey: 'download',\n\t\t\t\t\t\tscope: 'permissions',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tshare_type: shareRequestObject.shareType,\n\t\t\t\tshare_with: shareRequestObject.shareWith,\n\t\t\t\tis_no_user: shareRequestObject.isNoUser,\n\t\t\t\tuser: shareRequestObject.shareWith,\n\t\t\t\tshare_with_displayname: shareRequestObject.displayName,\n\t\t\t\tsubtitle: shareRequestObject.subtitle,\n\t\t\t\tpermissions: shareRequestObject.permissions,\n\t\t\t\texpiration: '',\n\t\t\t}\n\n\t\t\treturn new Share(share)\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tv-model=\"value\"\n\t\t\tinput-id=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\t@open=\"handleOpen\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"openSharingDetails\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport Config from '../services/ConfigService.js'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests, ShareDetails],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t\tvalue: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\t// Fix dropdown not opening when viewer is open, see https://github.com/nextcloud/viewer/pull/1319\n\t\t\temit('viewer:trapElements:changed', this.$refs.select.$el)\n\t\t},\n\n\t\tasync asyncFind(query) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-circle',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Circle'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'ScienceMesh'),\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\t...this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\t// Clear the displayed selection\n\t\t\tthis.value = null\n\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again on error\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=608786b5&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n\tALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { },\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\t\tisPublicShare() {\n\t\t\tconst shareType = this.share.shareType ?? this.share.type\n\t\t\treturn [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(shareType)\n\t\t},\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\t\thasCustomPermissions() {\n\t\t\tconst bundledPermissions = [\n\t\t\t\tBUNDLED_PERMISSIONS.ALL,\n\t\t\t\tBUNDLED_PERMISSIONS.READ_ONLY,\n\t\t\t\tBUNDLED_PERMISSIONS.FILE_DROP,\n\t\t\t]\n\t\t\treturn !bundledPermissions.includes(this.share.permissions)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = share.expirationDate\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(new Date(date))\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\t\t\t\t\t\tshowSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] }))\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t\tshowError(t('files_sharing', message))\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=038f97f0&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"038f97f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.js'\nimport SharingEntryInherited from '../components/SharingEntryInherited.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=05b67dc8&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05b67dc8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare,\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div ref=\"quickShareDropdownContainer\"\n\t\t:class=\"{ 'active': showDropdown, 'share-select': true }\">\n\t\t<span :id=\"dropdownId\"\n\t\t\tclass=\"trigger-text\"\n\t\t\t:aria-expanded=\"showDropdown\"\n\t\t\t:aria-haspopup=\"true\"\n\t\t\taria-label=\"Quick share options dropdown\"\n\t\t\t@click=\"toggleDropdown\">\n\t\t\t{{ selectedOption }}\n\t\t\t<DropdownIcon :size=\"15\" />\n\t\t</span>\n\t\t<div v-if=\"showDropdown\"\n\t\t\tref=\"quickShareDropdown\"\n\t\t\tclass=\"share-select-dropdown\"\n\t\t\t:aria-labelledby=\"dropdownId\"\n\t\t\ttabindex=\"0\"\n\t\t\t@keydown.down=\"handleArrowDown\"\n\t\t\t@keydown.up=\"handleArrowUp\"\n\t\t\t@keydown.esc=\"closeDropdown\">\n\t\t\t<button v-for=\"option in options\"\n\t\t\t\t:key=\"option\"\n\t\t\t\t:class=\"{ 'dropdown-item': true, 'selected': option === selectedOption }\"\n\t\t\t\t:aria-selected=\"option === selectedOption\"\n\t\t\t\t@click=\"selectOption(option)\">\n\t\t\t\t{{ option }}\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n\tATOMIC_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nimport { createFocusTrap } from 'focus-trap'\n\nexport default {\n\tcomponents: {\n\t\tDropdownIcon,\n\t},\n\tmixins: [SharesMixin, ShareDetails, ShareTypes],\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttoggle: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselectedOption: '',\n\t\t\tshowDropdown: this.toggle,\n\t\t\tfocusTrap: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcanViewText() {\n\t\t\treturn t('files_sharing', 'View only')\n\t\t},\n\t\tcanEditText() {\n\t\t\treturn t('files_sharing', 'Can edit')\n\t\t},\n\t\tfileDropText() {\n\t\t\treturn t('files_sharing', 'File drop')\n\t\t},\n\t\tcustomPermissionsText() {\n\t\t\treturn t('files_sharing', 'Custom permissions')\n\t\t},\n\t\tpreSelectedOption() {\n\t\t\t// We remove the share permission for the comparison as it is not relevant for bundled permissions.\n\t\t\tif ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.READ_ONLY) {\n\t\t\t\treturn this.canViewText\n\t\t\t} else if (this.share.permissions === BUNDLED_PERMISSIONS.ALL || this.share.permissions === BUNDLED_PERMISSIONS.ALL_FILE) {\n\t\t\t\treturn this.canEditText\n\t\t\t} else if ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.FILE_DROP) {\n\t\t\t\treturn this.fileDropText\n\t\t\t}\n\n\t\t\treturn this.customPermissionsText\n\n\t\t},\n\t\toptions() {\n\t\t\tconst options = [this.canViewText, this.canEditText]\n\t\t\tif (this.supportsFileDrop) {\n\t\t\t\toptions.push(this.fileDropText)\n\t\t\t}\n\t\t\toptions.push(this.customPermissionsText)\n\n\t\t\treturn options\n\t\t},\n\t\tsupportsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tconst shareType = this.share.type ?? this.share.shareType\n\t\t\t\treturn [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(shareType)\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tdropDownPermissionValue() {\n\t\t\tswitch (this.selectedOption) {\n\t\t\tcase this.canEditText:\n\t\t\t\treturn this.isFolder ? BUNDLED_PERMISSIONS.ALL : BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\tcase this.fileDropText:\n\t\t\t\treturn BUNDLED_PERMISSIONS.FILE_DROP\n\t\t\tcase this.customPermissionsText:\n\t\t\t\treturn 'custom'\n\t\t\tcase this.canViewText:\n\t\t\tdefault:\n\t\t\t\treturn BUNDLED_PERMISSIONS.READ_ONLY\n\t\t\t}\n\t\t},\n\t\tdropdownId() {\n\t\t\t// Generate a unique ID for ARIA attributes\n\t\t\treturn `dropdown-${Math.random().toString(36).substr(2, 9)}`\n\t\t},\n\t},\n\twatch: {\n\t\ttoggle(toggleValue) {\n\t\t\tthis.showDropdown = toggleValue\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.initializeComponent()\n\t\twindow.addEventListener('click', this.handleClickOutside)\n\t},\n\tbeforeDestroy() {\n\t\t// Remove the global click event listener to prevent memory leaks\n\t\twindow.removeEventListener('click', this.handleClickOutside)\n\t},\n\tmethods: {\n\t\ttoggleDropdown() {\n\t\t\tthis.showDropdown = !this.showDropdown\n\t\t\tif (this.showDropdown) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.useFocusTrap()\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.clearFocusTrap()\n\t\t\t}\n\t\t},\n\t\tcloseDropdown() {\n\t\t\tthis.clearFocusTrap()\n\t\t\tthis.showDropdown = false\n\t\t},\n\t\tselectOption(option) {\n\t\t\tthis.selectedOption = option\n\t\t\tif (option === this.customPermissionsText) {\n\t\t\t\tthis.$emit('open-sharing-details')\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = this.dropDownPermissionValue\n\t\t\t\tthis.queueUpdate('permissions')\n\t\t\t}\n\t\t\tthis.showDropdown = false\n\t\t},\n\t\tinitializeComponent() {\n\t\t\tthis.selectedOption = this.preSelectedOption\n\t\t},\n\t\thandleClickOutside(event) {\n\t\t\tconst dropdownContainer = this.$refs.quickShareDropdownContainer\n\n\t\t\tif (dropdownContainer && !dropdownContainer.contains(event.target)) {\n\t\t\t\tthis.showDropdown = false\n\t\t\t}\n\t\t},\n\t\tuseFocusTrap() {\n\t\t\t// Create global stack if undefined\n\t\t\t// Use in with trapStack to avoid conflicting traps\n\t\t\tObject.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })\n\t\t\tconst dropdownElement = this.$refs.quickShareDropdown\n\t\t\tthis.focusTrap = createFocusTrap(dropdownElement, {\n\t\t\t\tallowOutsideClick: true,\n\t\t\t\ttrapStack: window._nc_focus_trap,\n\t\t\t})\n\n\t\t\tthis.focusTrap.activate()\n\t\t},\n\t\tclearFocusTrap() {\n\t\t\tthis.focusTrap?.deactivate()\n\t\t\tthis.focusTrap = null\n\t\t},\n\t\tshiftFocusForward() {\n\t\t\tconst currentElement = document.activeElement\n\t\t\tlet nextElement = currentElement.nextElementSibling\n\t\t\tif (!nextElement) {\n\t\t\t\tnextElement = this.$refs.quickShareDropdown.firstElementChild\n\t\t\t}\n\t\t\tnextElement.focus()\n\t\t},\n\t\tshiftFocusBackward() {\n\t\t\tconst currentElement = document.activeElement\n\t\t\tlet previousElement = currentElement.previousElementSibling\n\t\t\tif (!previousElement) {\n\t\t\t\tpreviousElement = this.$refs.quickShareDropdown.lastElementChild\n\t\t\t}\n\t\t\tpreviousElement.focus()\n\t\t},\n\t\thandleArrowUp() {\n\t\t\tthis.shiftFocusBackward()\n\t\t},\n\t\thandleArrowDown() {\n\t\t\tthis.shiftFocusForward()\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.share-select {\n\tposition: relative;\n\tcursor: pointer;\n\n\t.trigger-text {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tfont-size: 12.5px;\n\t\tgap: 2px;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.share-select-dropdown {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttop: 100%;\n\t\tleft: 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 8px;\n\t\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\t\tpadding: 4px 0;\n\t\tz-index: 1;\n\n\t\t.dropdown-item {\n\t\t\tpadding: 8px;\n\t\t\tfont-size: 12px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\tfont: inherit;\n\t\t\tcursor: pointer;\n\t\t\tcolor: inherit;\n\t\t\toutline: none;\n\t\t\twidth: 100%;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: left;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #f2f2f2;\n\t\t\t}\n\n\t\t\t&.selected {\n\t\t\t\tbackground-color: #f0f0f0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Optional: Add a transition effect for smoother dropdown animation */\n\t.share-select-dropdown {\n\t\tmax-height: 0;\n\t\toverflow: hidden;\n\t\ttransition: max-height 0.3s ease;\n\t}\n\n\t&.active .share-select-dropdown {\n\t\tmax-height: 200px;\n\t\t/* Adjust the value to your desired height */\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryQuickShareSelect.vue?vue&type=template&id=c003ab64&scoped=true&\"\nimport script from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c003ab64\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"quickShareDropdownContainer\",class:{ 'active': _vm.showDropdown, 'share-select': true }},[_c('span',{staticClass:\"trigger-text\",attrs:{\"id\":_vm.dropdownId,\"aria-expanded\":_vm.showDropdown,\"aria-haspopup\":true,\"aria-label\":\"Quick share options dropdown\"},on:{\"click\":_vm.toggleDropdown}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.selectedOption)+\"\\n\\t\\t\"),_c('DropdownIcon',{attrs:{\"size\":15}})],1),_vm._v(\" \"),(_vm.showDropdown)?_c('div',{ref:\"quickShareDropdown\",staticClass:\"share-select-dropdown\",attrs:{\"aria-labelledby\":_vm.dropdownId,\"tabindex\":\"0\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.handleArrowDown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.handleArrowUp.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.closeDropdown.apply(null, arguments)}]}},_vm._l((_vm.options),function(option){return _c('button',{key:option,class:{ 'dropdown-item': true, 'selected': option === _vm.selectedOption },attrs:{\"aria-selected\":option === _vm.selectedOption},on:{\"click\":function($event){return _vm.selectOption(option)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(option)+\"\\n\\t\\t\")])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share.js'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=0f0e27d0&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<NcAvatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\" @click.prevent=\"toggleQuickShareSelect\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t\t<QuickShareSelect v-if=\"share && share.permissions !== undefined\"\n\t\t\t\t:share=\"share\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:toggle=\"showDropdown\"\n\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\" />\n\t\t</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingEnforcedPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingEnforcedPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox v-else-if=\"pendingPassword\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingEnforcedPassword || share.password\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<NcActionButton :disabled=\"saving\"\n\t\t\t\t\t\t@click.prevent=\"openSharingDetails\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Customize link') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<NcActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:title=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\" />\n\t\t</NcActions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nimport Tune from 'vue-material-design-icons/Tune.vue'\n\nimport QuickShareSelect from './SharingEntryQuickShareSelect.vue'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tExternalShareAction,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tTune,\n\t\tQuickShareSelect,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowDropdown: false,\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enableLinkPasswordByDefault && this.share && !this.share.id\n\t\t},\n\t\tpendingEnforcedPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enableLinkPasswordByDefault || this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.pending = false\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password default or enforced, pre-fill with random one\n\t\t\t\tif (this.config.enableLinkPasswordByDefault || this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\t\t\t\tshowSuccess(t('files_sharing', 'Link share created'))\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('files_sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t\tthrow data\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submitted.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\n\t\ttoggleQuickShareSelect() {\n\t\t\tthis.showDropdown = !this.showDropdown\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=6b7b22e9&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b7b22e9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:index=\"shares.length > 1 ? index + 1 : null\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\"\n\t\t\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes, ShareDetails],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleQuickShareSelect.apply(null, arguments)}}},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share && _vm.share.permissions !== undefined)?_c('QuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo,\"toggle\":_vm.showDropdown},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}}):_vm._e()],1),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip,\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingEnforcedPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingEnforcedPassword)?_c('NcActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.pendingPassword)?_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingEnforcedPassword || _vm.share.password)?_c('NcActionInput',{staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('NcActionButton',{attrs:{\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.openSharingDetails.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Customize link'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function({icon, url, name},index){return _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"title\":_vm.t('files_sharing', 'Create a new share link'),\"aria-label\":_vm.t('files_sharing', 'Create a new share link'),\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}}):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=9d43db72&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<div class=\"sharing-entry__summary\" @click.prevent=\"toggleQuickShareSelect\">\n\t\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t\t:title=\"tooltip\"\n\t\t\t\t:aria-label=\"tooltip\"\n\t\t\t\t:href=\"share.shareWithLink\"\n\t\t\t\tclass=\"sharing-entry__summary__desc\">\n\t\t\t\t<span>{{ title }}\n\t\t\t\t\t<span v-if=\"!isUnique\" class=\"sharing-entry__summary__desc-unique\"> ({{\n\t\t\t\t\t\tshare.shareWithDisplayNameUnique }})</span>\n\t\t\t\t\t<small v-if=\"hasStatus && share.status.message\">({{ share.status.message }})</small>\n\t\t\t\t</span>\n\t\t\t</component>\n\t\t\t<QuickShareSelect :share=\"share\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:toggle=\"showDropdown\"\n\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t</div>\n\t\t<NcButton class=\"sharing-entry__action\"\n\t\t\t:aria-label=\"t('files_sharing', 'Open Sharing Details')\"\n\t\t\ttype=\"tertiary-no-background\"\n\t\t\t@click=\"openSharingDetails(share)\">\n\t\t\t<template #icon>\n\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport QuickShareSelect from './SharingEntryQuickShareSelect.vue'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcAvatar,\n\t\tDotsHorizontalIcon,\n\t\tNcSelect,\n\t\tQuickShareSelect,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowDropdown: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t\ttoggleQuickShareSelect() {\n\t\t\tthis.showDropdown = !this.showDropdown\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 44px;\n\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-left: 10px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\twidth: 75%;\n\t\tmin-width: 75%;\n\n\t\t&__desc {\n\t\t\tdisplay: inline-block;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding-bottom: 0;\n\t\t\tline-height: 1.2em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\tp,\n\t\t\tsmall {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&-unique {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t}\n\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=532437fc&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"532437fc\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes, ShareDetails],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { },\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__summary\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleQuickShareSelect.apply(null, arguments)}}},[_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__summary__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\"),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__summary__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e(),_vm._v(\" \"),(_vm.hasStatus && _vm.share.status.message)?_c('small',[_vm._v(\"(\"+_vm._s(_vm.share.status.message)+\")\")]):_vm._e()])]),_vm._v(\" \"),_c('QuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo,\"toggle\":_vm.showDropdown},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"sharing-entry__action\",attrs:{\"aria-label\":_vm.t('files_sharing', 'Open Sharing Details'),\"type\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.openSharingDetails(_vm.share)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=445a39ed&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharingTabDetailsView\"},[_c('div',{staticClass:\"sharingTabDetailsView__header\"},[_c('span',[(_vm.isUserShare)?_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.shareType !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}):_vm._e(),_vm._v(\" \"),_c(_vm.getShareTypeIcon(_vm.share.type),{tag:\"component\",attrs:{\"size\":32}})],1),_vm._v(\" \"),_c('span',[_c('h1',[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__quick-permissions\"},[_c('div',[_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.READ_ONLY.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]}},[_c('ViewIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'View only')))])],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.ALL.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]}},[_c('EditIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'Allow upload and editing')))])],1),_vm._v(\" \"),(_vm.allowsFileDrop)?_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.FILE_DROP.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]}},[_c('UploadIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'File drop')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('files_sharing', 'Upload only')))])],1):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":'custom',\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.expandCustomPermissions]}},[_c('DotsHorizontalIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'Custom permissions')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('files_sharing', _vm.customPermissionsList)))])],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__advanced-control\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"alignment\":\"end-reverse\"},on:{\"click\":function($event){_vm.advancedSectionAccordionExpanded = !_vm.advancedSectionAccordionExpanded}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('MenuDownIcon')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Advanced settings'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.advancedSectionAccordionExpanded)?_c('div',{staticClass:\"sharingTabDetailsView__advanced\"},[_c('section',[(_vm.isPublicShare)?_c('NcInputField',{attrs:{\"value\":_vm.share.label,\"type\":\"text\",\"label\":_vm.t('file_sharing', 'Share label')},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"label\", $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.isPasswordEnforced},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Set password'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcInputField',{attrs:{\"type\":_vm.hasUnsavedPassword ? 'text' : 'password',\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"error\":_vm.passwordError,\"required\":_vm.isPasswordEnforced,\"label\":_vm.t('file_sharing', 'Password')},on:{\"update:value\":_vm.onPasswordChange}}):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('span',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime: _vm.passwordExpirationTime }))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('span',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.isExpiryDateEnforced},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.isExpiryDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcDateTimePickerNative',{attrs:{\"id\":\"share-date-picker\",\"value\":new Date(_vm.share.expireDate),\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced,\"hide-label\":true,\"disabled\":_vm.isExpiryDateEnforced,\"placeholder\":_vm.t('file_sharing', 'Expiration date'),\"type\":\"date\"},on:{\"input\":_vm.onExpirationChange}}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":_vm.canChangeHideDownload,\"checked\":_vm.share.hideDownload},on:{\"update:checked\":[function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},function($event){return _vm.queueUpdate('hideDownload')}]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Hide download'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canTogglePasswordProtectedByTalkAvailable)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtectedByTalk},on:{\"update:checked\":[function($event){_vm.isPasswordProtectedByTalk=$event},_vm.onPasswordProtectedByTalkChange]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Video verification'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.writeNoteToRecipientIsChecked},on:{\"update:checked\":function($event){_vm.writeNoteToRecipientIsChecked=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.writeNoteToRecipientIsChecked)?[_c('textarea',{domProps:{\"value\":_vm.share.note},on:{\"input\":function($event){_vm.share.note = $event.target.value}}})]:_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.setCustomPermissions},on:{\"update:checked\":function($event){_vm.setCustomPermissions=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Custom permissions'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.setCustomPermissions)?_c('section',{staticClass:\"custom-permissions-group\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.allowsFileDrop && _vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_LINK,\"checked\":_vm.hasRead},on:{\"update:checked\":function($event){_vm.hasRead=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetCreate,\"checked\":_vm.canCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Create'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetEdit,\"checked\":_vm.canEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Update'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.config.isResharingAllowed && _vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_LINK)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetReshare,\"checked\":_vm.canReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Share'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isPublicShare)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDownload,\"checked\":_vm.canDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Download'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDelete,\"checked\":_vm.canDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")])],1):_vm._e()],2)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__footer\"},[(!_vm.isNewShare)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Delete share'),\"disabled\":false,\"readonly\":false,\"type\":\"tertiary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.removeShare.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":16}})]},proxy:true}],null,false,2746485232)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete share'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"button-group\"},[_c('NcButton',{on:{\"click\":function($event){return _vm.$emit('close-sharing-details')}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveShare}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.shareButtonText)+\"\\n\\t\\t\\t\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"sharingTabDetailsView\">\n\t\t<div class=\"sharingTabDetailsView__header\">\n\t\t\t<span>\n\t\t\t\t<NcAvatar v-if=\"isUserShare\"\n\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t:is-no-user=\"share.shareType !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t\t\t:user=\"share.shareWith\"\n\t\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\t\t:menu-position=\"'left'\"\n\t\t\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t\t\t<component :is=\"getShareTypeIcon(share.type)\" :size=\"32\" />\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"sharingTabDetailsView__quick-permissions\">\n\t\t\t<div>\n\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY.toString()\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t<ViewIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'View only') }}</span>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"bundledPermissions.ALL.toString()\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t<EditIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'Allow upload and editing') }}</span>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"allowsFileDrop\"\n\t\t\t\t\t:button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP.toString()\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t<UploadIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'File drop') }}</span>\n\t\t\t\t\t<small>{{ t('files_sharing', 'Upload only') }}</small>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"'custom'\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"expandCustomPermissions\">\n\t\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'Custom permissions') }}</span>\n\t\t\t\t\t<small>{{ t('files_sharing', customPermissionsList) }}</small>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"sharingTabDetailsView__advanced-control\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\talignment=\"end-reverse\"\n\t\t\t\t@click=\"advancedSectionAccordionExpanded = !advancedSectionAccordionExpanded\">\n\t\t\t\t{{ t('files_sharing', 'Advanced settings') }}\n\t\t\t\t<template #icon>\n\t\t\t\t\t<MenuDownIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div v-if=\"advancedSectionAccordionExpanded\" class=\"sharingTabDetailsView__advanced\">\n\t\t\t<section>\n\t\t\t\t<NcInputField v-if=\"isPublicShare\"\n\t\t\t\t\t:value.sync=\"share.label\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:label=\"t('file_sharing', 'Share label')\" />\n\t\t\t\t<template v-if=\"isPublicShare\">\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"isPasswordProtected\" :disabled=\"isPasswordEnforced\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Set password') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcInputField v-if=\"isPasswordProtected\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text' : 'password'\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\t:error=\"passwordError\"\n\t\t\t\t\t\t:required=\"isPasswordEnforced\"\n\t\t\t\t\t\t:label=\"t('file_sharing', 'Password')\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\" />\n\n\t\t\t\t\t<!-- Migrate icons and remote -> icon=\"icon-info\"-->\n\t\t\t\t\t<span v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime }) }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</span>\n\t\t\t\t</template>\n\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"hasExpirationDate\" :disabled=\"isExpiryDateEnforced\">\n\t\t\t\t\t{{ isExpiryDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcDateTimePickerNative v-if=\"hasExpirationDate\"\n\t\t\t\t\tid=\"share-date-picker\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:disabled=\"isExpiryDateEnforced\"\n\t\t\t\t\t:placeholder=\"t('file_sharing', 'Expiration date')\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t@input=\"onExpirationChange\" />\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isPublicShare\"\n\t\t\t\t\t:disabled=\"canChangeHideDownload\"\n\t\t\t\t\t:checked.sync=\"share.hideDownload\"\n\t\t\t\t\t@update:checked=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t{{ t('file_sharing', 'Hide download') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"canTogglePasswordProtectedByTalkAvailable\"\n\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t@update:checked=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t{{ t('file_sharing', 'Video verification') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t{{ t('file_sharing', 'Note to recipient') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<template v-if=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t<textarea :value=\"share.note\" @input=\"share.note = $event.target.value\" />\n\t\t\t\t</template>\n\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"setCustomPermissions\">\n\t\t\t\t\t{{ t('file_sharing', 'Custom permissions') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<section v-if=\"setCustomPermissions\" class=\"custom-permissions-group\">\n\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!allowsFileDrop && share.type === SHARE_TYPES.SHARE_TYPE_LINK\"\n\t\t\t\t\t\t:checked.sync=\"hasRead\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Read') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isFolder\" :disabled=\"!canSetCreate\" :checked.sync=\"canCreate\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Create') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetEdit\" :checked.sync=\"canEdit\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Update') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"config.isResharingAllowed && share.type !== SHARE_TYPES.SHARE_TYPE_LINK\"\n\t\t\t\t\t\t:disabled=\"!canSetReshare\"\n\t\t\t\t\t\t:checked.sync=\"canReshare\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Share') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"!isPublicShare\" :disabled=\"!canSetDownload\" :checked.sync=\"canDownload\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Download') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetDelete\" :checked.sync=\"canDelete\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Delete') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</section>\n\t\t\t</section>\n\t\t</div>\n\n\t\t<div class=\"sharingTabDetailsView__footer\">\n\t\t\t<NcButton v-if=\"!isNewShare\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Delete share')\"\n\t\t\t\t:disabled=\"false\"\n\t\t\t\t:readonly=\"false\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t@click.prevent=\"removeShare\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon :size=\"16\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_sharing', 'Delete share') }}\n\t\t\t</NcButton>\n\t\t\t<div class=\"button-group\">\n\t\t\t\t<NcButton @click=\"$emit('close-sharing-details')\">\n\t\t\t\t\t{{ t('file_sharing', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\" @click=\"saveShare\">\n\t\t\t\t\t{{ shareButtonText }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcDatetimePicker from '@nextcloud/vue/dist/Components/NcDatetimePicker.js'\nimport NcDateTimePickerNative from '@nextcloud/vue/dist/Components/NcDateTimePickerNative.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport CircleIcon from 'vue-material-design-icons/CircleOutline.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport EditIcon from 'vue-material-design-icons/Pencil.vue'\nimport EmailIcon from 'vue-material-design-icons/Email.vue'\nimport LinkIcon from 'vue-material-design-icons/Link.vue'\nimport GroupIcon from 'vue-material-design-icons/AccountGroup.vue'\nimport ShareIcon from 'vue-material-design-icons/ShareCircle.vue'\nimport UserIcon from 'vue-material-design-icons/AccountCircleOutline.vue'\nimport ViewIcon from 'vue-material-design-icons/Eye.vue'\nimport UploadIcon from 'vue-material-design-icons/Upload.vue'\nimport MenuDownIcon from 'vue-material-design-icons/MenuDown.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'SharingDetailsTab',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcInputField,\n\t\tNcDatetimePicker,\n\t\tNcDateTimePickerNative,\n\t\tNcCheckboxRadioSwitch,\n\t\tCloseIcon,\n\t\tCircleIcon,\n\t\tEditIcon,\n\t\tLinkIcon,\n\t\tGroupIcon,\n\t\tShareIcon,\n\t\tUserIcon,\n\t\tUploadIcon,\n\t\tViewIcon,\n\t\tMenuDownIcon,\n\t\tDotsHorizontalIcon,\n\t},\n\tmixins: [ShareTypes, ShareRequests, SharesMixin],\n\tprops: {\n\t\tshareRequestValue: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\twriteNoteToRecipientIsChecked: false,\n\t\t\tsharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\trevertSharingPermission: null,\n\t\t\tsetCustomPermissions: false,\n\t\t\tpasswordError: false,\n\t\t\tadvancedSectionAccordionExpanded: false,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t\tisFirstComponentLoad: true,\n\t\t\ttest: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = t('files_sharing', 'Share with ')\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\ttitle = title + this.share.shareWithDisplayName\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_LINK) {\n\t\t\t\ttitle = t('files_sharing', 'Share link')\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\n\t\t\treturn title\n\t\t},\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isDownloadChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isReadChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn !!this.share.expireDate || this.config.isDefaultInternalExpireDateEnforced\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(this.defaultExpiryDate)\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tthis.share.password = enabled ? await GeneratePassword() : ''\n\t\t\t\tthis.$set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t\tisPasswordEnforced() {\n\t\t\treturn this.isPublicShare && this.config.enforcePasswordForPublicLink\n\t\t},\n\t\tisExpiryDateEnforced() {\n\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t},\n\t\tdefaultExpiryDate() {\n\t\t\tif ((this.isGroupShare || this.isUserShare) && this.config.isDefaultInternalExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultInternalExpirationDate)\n\t\t\t} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultRemoteExpireDateEnabled)\n\t\t\t} else if (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\t\tisUserShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_USER\n\t\t},\n\t\tisGroupShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP\n\t\t},\n\t\tisRemoteShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP || this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t},\n\t\tisNewShare() {\n\t\t\treturn this.share.id === null || this.share.id === undefined\n\t\t},\n\t\tallowsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\thasFileDropPermissions() {\n\t\t\treturn this.share.permissions === this.bundledPermissions.FILE_DROP\n\t\t},\n\t\tshareButtonText() {\n\t\t\tif (this.isNewShare) {\n\t\t\t\treturn t('file_sharing', 'Save share')\n\t\t\t}\n\t\t\treturn t('file_sharing', 'Update share')\n\n\t\t},\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\t\t/**\n\t\t * Can the sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.canDownload() || this.canDownload)\n\t\t},\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPublicShare || !this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t\tcustomPermissionsList() {\n\t\t\tconst perms = []\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.READ)) {\n\t\t\t\tperms.push('read')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.CREATE)) {\n\t\t\t\tperms.push('create')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.UPDATE)) {\n\t\t\t\tperms.push('update')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.DELETE)) {\n\t\t\t\tperms.push('delete')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.SHARE)) {\n\t\t\t\tperms.push('share')\n\t\t\t}\n\t\t\tif (this.share.hasDownloadPermission) {\n\t\t\t\tperms.push('download')\n\t\t\t}\n\t\t\tconst capitalizeFirstAndJoin = array => array.map((item, index) => index === 0 ? item[0].toUpperCase() + item.substring(1) : item).join(', ')\n\n\t\t\treturn capitalizeFirstAndJoin(perms)\n\n\t\t},\n\t},\n\twatch: {\n\t\tsetCustomPermissions(isChecked) {\n\t\t\tif (isChecked) {\n\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t} else {\n\t\t\t\tthis.sharingPermission = this.revertSharingPermission\n\t\t\t}\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.initializePermissions()\n\t\tthis.initializeAttributes()\n\t\tconsole.debug('shareSentIn', this.share)\n\t\tconsole.debug('config', this.config)\n\t},\n\n\tmethods: {\n\t\tupdateAtomicPermissions({\n\t\t\tisReadChecked = this.hasRead,\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (isReadChecked ? ATOMIC_PERMISSIONS.READ : 0)\n\t\t\t\t| (isCreateChecked ? ATOMIC_PERMISSIONS.CREATE : 0)\n\t\t\t\t| (isDeleteChecked ? ATOMIC_PERMISSIONS.DELETE : 0)\n\t\t\t\t| (isEditChecked ? ATOMIC_PERMISSIONS.UPDATE : 0)\n\t\t\t\t| (isReshareChecked ? ATOMIC_PERMISSIONS.SHARE : 0)\n\t\t\tthis.share.permissions = permissions\n\t\t\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.$set(this.share, 'hasDownloadPermission', isDownloadChecked)\n\t\t\t}\n\t\t},\n\t\texpandCustomPermissions() {\n\t\t\tif (!this.advancedSectionAccordionExpanded) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\t\t\tthis.toggleCustomPermissions()\n\t\t},\n\t\ttoggleCustomPermissions() {\n\t\t\tthis.setCustomPermissions = this.sharingPermission === 'custom'\n\t\t},\n\t\tinitializeAttributes() {\n\n\t\t\tif (this.isNewShare) return\n\n\t\t\tlet hasAdvancedAttributes = false\n\t\t\tif (this.isValidShareAttribute(this.share.note)) {\n\t\t\t\tthis.writeNoteToRecipientIsChecked = true\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (this.isValidShareAttribute(this.share.password)) {\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (this.isValidShareAttribute(this.share.expireDate)) {\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (this.isValidShareAttribute(this.share.label)) {\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (hasAdvancedAttributes) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\n\t\t},\n\t\tinitializePermissions() {\n\t\t\tif (this.share.share_type) {\n\t\t\t\tthis.share.type = this.share.share_type\n\t\t\t}\n\t\t\t// shareType 0 (USER_SHARE) would evaluate to zero\n\t\t\t// Hence the use of hasOwnProperty\n\t\t\tif ('shareType' in this.share) {\n\t\t\t\tthis.share.type = this.share.shareType\n\t\t\t}\n\t\t\tif (this.isNewShare) {\n\t\t\t\tif (this.isPublicShare) {\n\t\t\t\t\tthis.sharingPermission = BUNDLED_PERMISSIONS.READ_ONLY.toString()\n\t\t\t\t} else {\n\t\t\t\t\tthis.sharingPermission = BUNDLED_PERMISSIONS.ALL.toString()\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tif (this.hasCustomPermissions || this.share.setCustomPermissions) {\n\t\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t\tthis.setCustomPermissions = true\n\t\t\t\t} else {\n\t\t\t\t\tthis.sharingPermission = this.share.permissions.toString()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync saveShare() {\n\t\t\tconst permissionsAndAttributes = ['permissions', 'attributes', 'note', 'expireDate']\n\t\t\tconst publicShareAttributes = ['label', 'password', 'hideDownload']\n\t\t\tif (this.isPublicShare) {\n\t\t\t\tpermissionsAndAttributes.push(...publicShareAttributes)\n\t\t\t}\n\t\t\tconst sharePermissionsSet = parseInt(this.sharingPermission)\n\t\t\tif (this.setCustomPermissions) {\n\t\t\t\tthis.updateAtomicPermissions()\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = sharePermissionsSet\n\t\t\t}\n\n\t\t\tif (!this.isFolder && this.share.permissions === BUNDLED_PERMISSIONS.ALL) {\n\t\t\t\t// It's not possible to create an existing file.\n\t\t\t\tthis.share.permissions = BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\t}\n\t\t\tif (!this.writeNoteToRecipientIsChecked) {\n\t\t\t\tthis.share.note = ''\n\t\t\t}\n\n\t\t\tif (this.isPasswordProtected) {\n\t\t\t\tif (this.isValidShareAttribute(this.share.newPassword)) {\n\t\t\t\t\tthis.share.password = this.share.newPassword\n\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\t} else {\n\t\t\t\t\tif (this.isPasswordEnforced) {\n\t\t\t\t\t\tthis.passwordError = true\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.share.password = ''\n\t\t\t}\n\n\t\t\tif (!this.hasExpirationDate) {\n\t\t\t\tthis.share.expireDate = ''\n\t\t\t}\n\n\t\t\tif (this.isNewShare) {\n\t\t\t\tconst incomingShare = {\n\t\t\t\t\tpermissions: this.share.permissions,\n\t\t\t\t\tshareType: this.share.type,\n\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\tattributes: this.share.attributes,\n\t\t\t\t\tnote: this.share.note,\n\t\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\t}\n\n\t\t\t\tif (this.hasExpirationDate) {\n\t\t\t\t\tincomingShare.expireDate = this.share.expireDate\n\t\t\t\t}\n\n\t\t\t\tif (this.isPasswordProtected) {\n\t\t\t\t\tincomingShare.password = this.share.password\n\t\t\t\t}\n\n\t\t\t\tconst share = await this.addShare(incomingShare, this.fileInfo)\n\t\t\t\tthis.share = share\n\t\t\t\tthis.$emit('add:share', this.share)\n\t\t\t} else {\n\t\t\t\tthis.queueUpdate(...permissionsAndAttributes)\n\t\t\t}\n\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {Share} share incoming share object\n\t\t * @param {object} fileInfo file data\n\t\t */\n\t\tasync addShare(share, fileInfo) {\n\t\t\tconsole.debug('Adding a new share from the input for', share)\n\t\t\ttry {\n\t\t\t\tconst path = (fileInfo.path + '/' + fileInfo.name).replace('//', '/')\n\t\t\t\tconst resultingShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: share.shareType,\n\t\t\t\t\tshareWith: share.shareWith,\n\t\t\t\t\tpermissions: share.permissions,\n\t\t\t\t\tattributes: JSON.stringify(fileInfo.shareAttributes),\n\t\t\t\t\t...(share.note ? { note: share.note } : {}),\n\t\t\t\t\t...(share.password ? { password: share.password } : {}),\n\t\t\t\t\t...(share.expireDate ? { expireDate: share.expireDate } : {}),\n\t\t\t\t})\n\t\t\t\treturn resultingShare\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\t// this.loading = false // No loader here yet\n\t\t\t}\n\t\t},\n\t\tasync removeShare() {\n\t\t\tawait this.onDelete()\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.passwordError = !this.isValidShareAttribute(password)\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\t\tisValidShareAttribute(value) {\n\t\t\tif ([null, undefined].includes(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (!(value.trim().length > 0)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t\tgetShareTypeIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_LINK:\n\t\t\t\treturn LinkIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\treturn UserIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn GroupIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn EmailIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn CircleIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn ShareIcon\n\t\t\tdefault:\n\t\t\t\treturn null // Or a default icon component if needed\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharingTabDetailsView {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\twidth: 96%;\n\tmargin: 0 auto;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0.2em;\n\n\t\tspan {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\th1 {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tpadding-left: 0.3em;\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__quick-permissions {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-bottom: 0.2em;\n\t\twidth: 100%;\n\t\tmargin: 0 auto;\n\t\tborder-radius: 0;\n\n\t\tdiv {\n\t\t\twidth: 100%;\n\n\t\t\tspan {\n\t\t\t\twidth: 100%;\n\n\t\t\t\tspan:nth-child(1) {\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tpadding: 0.1em;\n\t\t\t\t}\n\n\t\t\t\t::v-deep label {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-wrap: wrap;\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\n\t\t\t\t\t\t&:first-of-type {\n\t\t\t\t\t\t\tflex: 10%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:last-of-type {\n\t\t\t\t\t\t\tflex: 90%\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsmall {\n\t\t\t\t\t\tpadding-left: 10%;\n\t\t\t\t\t\tflex-basis: 100% !important;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__advanced-control {\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\n\t}\n\n\t&__advanced {\n\t\twidth: 100%;\n\t\tmargin-bottom: 0.5em;\n\t\ttext-align: left;\n\t\tpadding-left: 0;\n\n\t\tsection {\n\n\t\t\ttextarea,\n\t\t\tdiv.mx-datepicker {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttextarea {\n\t\t\t\theight: 80px;\n\t\t\t}\n\n\t\t\t/*\n The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__footer {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\n\t\t>button:first-child {\n\t\t\tcolor: rgb(223, 7, 7);\n\t\t\tbackground-color: #f5f5f5;\n\t\t}\n\n\t\t.button-group {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 16px;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=5cbfa7ba&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=5cbfa7ba&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingDetailsTab.vue?vue&type=template&id=5cbfa7ba&scoped=true&\"\nimport script from \"./SharingDetailsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingDetailsTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingDetailsTab.vue?vue&type=style&index=0&id=5cbfa7ba&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5cbfa7ba\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<template v-if=\"!showSharingDetailsView\">\n\t\t\t<!-- shares content -->\n\t\t\t<div class=\"sharingTab__content\">\n\t\t\t\t<!-- shared with me information -->\n\t\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t\t<template #avatar>\n\t\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t\t\t\t</template>\n\t\t\t\t</SharingEntrySimple>\n\n\t\t\t\t<!-- add new share input -->\n\t\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- link shares list -->\n\t\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\t\tref=\"linkShareList\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:shares=\"linkShares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- other shares list -->\n\t\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\t\tref=\"shareList\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- inherited shares -->\n\t\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t\t<!-- internal link copy -->\n\t\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t\t<!-- projects -->\n\t\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t:name=\"fileInfo.name\" />\n\t\t\t</div>\n\n\t\t\t<!-- additional entries, use it with cautious -->\n\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t</div>\n\t\t</template>\n\n\t\t<!-- share details -->\n\t\t<div v-else>\n\t\t\t<SharingDetailsTab :file-info=\"shareDetailsData.fileInfo\"\n\t\t\t\t:share=\"shareDetailsData.share\"\n\t\t\t\t@close-sharing-details=\"toggleShareDetailsView\"\n\t\t\t\t@add:share=\"addShare\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService.js'\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryInternal from '../components/SharingEntryInternal.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\nimport SharingInput from '../components/SharingInput.vue'\n\nimport SharingInherited from './SharingInherited.vue'\nimport SharingLinkList from './SharingLinkList.vue'\nimport SharingList from './SharingList.vue'\nimport SharingDetailsTab from './SharingDetailsTab.vue'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t\tSharingDetailsTab,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tdeleteEvent: null,\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t\tprojectsEnabled: loadState('core', 'projects_enabled', false),\n\t\t\tshowSharingDetailsView: false,\n\t\t\tshareDetailsData: {},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t\tthis.showSharingDetailsView = false\n\t\t\tthis.shareDetailsData = {}\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false },\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => { }) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item.id === share.id)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\ttoggleShareDetailsView(eventData) {\n\t\t\tif (eventData) {\n\t\t\t\tthis.shareDetailsData = eventData\n\t\t\t}\n\t\t\tthis.showSharingDetailsView = !this.showSharingDetailsView\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=4bd1eb33&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bd1eb33\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_vm._e(),_vm._v(\" \"),(!_vm.showSharingDetailsView)?[_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})]:_c('div',[_c('SharingDetailsTab',{attrs:{\"file-info\":_vm.shareDetailsData.fileInfo,\"share\":_vm.shareDetailsData.share},on:{\"close-sharing-details\":_vm.toggleShareDetailsView,\"add:share\":_vm.addShare,\"remove:share\":_vm.removeShare}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticonSvg: ShareVariant,\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tOC.debug && console.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-532437fc]{display:flex;justify-content:space-between;align-items:center;height:44px}.sharing-entry__summary[data-v-532437fc]{padding:8px;padding-left:10px;display:flex;flex-direction:column;justify-content:center;width:75%;min-width:75%}.sharing-entry__summary__desc[data-v-532437fc]{display:inline-block;flex-direction:column;justify-content:space-between;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-532437fc],.sharing-entry__summary__desc small[data-v-532437fc]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-532437fc]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,WAAA,CAEA,yCACC,WAAA,CACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,+CACC,oBAAA,CACA,qBAAA,CACA,6BAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\n\\t&__summary {\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 10px;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 75%;\\n\\t\\tmin-width: 75%;\\n\\n\\t\\t&__desc {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t\\tline-height: 1.2em;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\n\\t\\t\\tp,\\n\\t\\t\\tsmall {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-unique {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-6b7b22e9]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-6b7b22e9]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-6b7b22e9]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-6b7b22e9]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-6b7b22e9]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-6b7b22e9] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-6b7b22e9]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-6b7b22e9]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-6b7b22e9]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-6b7b22e9],.sharing-entry .action-item~.sharing-entry__loading[data-v-6b7b22e9]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-6b7b22e9]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".share-select[data-v-c003ab64]{position:relative;cursor:pointer}.share-select .trigger-text[data-v-c003ab64]{display:flex;flex-direction:row;align-items:center;font-size:12.5px;gap:2px;color:var(--color-primary-element)}.share-select .share-select-dropdown[data-v-c003ab64]{position:absolute;display:flex;flex-direction:column;top:100%;left:0;background-color:var(--color-main-background);border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.2);padding:4px 0;z-index:1}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]{padding:8px;font-size:12px;background:none;border:none;border-radius:0;font:inherit;cursor:pointer;color:inherit;outline:none;width:100%;white-space:nowrap;text-align:left}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]:hover{background-color:#f2f2f2}.share-select .share-select-dropdown .dropdown-item.selected[data-v-c003ab64]{background-color:#f0f0f0}.share-select .share-select-dropdown[data-v-c003ab64]{max-height:0;overflow:hidden;transition:max-height .3s ease}.share-select.active .share-select-dropdown[data-v-c003ab64]{max-height:200px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CACA,cAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,gBAAA,CACA,OAAA,CACA,kCAAA,CAGD,sDACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,MAAA,CACA,6CAAA,CACA,iBAAA,CACA,mCAAA,CACA,aAAA,CACA,SAAA,CAEA,qEACC,WAAA,CACA,cAAA,CACA,eAAA,CACA,WAAA,CACA,eAAA,CACA,YAAA,CACA,cAAA,CACA,aAAA,CACA,YAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CAEA,2EACC,wBAAA,CAGD,8EACC,wBAAA,CAMH,sDACC,YAAA,CACA,eAAA,CACA,8BAAA,CAGD,6DACC,gBAAA\",\"sourcesContent\":[\"\\n.share-select {\\n\\tposition: relative;\\n\\tcursor: pointer;\\n\\n\\t.trigger-text {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tfont-size: 12.5px;\\n\\t\\tgap: 2px;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.share-select-dropdown {\\n\\t\\tposition: absolute;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\ttop: 100%;\\n\\t\\tleft: 0;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tborder-radius: 8px;\\n\\t\\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\\n\\t\\tpadding: 4px 0;\\n\\t\\tz-index: 1;\\n\\n\\t\\t.dropdown-item {\\n\\t\\t\\tpadding: 8px;\\n\\t\\t\\tfont-size: 12px;\\n\\t\\t\\tbackground: none;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t\\tfont: inherit;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\toutline: none;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-align: left;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: #f2f2f2;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.selected {\\n\\t\\t\\t\\tbackground-color: #f0f0f0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Optional: Add a transition effect for smoother dropdown animation */\\n\\t.share-select-dropdown {\\n\\t\\tmax-height: 0;\\n\\t\\toverflow: hidden;\\n\\t\\ttransition: max-height 0.3s ease;\\n\\t}\\n\\n\\t&.active .share-select-dropdown {\\n\\t\\tmax-height: 200px;\\n\\t\\t/* Adjust the value to your desired height */\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-776f7b36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-776f7b36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-776f7b36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-776f7b36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-776f7b36]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharingTabDetailsView[data-v-5cbfa7ba]{display:flex;flex-direction:column;align-items:flex-start;width:96%;margin:0 auto}.sharingTabDetailsView__header[data-v-5cbfa7ba]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-5cbfa7ba]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-5cbfa7ba]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__quick-permissions[data-v-5cbfa7ba]{display:flex;justify-content:center;margin-bottom:.2em;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-5cbfa7ba]:nth-child(1){align-items:center;justify-content:center;color:var(--color-primary-element);padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label{display:flex;flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label span{display:flex}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label span:first-of-type{flex:10%}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label span:last-of-type{flex:90%}.sharingTabDetailsView__quick-permissions div span[data-v-5cbfa7ba] label small{padding-left:10%;flex-basis:100% !important}.sharingTabDetailsView__advanced-control[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-5cbfa7ba]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-5cbfa7ba]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-5cbfa7ba],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-5cbfa7ba]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-5cbfa7ba]{height:80px}.sharingTabDetailsView__advanced section span[data-v-5cbfa7ba] label{background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-5cbfa7ba]{padding-left:1.5em}.sharingTabDetailsView__footer[data-v-5cbfa7ba]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start}.sharingTabDetailsView__footer>button[data-v-5cbfa7ba]:first-child{color:#df0707;background-color:#f5f5f5}.sharingTabDetailsView__footer .button-group[data-v-5cbfa7ba]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-5cbfa7ba]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-5cbfa7ba]:first-child{margin-left:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,iBAAA,CAMH,2DACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,kCAAA,CACA,YAAA,CAGD,0EACC,YAAA,CACA,cAAA,CAEA,+EACC,YAAA,CAEA,6FACC,QAAA,CAGD,4FACC,QAAA,CAIF,gFACC,gBAAA,CACA,0BAAA,CASL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CAaA,qEACC,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAKH,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CAEA,mEACC,aAAA,CACA,wBAAA,CAGD,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,gBAAA,CAEA,iFACC,aAAA\",\"sourcesContent\":[\"\\n.sharingTabDetailsView {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: flex-start;\\n\\twidth: 96%;\\n\\tmargin: 0 auto;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0.2em;\\n\\n\\t\\tspan {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\th1 {\\n\\t\\t\\t\\tfont-size: 15px;\\n\\t\\t\\t\\tpadding-left: 0.3em;\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t}\\n\\n\\t&__quick-permissions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tmargin-bottom: 0.2em;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 0 auto;\\n\\t\\tborder-radius: 0;\\n\\n\\t\\tdiv {\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\tspan {\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\tspan:nth-child(1) {\\n\\t\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t\\tjustify-content: center;\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\t\\tpadding: 0.1em;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t::v-deep label {\\n\\t\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\t\\tflex-wrap: wrap;\\n\\n\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t\\t\\t\\t&:first-of-type {\\n\\t\\t\\t\\t\\t\\t\\tflex: 10%;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\t\\t\\t\\tflex: 90%\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tsmall {\\n\\t\\t\\t\\t\\t\\tpadding-left: 10%;\\n\\t\\t\\t\\t\\t\\tflex-basis: 100% !important;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t}\\n\\n\\t&__advanced-control {\\n\\t\\twidth: 100%;\\n\\n\\t\\tbutton {\\n\\t\\t\\tmargin-top: 0.5em;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__advanced {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 0.5em;\\n\\t\\ttext-align: left;\\n\\t\\tpadding-left: 0;\\n\\n\\t\\tsection {\\n\\n\\t\\t\\ttextarea,\\n\\t\\t\\tdiv.mx-datepicker {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\n\\t\\t\\ttextarea {\\n\\t\\t\\t\\theight: 80px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t/*\\n The following style is applied out of the component's scope\\n to remove padding from the label.checkbox-radio-switch__label,\\n which is used to group radio checkbox items. The use of ::v-deep\\n ensures that the padding is modified without being affected by\\n the component's scoping.\\n Without this achieving left alignment for the checkboxes would not\\n be possible.\\n */\\n\\t\\t\\tspan {\\n\\t\\t\\t\\t::v-deep label {\\n\\t\\t\\t\\t\\tbackground-color: initial !important;\\n\\t\\t\\t\\t\\tborder: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tsection.custom-permissions-group {\\n\\t\\t\\t\\tpadding-left: 1.5em;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\t>button:first-child {\\n\\t\\t\\tcolor: rgb(223, 7, 7);\\n\\t\\t\\tbackground-color: #f5f5f5;\\n\\t\\t}\\n\\n\\t\\t.button-group {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin-top: 16px;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\n\\t\\t\\t\\t&:first-child {\\n\\t\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-4bd1eb33]{margin:1rem auto}.sharingTab__content[data-v-4bd1eb33]{padding:0 6px}.sharingTab__additionalContent[data-v-4bd1eb33]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAGD,gDACC,aAAA\",\"sourcesContent\":[\"\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\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=\" + \"00434e4baa0d8e7b79f1\" + \"\";\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 = 7870;","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)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\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\t7870: 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} else installedChunks[chunkId] = 0;\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, [7874], () => (__webpack_require__(92792)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","Config","constructor","this","_shareConfig","loadState","isPublicUploadEnabled","allowPublicUploads","isShareWithLinkAllowed","document","getElementById","value","federatedShareDocLink","OC","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","_capabilities$files_s","_capabilities$files_s2","_capabilities$files_s3","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","_OC$getCapabilities$f","_OC$getCapabilities$f2","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","parseInt","config","minSearchStringLength","passwordPolicy","password_policy","Share","ocsData","_ocsData$attributes","ocs","data","hide_download","mail_send","attributes","JSON","parse","e","console","warn","_share","state","id","type","share_type","permissions","owner","uid_owner","ownerDisplayName","displayname_owner","shareWith","share_with","shareWithDisplayName","share_with_displayname","shareWithDisplayNameUnique","share_with_displayname_unique","shareWithLink","share_with_link","shareWithAvatar","share_with_avatar","uidFileOwner","uid_file_owner","displaynameFileOwner","displayname_file_owner","createdTime","stime","expireDate","expiration","date","token","note","label","mailSend","hideDownload","passwordExpirationTime","password_expiration_time","sendPasswordByTalk","send_password_by_talk","path","itemType","item_type","mimetype","fileSource","file_source","fileTarget","file_target","fileParent","file_parent","hasReadPermission","PERMISSION_READ","hasCreatePermission","PERMISSION_CREATE","hasDeletePermission","PERMISSION_DELETE","hasUpdatePermission","PERMISSION_UPDATE","hasSharePermission","PERMISSION_SHARE","hasDownloadPermission","i","attr","scope","key","setAttribute","attrUpdate","splice","push","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","parent","storageId","storage_id","storage","itemSource","item_source","status","SHARE_TYPES","ShareTypes","name","components","NcActions","props","title","String","default","required","subtitle","isUnique","Boolean","ariaExpanded","computed","ariaExpandedValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_t","_v","_s","_e","$slots","ref","attrs","NcActionLink","SharingEntrySimple","fileInfo","Object","copied","copySuccess","internalLink","window","location","protocol","host","generateUrl","copyLinkTooltip","t","internalLinkSubtitle","methods","navigator","clipboard","writeText","showSuccess","$refs","shareEntrySimple","actionsComponent","$el","focus","error","setTimeout","scopedSlots","_u","fn","proxy","on","$event","preventDefault","copyLink","apply","arguments","async","api","generate","request","axios","info","showError","array","Uint8Array","self","crypto","getRandomValues","length","charAt","passwordSet","shareUrl","generateOcsUrl","_ref","shareType","publicUpload","_request$data","share","emit","_error$response","_error$response$data","_error$response$data$","_error$response$data$2","errorMessage","response","meta","message","Notification","showTemporary","_request$data2","concat","_error$response2","_error$response2$data","_error$response2$data2","_error$response2$data3","properties","_request$data3","_error$response3","_error$response3$data","_error$response3$data2","_error$response3$data3","Error","shareRequestObject","handler","suggestions","query","mapShareRequestToShareObject","shareDetails","$emit","openShareDetailsForCustomSettings","setCustomPermissions","openSharingDetails","is_no_user","isNoUser","user","displayName","NcSelect","mixins","ShareRequests","ShareDetails","shares","Array","linkShares","reshare","canReshare","loading","recommendations","ShareSearch","OCA","Sharing","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","trim","noResultText","mounted","getRecommendations","handleOpen","select","debounceGetSuggestions","search","lookup","query_lookup_default","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","SHARE_TYPE_GUEST","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH","SHARE_TYPE_EMAIL","params","format","perPage","exact","rawExactSuggestions","values","reduce","arr","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","map","formatForMultiselect","sort","a","b","lookupEntry","lookupEnabled","filter","result","condition","allSuggestions","nameCounts","item","desc","debounce","getSuggestions","rawRecommendations","getCurrentUser","uid","indexOf","sharesObj","obj","shareTypeToIcon","icon","iconTitle","_result$shareWithDisp","server","_result$shareWithDesc","shareWithDescription","uuid","$nextTick","$children","open","debug","GeneratePassword","replace","createShare","sharePermissions","default_permissions","stringify","shareAttributes","newPassword","Promise","resolve","clear-search-on-blur","asyncFind","model","callback","$$v","expression","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","ALL_FILE","hasPermissions","initialPermissionSet","permissionsToCheck","SharesRequests","_this$share","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isFolder","isPublicShare","_this$share$shareType","SHARE_TYPE_LINK","includes","isShareOwner","hasCustomPermissions","checkShare","expirationDate","isValid","parseDateString","_date$match","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","queueUpdate","deleteShare","_len","propertyNames","_key","forEach","toString","add","updatedShare","updateShare","propertyName","onSyncError","property","propertyEl","focusable","querySelector","debounceQueueUpdate","NcActionButton","NcActionText","NcAvatar","SharesMixin","viaFileTargetUrl","fileid","viaFolderName","basename","initiator","folder","onDelete","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","watch","resetState","toggleInheritedShares","fetchInheritedShares","url","removeShare","index","findIndex","stopPropagation","_l","DropdownIcon","toggle","selectedOption","showDropdown","focusTrap","canViewText","canEditText","fileDropText","customPermissionsText","preSelectedOption","supportsFileDrop","_this$share$type","dropDownPermissionValue","dropdownId","Math","random","substr","toggleValue","initializeComponent","addEventListener","handleClickOutside","beforeDestroy","removeEventListener","toggleDropdown","useFocusTrap","clearFocusTrap","closeDropdown","selectOption","option","event","dropdownContainer","quickShareDropdownContainer","contains","target","assign","_nc_focus_trap","dropdownElement","quickShareDropdown","createFocusTrap","allowOutsideClick","trapStack","activate","_this$focusTrap","deactivate","shiftFocusForward","nextElement","activeElement","nextElementSibling","firstElementChild","shiftFocusBackward","previousElement","previousElementSibling","lastElementChild","handleArrowUp","handleArrowDown","class","_k","keyCode","action","is","_g","_b","tag","handlers","text","ExternalShareAction","NcActionInput","NcActionSeparator","Tune","QuickShareSelect","Number","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","isEmailShareType","hasExpirationDate","dateMaxEnforced","isPasswordProtected","Vue","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingPassword","pendingEnforcedPassword","pendingExpirationDate","shareLink","actionsTooltip","externalLegacyLinkActions","actions","externalLinkActions","isPasswordPolicyEnabled","canChangeHideDownload","some","shareAttribute","shareDefaults","pushNewLinkShare","component","update","newShare","_data$response","_data$response$data","_data$response$data$o","_data$response$data$o2","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","toggleQuickShareSelect","SharingEntryLink","onNewLinkShare","minLength","canLinkShare","hasLinkShares","hasShares","addShare","unshift","awaitForShare","find","NcButton","DotsHorizontalIcon","tooltip","hasStatus","isArray","SharingEntry","NcInputField","NcDatetimePicker","NcDateTimePickerNative","NcCheckboxRadioSwitch","CloseIcon","CircleIcon","EditIcon","LinkIcon","GroupIcon","ShareIcon","UserIcon","UploadIcon","ViewIcon","MenuDownIcon","shareRequestValue","writeNoteToRecipientIsChecked","sharingPermission","revertSharingPermission","passwordError","advancedSectionAccordionExpanded","bundledPermissions","isFirstComponentLoad","test","checked","updateAtomicPermissions","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","canDownload","isDownloadChecked","hasRead","isReadChecked","defaultExpiryDate","isRemote","isSetDownloadButtonVisible","isPasswordEnforced","isExpiryDateEnforced","isGroupShare","isUserShare","isRemoteShare","isNewShare","allowsFileDrop","hasFileDropPermissions","shareButtonText","canSetEdit","canSetCreate","canSetDelete","canSetReshare","canSetDownload","customPermissionsList","perms","toUpperCase","substring","join","isChecked","beforeMount","initializePermissions","initializeAttributes","expandCustomPermissions","toggleCustomPermissions","hasAdvancedAttributes","isValidShareAttribute","permissionsAndAttributes","sharePermissionsSet","incomingShare","getShareTypeIcon","EmailIcon","domProps","saveShare","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","SharingDetailsTab","deleteEvent","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","showSharingDetailsView","shareDetailsData","isSharedWithMe","keys","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","clearInterval","updateExpirationSubtitle","unix","relativetime","Util","relativeModifiedDate","_ref2","group","escape","circle","conversation","shareWithTitle","setInterval","shareOwnerId","currentUser","shareOwner","listComponent","shareList","linkShareList","toggleShareDetailsView","eventData","emptyContentWithSections","section","refInFor","_state","addNewResult","registerAction","every","check","_sections","registerSection","n","View","SharingTab","TabInstance","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","el","context","$destroy","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","promises","u","g","globalThis","Function","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","currentScript","p","baseURI","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-files_sharing_tab.js?v=fd28eb61ff636e1b7f85","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/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?95b1","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?1179","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareDetails.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?2e81","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?58c8","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?3fbf","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?de0b","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?1d81","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?4441","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?0b36","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?82b4","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?68ec","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?64e9","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?e340","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?0659","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?7f2e","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?86c7","webpack://nextcloud/./apps/files_sharing/src/views/SharingDetailsTab.vue?10fc","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?440a","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingDetailsTab.vue?vue&type=style&index=0&id=0f46cc1b&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=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\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) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default class Config {\n\n\tconstructor() {\n\t\tthis._shareConfig = loadState('files_sharing', 'shareConfig', {})\n\t}\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn this._shareConfig.allowPublicUploads\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes.splice(i, 1, attrUpdate)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionLink',{attrs:{\"href\":_vm.internalLink,\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions v-if=\"$slots['default']\"\n\t\t\tref=\"actionsComponent\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=776f7b36&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=776f7b36&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"776f7b36\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionLink :href=\"internalLink\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.prevent=\"copyLink\" />\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport SharingEntrySimple from './SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy internal link to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=71a426be&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71a426be\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"open\":_vm.handleOpen,\"search\":_vm.asyncFind,\"option:selected\":_vm.openSharingDetails},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService.js'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\tshowSuccess(t('files_sharing', 'Password created successfully'))\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share.js'\nimport { emit } from '@nextcloud/event-bus'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate] expire the shareautomatically after\n\t\t * @param {string} [data.label] custom label\n\t\t * @param {string} [data.attributes] Share attributes encoded as json\n\t\t * @param data.note\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, note, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, note, attributes })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\tconst share = new Share(request.data.ocs.data)\n\t\t\t\temit('files_sharing:share:created', { share })\n\t\t\t\treturn share\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' },\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\temit('files_sharing:share:deleted', { id })\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' },\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\temit('files_sharing:share:updated', { id })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' },\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","import Share from '../models/Share.js'\n\nexport default {\n\tmethods: {\n\t\tasync openSharingDetails(shareRequestObject) {\n\t\t\tlet share = {}\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\t// TODO : Better name/interface for handler required\n\t\t\t// For example `externalAppCreateShareHook` with proper documentation\n\t\t\tif (shareRequestObject.handler) {\n\t\t\t\tif (this.suggestions) {\n\t\t\t\t\tshareRequestObject.suggestions = this.suggestions\n\t\t\t\t\tshareRequestObject.fileInfo = this.fileInfo\n\t\t\t\t\tshareRequestObject.query = this.query\n\t\t\t\t}\n\t\t\t\tshare = await shareRequestObject.handler(shareRequestObject)\n\t\t\t\tshare = new Share(share)\n\t\t\t} else {\n\t\t\t\tshare = this.mapShareRequestToShareObject(shareRequestObject)\n\t\t\t}\n\n\t\t\tconst shareDetails = {\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tshare,\n\t\t\t}\n\n\t\t\tthis.$emit('open-sharing-details', shareDetails)\n\t\t},\n\t\topenShareDetailsForCustomSettings(share) {\n\t\t\tshare.setCustomPermissions = true\n\t\t\tthis.openSharingDetails(share)\n\t\t},\n\t\tmapShareRequestToShareObject(shareRequestObject) {\n\n\t\t\tif (shareRequestObject.id) {\n\t\t\t\treturn shareRequestObject\n\t\t\t}\n\n\t\t\tconst share = {\n\t\t\t\tattributes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\tkey: 'download',\n\t\t\t\t\t\tscope: 'permissions',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tshare_type: shareRequestObject.shareType,\n\t\t\t\tshare_with: shareRequestObject.shareWith,\n\t\t\t\tis_no_user: shareRequestObject.isNoUser,\n\t\t\t\tuser: shareRequestObject.shareWith,\n\t\t\t\tshare_with_displayname: shareRequestObject.displayName,\n\t\t\t\tsubtitle: shareRequestObject.subtitle,\n\t\t\t\tpermissions: shareRequestObject.permissions,\n\t\t\t\texpiration: '',\n\t\t\t}\n\n\t\t\treturn new Share(share)\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tv-model=\"value\"\n\t\t\tinput-id=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\t@open=\"handleOpen\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"openSharingDetails\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport Config from '../services/ConfigService.js'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests, ShareDetails],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t\tvalue: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\t// Fix dropdown not opening when viewer is open, see https://github.com/nextcloud/viewer/pull/1319\n\t\t\temit('viewer:trapElements:changed', this.$refs.select.$el)\n\t\t},\n\n\t\tasync asyncFind(query) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-circle',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Circle'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'ScienceMesh'),\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\t...this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\t// Clear the displayed selection\n\t\t\tthis.value = null\n\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again on error\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=608786b5&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&id=608786b5&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n\tALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { },\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\t\tisPublicShare() {\n\t\t\tconst shareType = this.share.shareType ?? this.share.type\n\t\t\treturn [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(shareType)\n\t\t},\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\t\thasCustomPermissions() {\n\t\t\tconst bundledPermissions = [\n\t\t\t\tBUNDLED_PERMISSIONS.ALL,\n\t\t\t\tBUNDLED_PERMISSIONS.READ_ONLY,\n\t\t\t\tBUNDLED_PERMISSIONS.FILE_DROP,\n\t\t\t]\n\t\t\treturn !bundledPermissions.includes(this.share.permissions)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = share.expirationDate\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(new Date(date))\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\t\t\t\t\t\tshowSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] }))\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t\tshowError(t('files_sharing', message))\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=038f97f0&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"038f97f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.js'\nimport SharingEntryInherited from '../components/SharingEntryInherited.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=05b67dc8&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05b67dc8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare,\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div ref=\"quickShareDropdownContainer\"\n\t\t:class=\"{ 'active': showDropdown, 'share-select': true }\">\n\t\t<span :id=\"dropdownId\"\n\t\t\tclass=\"trigger-text\"\n\t\t\t:aria-expanded=\"showDropdown\"\n\t\t\t:aria-haspopup=\"true\"\n\t\t\taria-label=\"Quick share options dropdown\"\n\t\t\t@click=\"toggleDropdown\">\n\t\t\t{{ selectedOption }}\n\t\t\t<DropdownIcon :size=\"15\" />\n\t\t</span>\n\t\t<div v-if=\"showDropdown\"\n\t\t\tref=\"quickShareDropdown\"\n\t\t\tclass=\"share-select-dropdown\"\n\t\t\t:aria-labelledby=\"dropdownId\"\n\t\t\ttabindex=\"0\"\n\t\t\t@keydown.down=\"handleArrowDown\"\n\t\t\t@keydown.up=\"handleArrowUp\"\n\t\t\t@keydown.esc=\"closeDropdown\">\n\t\t\t<button v-for=\"option in options\"\n\t\t\t\t:key=\"option\"\n\t\t\t\t:class=\"{ 'dropdown-item': true, 'selected': option === selectedOption }\"\n\t\t\t\t:aria-selected=\"option === selectedOption\"\n\t\t\t\t@click=\"selectOption(option)\">\n\t\t\t\t{{ option }}\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\n\nimport {\n\tBUNDLED_PERMISSIONS,\n\tATOMIC_PERMISSIONS,\n} from '../lib/SharePermissionsToolBox.js'\n\nimport { createFocusTrap } from 'focus-trap'\n\nexport default {\n\tcomponents: {\n\t\tDropdownIcon,\n\t},\n\tmixins: [SharesMixin, ShareDetails, ShareTypes],\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttoggle: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselectedOption: '',\n\t\t\tshowDropdown: this.toggle,\n\t\t\tfocusTrap: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcanViewText() {\n\t\t\treturn t('files_sharing', 'View only')\n\t\t},\n\t\tcanEditText() {\n\t\t\treturn t('files_sharing', 'Can edit')\n\t\t},\n\t\tfileDropText() {\n\t\t\treturn t('files_sharing', 'File drop')\n\t\t},\n\t\tcustomPermissionsText() {\n\t\t\treturn t('files_sharing', 'Custom permissions')\n\t\t},\n\t\tpreSelectedOption() {\n\t\t\t// We remove the share permission for the comparison as it is not relevant for bundled permissions.\n\t\t\tif ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.READ_ONLY) {\n\t\t\t\treturn this.canViewText\n\t\t\t} else if (this.share.permissions === BUNDLED_PERMISSIONS.ALL || this.share.permissions === BUNDLED_PERMISSIONS.ALL_FILE) {\n\t\t\t\treturn this.canEditText\n\t\t\t} else if ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.FILE_DROP) {\n\t\t\t\treturn this.fileDropText\n\t\t\t}\n\n\t\t\treturn this.customPermissionsText\n\n\t\t},\n\t\toptions() {\n\t\t\tconst options = [this.canViewText, this.canEditText]\n\t\t\tif (this.supportsFileDrop) {\n\t\t\t\toptions.push(this.fileDropText)\n\t\t\t}\n\t\t\toptions.push(this.customPermissionsText)\n\n\t\t\treturn options\n\t\t},\n\t\tsupportsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tconst shareType = this.share.type ?? this.share.shareType\n\t\t\t\treturn [this.SHARE_TYPES.SHARE_TYPE_LINK, this.SHARE_TYPES.SHARE_TYPE_EMAIL].includes(shareType)\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tdropDownPermissionValue() {\n\t\t\tswitch (this.selectedOption) {\n\t\t\tcase this.canEditText:\n\t\t\t\treturn this.isFolder ? BUNDLED_PERMISSIONS.ALL : BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\tcase this.fileDropText:\n\t\t\t\treturn BUNDLED_PERMISSIONS.FILE_DROP\n\t\t\tcase this.customPermissionsText:\n\t\t\t\treturn 'custom'\n\t\t\tcase this.canViewText:\n\t\t\tdefault:\n\t\t\t\treturn BUNDLED_PERMISSIONS.READ_ONLY\n\t\t\t}\n\t\t},\n\t\tdropdownId() {\n\t\t\t// Generate a unique ID for ARIA attributes\n\t\t\treturn `dropdown-${Math.random().toString(36).substr(2, 9)}`\n\t\t},\n\t},\n\twatch: {\n\t\ttoggle(toggleValue) {\n\t\t\tthis.showDropdown = toggleValue\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.initializeComponent()\n\t\twindow.addEventListener('click', this.handleClickOutside)\n\t},\n\tbeforeDestroy() {\n\t\t// Remove the global click event listener to prevent memory leaks\n\t\twindow.removeEventListener('click', this.handleClickOutside)\n\t},\n\tmethods: {\n\t\ttoggleDropdown() {\n\t\t\tthis.showDropdown = !this.showDropdown\n\t\t\tif (this.showDropdown) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.useFocusTrap()\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.clearFocusTrap()\n\t\t\t}\n\t\t},\n\t\tcloseDropdown() {\n\t\t\tthis.clearFocusTrap()\n\t\t\tthis.showDropdown = false\n\t\t},\n\t\tselectOption(option) {\n\t\t\tthis.selectedOption = option\n\t\t\tif (option === this.customPermissionsText) {\n\t\t\t\tthis.$emit('open-sharing-details')\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = this.dropDownPermissionValue\n\t\t\t\tthis.queueUpdate('permissions')\n\t\t\t}\n\t\t\tthis.showDropdown = false\n\t\t},\n\t\tinitializeComponent() {\n\t\t\tthis.selectedOption = this.preSelectedOption\n\t\t},\n\t\thandleClickOutside(event) {\n\t\t\tconst dropdownContainer = this.$refs.quickShareDropdownContainer\n\n\t\t\tif (dropdownContainer && !dropdownContainer.contains(event.target)) {\n\t\t\t\tthis.showDropdown = false\n\t\t\t}\n\t\t},\n\t\tuseFocusTrap() {\n\t\t\t// Create global stack if undefined\n\t\t\t// Use in with trapStack to avoid conflicting traps\n\t\t\tObject.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })\n\t\t\tconst dropdownElement = this.$refs.quickShareDropdown\n\t\t\tthis.focusTrap = createFocusTrap(dropdownElement, {\n\t\t\t\tallowOutsideClick: true,\n\t\t\t\ttrapStack: window._nc_focus_trap,\n\t\t\t})\n\n\t\t\tthis.focusTrap.activate()\n\t\t},\n\t\tclearFocusTrap() {\n\t\t\tthis.focusTrap?.deactivate()\n\t\t\tthis.focusTrap = null\n\t\t},\n\t\tshiftFocusForward() {\n\t\t\tconst currentElement = document.activeElement\n\t\t\tlet nextElement = currentElement.nextElementSibling\n\t\t\tif (!nextElement) {\n\t\t\t\tnextElement = this.$refs.quickShareDropdown.firstElementChild\n\t\t\t}\n\t\t\tnextElement.focus()\n\t\t},\n\t\tshiftFocusBackward() {\n\t\t\tconst currentElement = document.activeElement\n\t\t\tlet previousElement = currentElement.previousElementSibling\n\t\t\tif (!previousElement) {\n\t\t\t\tpreviousElement = this.$refs.quickShareDropdown.lastElementChild\n\t\t\t}\n\t\t\tpreviousElement.focus()\n\t\t},\n\t\thandleArrowUp() {\n\t\t\tthis.shiftFocusBackward()\n\t\t},\n\t\thandleArrowDown() {\n\t\t\tthis.shiftFocusForward()\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.share-select {\n\tposition: relative;\n\tcursor: pointer;\n\n\t.trigger-text {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tfont-size: 12.5px;\n\t\tgap: 2px;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.share-select-dropdown {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttop: 100%;\n\t\tleft: 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 8px;\n\t\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\t\tpadding: 4px 0;\n\t\tz-index: 1;\n\n\t\t.dropdown-item {\n\t\t\tpadding: 8px;\n\t\t\tfont-size: 12px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tborder-radius: 0;\n\t\t\tfont: inherit;\n\t\t\tcursor: pointer;\n\t\t\tcolor: inherit;\n\t\t\toutline: none;\n\t\t\twidth: 100%;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-align: left;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #f2f2f2;\n\t\t\t}\n\n\t\t\t&.selected {\n\t\t\t\tbackground-color: #f0f0f0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Optional: Add a transition effect for smoother dropdown animation */\n\t.share-select-dropdown {\n\t\tmax-height: 0;\n\t\toverflow: hidden;\n\t\ttransition: max-height 0.3s ease;\n\t}\n\n\t&.active .share-select-dropdown {\n\t\tmax-height: 200px;\n\t\t/* Adjust the value to your desired height */\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryQuickShareSelect.vue?vue&type=template&id=c003ab64&scoped=true&\"\nimport script from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryQuickShareSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryQuickShareSelect.vue?vue&type=style&index=0&id=c003ab64&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c003ab64\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"quickShareDropdownContainer\",class:{ 'active': _vm.showDropdown, 'share-select': true }},[_c('span',{staticClass:\"trigger-text\",attrs:{\"id\":_vm.dropdownId,\"aria-expanded\":_vm.showDropdown,\"aria-haspopup\":true,\"aria-label\":\"Quick share options dropdown\"},on:{\"click\":_vm.toggleDropdown}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.selectedOption)+\"\\n\\t\\t\"),_c('DropdownIcon',{attrs:{\"size\":15}})],1),_vm._v(\" \"),(_vm.showDropdown)?_c('div',{ref:\"quickShareDropdown\",staticClass:\"share-select-dropdown\",attrs:{\"aria-labelledby\":_vm.dropdownId,\"tabindex\":\"0\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.handleArrowDown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.handleArrowUp.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.closeDropdown.apply(null, arguments)}]}},_vm._l((_vm.options),function(option){return _c('button',{key:option,class:{ 'dropdown-item': true, 'selected': option === _vm.selectedOption },attrs:{\"aria-selected\":option === _vm.selectedOption},on:{\"click\":function($event){return _vm.selectOption(option)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(option)+\"\\n\\t\\t\")])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share.js'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=0f0e27d0&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<NcAvatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\" @click.prevent=\"toggleQuickShareSelect\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t\t<QuickShareSelect v-if=\"share && share.permissions !== undefined\"\n\t\t\t\t:share=\"share\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:toggle=\"showDropdown\"\n\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\" />\n\t\t</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingEnforcedPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingEnforcedPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox v-else-if=\"pendingPassword\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingEnforcedPassword || share.password\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<NcActionButton :disabled=\"saving\"\n\t\t\t\t\t\t@click.prevent=\"openSharingDetails\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Customize link') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<NcActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:title=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\" />\n\t\t</NcActions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nimport Tune from 'vue-material-design-icons/Tune.vue'\n\nimport QuickShareSelect from './SharingEntryQuickShareSelect.vue'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tExternalShareAction,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tTune,\n\t\tQuickShareSelect,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowDropdown: false,\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enableLinkPasswordByDefault && this.share && !this.share.id\n\t\t},\n\t\tpendingEnforcedPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enableLinkPasswordByDefault || this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.pending = false\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password default or enforced, pre-fill with random one\n\t\t\t\tif (this.config.enableLinkPasswordByDefault || this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\t\t\t\tshowSuccess(t('files_sharing', 'Link share created'))\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('files_sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t\tthrow data\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submitted.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\n\t\ttoggleQuickShareSelect() {\n\t\t\tthis.showDropdown = !this.showDropdown\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=6b7b22e9&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=6b7b22e9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b7b22e9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:index=\"shares.length > 1 ? index + 1 : null\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\"\n\t\t\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes, ShareDetails],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleQuickShareSelect.apply(null, arguments)}}},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share && _vm.share.permissions !== undefined)?_c('QuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo,\"toggle\":_vm.showDropdown},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}}):_vm._e()],1),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip,\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingEnforcedPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingEnforcedPassword)?_c('NcActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.pendingPassword)?_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingEnforcedPassword || _vm.share.password)?_c('NcActionInput',{staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('NcActionButton',{attrs:{\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.openSharingDetails.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Customize link'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function({icon, url, name},index){return _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"title\":_vm.t('files_sharing', 'Create a new share link'),\"aria-label\":_vm.t('files_sharing', 'Create a new share link'),\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}}):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=9d43db72&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"open-sharing-details\":function($event){return _vm.openSharingDetails(share)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<div class=\"sharing-entry__summary\" @click.prevent=\"toggleQuickShareSelect\">\n\t\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t\t:title=\"tooltip\"\n\t\t\t\t:aria-label=\"tooltip\"\n\t\t\t\t:href=\"share.shareWithLink\"\n\t\t\t\tclass=\"sharing-entry__summary__desc\">\n\t\t\t\t<span>{{ title }}\n\t\t\t\t\t<span v-if=\"!isUnique\" class=\"sharing-entry__summary__desc-unique\"> ({{\n\t\t\t\t\t\tshare.shareWithDisplayNameUnique }})</span>\n\t\t\t\t\t<small v-if=\"hasStatus && share.status.message\">({{ share.status.message }})</small>\n\t\t\t\t</span>\n\t\t\t</component>\n\t\t\t<QuickShareSelect :share=\"share\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:toggle=\"showDropdown\"\n\t\t\t\t@open-sharing-details=\"openShareDetailsForCustomSettings(share)\" />\n\t\t</div>\n\t\t<NcButton class=\"sharing-entry__action\"\n\t\t\t:aria-label=\"t('files_sharing', 'Open Sharing Details')\"\n\t\t\ttype=\"tertiary-no-background\"\n\t\t\t@click=\"openSharingDetails(share)\">\n\t\t\t<template #icon>\n\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport QuickShareSelect from './SharingEntryQuickShareSelect.vue'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcAvatar,\n\t\tDotsHorizontalIcon,\n\t\tNcSelect,\n\t\tQuickShareSelect,\n\t},\n\n\tmixins: [SharesMixin, ShareDetails],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowDropdown: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t\ttoggleQuickShareSelect() {\n\t\t\tthis.showDropdown = !this.showDropdown\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\theight: 44px;\n\n\t&__summary {\n\t\tpadding: 8px;\n\t\tpadding-left: 10px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\twidth: 75%;\n\t\tmin-width: 75%;\n\n\t\t&__desc {\n\t\t\tdisplay: inline-block;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding-bottom: 0;\n\t\t\tline-height: 1.2em;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t\tp,\n\t\t\tsmall {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\n\t\t\t&-unique {\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t}\n\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=532437fc&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=532437fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"532437fc\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@open-sharing-details=\"openSharingDetails(share)\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport ShareDetails from '../mixins/ShareDetails.js'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes, ShareDetails],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { },\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__summary\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleQuickShareSelect.apply(null, arguments)}}},[_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__summary__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\"),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__summary__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e(),_vm._v(\" \"),(_vm.hasStatus && _vm.share.status.message)?_c('small',[_vm._v(\"(\"+_vm._s(_vm.share.status.message)+\")\")]):_vm._e()])]),_vm._v(\" \"),_c('QuickShareSelect',{attrs:{\"share\":_vm.share,\"file-info\":_vm.fileInfo,\"toggle\":_vm.showDropdown},on:{\"open-sharing-details\":function($event){return _vm.openShareDetailsForCustomSettings(_vm.share)}}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"sharing-entry__action\",attrs:{\"aria-label\":_vm.t('files_sharing', 'Open Sharing Details'),\"type\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.openSharingDetails(_vm.share)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('DotsHorizontalIcon',{attrs:{\"size\":20}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=445a39ed&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharingTabDetailsView\"},[_c('div',{staticClass:\"sharingTabDetailsView__header\"},[_c('span',[(_vm.isUserShare)?_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.shareType !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}):_vm._e(),_vm._v(\" \"),_c(_vm.getShareTypeIcon(_vm.share.type),{tag:\"component\",attrs:{\"size\":32}})],1),_vm._v(\" \"),_c('span',[_c('h1',[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__quick-permissions\"},[_c('div',[_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.READ_ONLY.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]}},[_c('ViewIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'View only')))])],1),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.ALL.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]}},[_c('EditIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'Allow upload and editing')))])],1),_vm._v(\" \"),(_vm.allowsFileDrop)?_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":_vm.bundledPermissions.FILE_DROP.toString(),\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.toggleCustomPermissions]}},[_c('UploadIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'File drop')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('files_sharing', 'Upload only')))])],1):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"button-variant\":true,\"checked\":_vm.sharingPermission,\"value\":'custom',\"name\":\"sharing_permission_radio\",\"type\":\"radio\",\"button-variant-grouped\":\"vertical\"},on:{\"update:checked\":[function($event){_vm.sharingPermission=$event},_vm.expandCustomPermissions]}},[_c('DotsHorizontalIcon',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'Custom permissions')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('files_sharing', _vm.customPermissionsList)))])],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__advanced-control\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"alignment\":\"end-reverse\"},on:{\"click\":function($event){_vm.advancedSectionAccordionExpanded = !_vm.advancedSectionAccordionExpanded}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('MenuDownIcon')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Advanced settings'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.advancedSectionAccordionExpanded)?_c('div',{staticClass:\"sharingTabDetailsView__advanced\"},[_c('section',[(_vm.isPublicShare)?_c('NcInputField',{attrs:{\"value\":_vm.share.label,\"type\":\"text\",\"label\":_vm.t('file_sharing', 'Share label')},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"label\", $event)}}}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.isPasswordEnforced},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Set password'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcInputField',{attrs:{\"type\":_vm.hasUnsavedPassword ? 'text' : 'password',\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"error\":_vm.passwordError,\"required\":_vm.isPasswordEnforced,\"label\":_vm.t('file_sharing', 'Password')},on:{\"update:value\":_vm.onPasswordChange}}):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('span',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime: _vm.passwordExpirationTime }))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('span',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.isExpiryDateEnforced},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.isExpiryDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcDateTimePickerNative',{attrs:{\"id\":\"share-date-picker\",\"value\":new Date(_vm.share.expireDate),\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced,\"hide-label\":true,\"disabled\":_vm.isExpiryDateEnforced,\"placeholder\":_vm.t('file_sharing', 'Expiration date'),\"type\":\"date\"},on:{\"input\":_vm.onExpirationChange}}):_vm._e(),_vm._v(\" \"),(_vm.isPublicShare)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":_vm.canChangeHideDownload,\"checked\":_vm.share.hideDownload},on:{\"update:checked\":[function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},function($event){return _vm.queueUpdate('hideDownload')}]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Hide download'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canTogglePasswordProtectedByTalkAvailable)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.isPasswordProtectedByTalk},on:{\"update:checked\":[function($event){_vm.isPasswordProtectedByTalk=$event},_vm.onPasswordProtectedByTalkChange]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Video verification'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.writeNoteToRecipientIsChecked},on:{\"update:checked\":function($event){_vm.writeNoteToRecipientIsChecked=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.writeNoteToRecipientIsChecked)?[_c('textarea',{domProps:{\"value\":_vm.share.note},on:{\"input\":function($event){_vm.share.note = $event.target.value}}})]:_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.setCustomPermissions},on:{\"update:checked\":function($event){_vm.setCustomPermissions=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Custom permissions'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.setCustomPermissions)?_c('section',{staticClass:\"custom-permissions-group\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.allowsFileDrop && _vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_LINK,\"checked\":_vm.hasRead},on:{\"update:checked\":function($event){_vm.hasRead=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetCreate,\"checked\":_vm.canCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Create'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetEdit,\"checked\":_vm.canEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Update'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.config.isResharingAllowed && _vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_LINK)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetReshare,\"checked\":_vm.canReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Share'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isPublicShare)?_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDownload,\"checked\":_vm.canDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Download'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":!_vm.canSetDelete,\"checked\":_vm.canDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")])],1):_vm._e()],2)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"sharingTabDetailsView__footer\"},[(!_vm.isNewShare)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Delete share'),\"disabled\":false,\"readonly\":false,\"type\":\"tertiary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.removeShare.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":16}})]},proxy:true}],null,false,2746485232)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete share'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"button-group\"},[_c('NcButton',{on:{\"click\":function($event){return _vm.$emit('close-sharing-details')}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('file_sharing', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveShare}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.shareButtonText)+\"\\n\\t\\t\\t\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"sharingTabDetailsView\">\n\t\t<div class=\"sharingTabDetailsView__header\">\n\t\t\t<span>\n\t\t\t\t<NcAvatar v-if=\"isUserShare\"\n\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t:is-no-user=\"share.shareType !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t\t\t:user=\"share.shareWith\"\n\t\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\t\t:menu-position=\"'left'\"\n\t\t\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t\t\t<component :is=\"getShareTypeIcon(share.type)\" :size=\"32\" />\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t</span>\n\t\t</div>\n\t\t<div class=\"sharingTabDetailsView__quick-permissions\">\n\t\t\t<div>\n\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY.toString()\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t<ViewIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'View only') }}</span>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"bundledPermissions.ALL.toString()\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t<EditIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'Allow upload and editing') }}</span>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"allowsFileDrop\"\n\t\t\t\t\t:button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP.toString()\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"toggleCustomPermissions\">\n\t\t\t\t\t<UploadIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'File drop') }}</span>\n\t\t\t\t\t<small>{{ t('files_sharing', 'Upload only') }}</small>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch :button-variant=\"true\"\n\t\t\t\t\t:checked.sync=\"sharingPermission\"\n\t\t\t\t\t:value=\"'custom'\"\n\t\t\t\t\tname=\"sharing_permission_radio\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tbutton-variant-grouped=\"vertical\"\n\t\t\t\t\t@update:checked=\"expandCustomPermissions\">\n\t\t\t\t\t<DotsHorizontalIcon :size=\"20\" />\n\t\t\t\t\t<span>{{ t('files_sharing', 'Custom permissions') }}</span>\n\t\t\t\t\t<small>{{ t('files_sharing', customPermissionsList) }}</small>\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"sharingTabDetailsView__advanced-control\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\talignment=\"end-reverse\"\n\t\t\t\t@click=\"advancedSectionAccordionExpanded = !advancedSectionAccordionExpanded\">\n\t\t\t\t{{ t('files_sharing', 'Advanced settings') }}\n\t\t\t\t<template #icon>\n\t\t\t\t\t<MenuDownIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div v-if=\"advancedSectionAccordionExpanded\" class=\"sharingTabDetailsView__advanced\">\n\t\t\t<section>\n\t\t\t\t<NcInputField v-if=\"isPublicShare\"\n\t\t\t\t\t:value.sync=\"share.label\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:label=\"t('file_sharing', 'Share label')\" />\n\t\t\t\t<template v-if=\"isPublicShare\">\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"isPasswordProtected\" :disabled=\"isPasswordEnforced\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Set password') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcInputField v-if=\"isPasswordProtected\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text' : 'password'\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\t:error=\"passwordError\"\n\t\t\t\t\t\t:required=\"isPasswordEnforced\"\n\t\t\t\t\t\t:label=\"t('file_sharing', 'Password')\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\" />\n\n\t\t\t\t\t<!-- Migrate icons and remote -> icon=\"icon-info\"-->\n\t\t\t\t\t<span v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', { passwordExpirationTime }) }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</span>\n\t\t\t\t</template>\n\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"hasExpirationDate\" :disabled=\"isExpiryDateEnforced\">\n\t\t\t\t\t{{ isExpiryDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcDateTimePickerNative v-if=\"hasExpirationDate\"\n\t\t\t\t\tid=\"share-date-picker\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:disabled=\"isExpiryDateEnforced\"\n\t\t\t\t\t:placeholder=\"t('file_sharing', 'Expiration date')\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t@input=\"onExpirationChange\" />\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isPublicShare\"\n\t\t\t\t\t:disabled=\"canChangeHideDownload\"\n\t\t\t\t\t:checked.sync=\"share.hideDownload\"\n\t\t\t\t\t@update:checked=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t{{ t('file_sharing', 'Hide download') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"canTogglePasswordProtectedByTalkAvailable\"\n\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t@update:checked=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t{{ t('file_sharing', 'Video verification') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t{{ t('file_sharing', 'Note to recipient') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<template v-if=\"writeNoteToRecipientIsChecked\">\n\t\t\t\t\t<textarea :value=\"share.note\" @input=\"share.note = $event.target.value\" />\n\t\t\t\t</template>\n\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"setCustomPermissions\">\n\t\t\t\t\t{{ t('file_sharing', 'Custom permissions') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<section v-if=\"setCustomPermissions\" class=\"custom-permissions-group\">\n\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!allowsFileDrop && share.type === SHARE_TYPES.SHARE_TYPE_LINK\"\n\t\t\t\t\t\t:checked.sync=\"hasRead\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Read') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"isFolder\" :disabled=\"!canSetCreate\" :checked.sync=\"canCreate\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Create') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetEdit\" :checked.sync=\"canEdit\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Update') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"config.isResharingAllowed && share.type !== SHARE_TYPES.SHARE_TYPE_LINK\"\n\t\t\t\t\t\t:disabled=\"!canSetReshare\"\n\t\t\t\t\t\t:checked.sync=\"canReshare\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Share') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch v-if=\"!isPublicShare\" :disabled=\"!canSetDownload\" :checked.sync=\"canDownload\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Download') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch :disabled=\"!canSetDelete\" :checked.sync=\"canDelete\">\n\t\t\t\t\t\t{{ t('file_sharing', 'Delete') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</section>\n\t\t\t</section>\n\t\t</div>\n\n\t\t<div class=\"sharingTabDetailsView__footer\">\n\t\t\t<NcButton v-if=\"!isNewShare\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Delete share')\"\n\t\t\t\t:disabled=\"false\"\n\t\t\t\t:readonly=\"false\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t@click.prevent=\"removeShare\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon :size=\"16\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_sharing', 'Delete share') }}\n\t\t\t</NcButton>\n\t\t\t<div class=\"button-group\">\n\t\t\t\t<NcButton @click=\"$emit('close-sharing-details')\">\n\t\t\t\t\t{{ t('file_sharing', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\" @click=\"saveShare\">\n\t\t\t\t\t{{ shareButtonText }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcDatetimePicker from '@nextcloud/vue/dist/Components/NcDatetimePicker.js'\nimport NcDateTimePickerNative from '@nextcloud/vue/dist/Components/NcDateTimePickerNative.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport CircleIcon from 'vue-material-design-icons/CircleOutline.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport EditIcon from 'vue-material-design-icons/Pencil.vue'\nimport EmailIcon from 'vue-material-design-icons/Email.vue'\nimport LinkIcon from 'vue-material-design-icons/Link.vue'\nimport GroupIcon from 'vue-material-design-icons/AccountGroup.vue'\nimport ShareIcon from 'vue-material-design-icons/ShareCircle.vue'\nimport UserIcon from 'vue-material-design-icons/AccountCircleOutline.vue'\nimport ViewIcon from 'vue-material-design-icons/Eye.vue'\nimport UploadIcon from 'vue-material-design-icons/Upload.vue'\nimport MenuDownIcon from 'vue-material-design-icons/MenuDown.vue'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n} from '../lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'SharingDetailsTab',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tNcInputField,\n\t\tNcDatetimePicker,\n\t\tNcDateTimePickerNative,\n\t\tNcCheckboxRadioSwitch,\n\t\tCloseIcon,\n\t\tCircleIcon,\n\t\tEditIcon,\n\t\tLinkIcon,\n\t\tGroupIcon,\n\t\tShareIcon,\n\t\tUserIcon,\n\t\tUploadIcon,\n\t\tViewIcon,\n\t\tMenuDownIcon,\n\t\tDotsHorizontalIcon,\n\t},\n\tmixins: [ShareTypes, ShareRequests, SharesMixin],\n\tprops: {\n\t\tshareRequestValue: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\twriteNoteToRecipientIsChecked: false,\n\t\t\tsharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\trevertSharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),\n\t\t\tsetCustomPermissions: false,\n\t\t\tpasswordError: false,\n\t\t\tadvancedSectionAccordionExpanded: false,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t\tisFirstComponentLoad: true,\n\t\t\ttest: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = t('files_sharing', 'Share with ')\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\ttitle = title + this.share.shareWithDisplayName\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_LINK) {\n\t\t\t\ttitle = t('files_sharing', 'Share link')\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\n\t\t\treturn title\n\t\t},\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isDownloadChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updateAtomicPermissions({ isReadChecked: checked })\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn !!this.share.expireDate || this.config.isDefaultInternalExpireDateEnforced\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(this.defaultExpiryDate)\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tthis.share.password = enabled ? await GeneratePassword() : ''\n\t\t\t\tthis.$set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t\tisPasswordEnforced() {\n\t\t\treturn this.isPublicShare && this.config.enforcePasswordForPublicLink\n\t\t},\n\t\tisExpiryDateEnforced() {\n\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t},\n\t\tdefaultExpiryDate() {\n\t\t\tif ((this.isGroupShare || this.isUserShare) && this.config.isDefaultInternalExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultInternalExpirationDate)\n\t\t\t} else if (this.isRemoteShare && this.config.isDefaultRemoteExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultRemoteExpireDateEnabled)\n\t\t\t} else if (this.isPublicShare && this.config.isDefaultExpireDateEnabled) {\n\t\t\t\treturn new Date(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\t\tisUserShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_USER\n\t\t},\n\t\tisGroupShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP\n\t\t},\n\t\tisRemoteShare() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP || this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t},\n\t\tisNewShare() {\n\t\t\treturn this.share.id === null || this.share.id === undefined\n\t\t},\n\t\tallowsFileDrop() {\n\t\t\tif (this.isFolder && this.config.isPublicUploadEnabled) {\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\thasFileDropPermissions() {\n\t\t\treturn this.share.permissions === this.bundledPermissions.FILE_DROP\n\t\t},\n\t\tshareButtonText() {\n\t\t\tif (this.isNewShare) {\n\t\t\t\treturn t('file_sharing', 'Save share')\n\t\t\t}\n\t\t\treturn t('file_sharing', 'Update share')\n\n\t\t},\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\t\t/**\n\t\t * Can the sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.canDownload() || this.canDownload)\n\t\t},\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPublicShare || !this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t\tcustomPermissionsList() {\n\t\t\tconst perms = []\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.READ)) {\n\t\t\t\tperms.push('read')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.CREATE)) {\n\t\t\t\tperms.push('create')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.UPDATE)) {\n\t\t\t\tperms.push('update')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.DELETE)) {\n\t\t\t\tperms.push('delete')\n\t\t\t}\n\t\t\tif (hasPermissions(this.share.permissions, ATOMIC_PERMISSIONS.SHARE)) {\n\t\t\t\tperms.push('share')\n\t\t\t}\n\t\t\tif (this.share.hasDownloadPermission) {\n\t\t\t\tperms.push('download')\n\t\t\t}\n\t\t\tconst capitalizeFirstAndJoin = array => array.map((item, index) => index === 0 ? item[0].toUpperCase() + item.substring(1) : item).join(', ')\n\n\t\t\treturn capitalizeFirstAndJoin(perms)\n\n\t\t},\n\t},\n\twatch: {\n\t\tsetCustomPermissions(isChecked) {\n\t\t\tif (isChecked) {\n\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t} else {\n\t\t\t\tthis.sharingPermission = this.revertSharingPermission\n\t\t\t}\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.initializePermissions()\n\t\tthis.initializeAttributes()\n\t\tconsole.debug('shareSentIn', this.share)\n\t\tconsole.debug('config', this.config)\n\t},\n\n\tmethods: {\n\t\tupdateAtomicPermissions({\n\t\t\tisReadChecked = this.hasRead,\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (isReadChecked ? ATOMIC_PERMISSIONS.READ : 0)\n\t\t\t\t| (isCreateChecked ? ATOMIC_PERMISSIONS.CREATE : 0)\n\t\t\t\t| (isDeleteChecked ? ATOMIC_PERMISSIONS.DELETE : 0)\n\t\t\t\t| (isEditChecked ? ATOMIC_PERMISSIONS.UPDATE : 0)\n\t\t\t\t| (isReshareChecked ? ATOMIC_PERMISSIONS.SHARE : 0)\n\t\t\tthis.share.permissions = permissions\n\t\t\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.$set(this.share, 'hasDownloadPermission', isDownloadChecked)\n\t\t\t}\n\t\t},\n\t\texpandCustomPermissions() {\n\t\t\tif (!this.advancedSectionAccordionExpanded) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\t\t\tthis.toggleCustomPermissions()\n\t\t},\n\t\ttoggleCustomPermissions(selectedPermission) {\n\t\t\tconst isCustomPermissions = this.sharingPermission === 'custom'\n\t\t\tthis.revertSharingPermission = !isCustomPermissions ? selectedPermission : 'custom'\n\t\t\tthis.setCustomPermissions = isCustomPermissions\n\t\t},\n\t\tinitializeAttributes() {\n\n\t\t\tif (this.isNewShare) return\n\n\t\t\tlet hasAdvancedAttributes = false\n\t\t\tif (this.isValidShareAttribute(this.share.note)) {\n\t\t\t\tthis.writeNoteToRecipientIsChecked = true\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (this.isValidShareAttribute(this.share.password)) {\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (this.isValidShareAttribute(this.share.expireDate)) {\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (this.isValidShareAttribute(this.share.label)) {\n\t\t\t\thasAdvancedAttributes = true\n\t\t\t}\n\n\t\t\tif (hasAdvancedAttributes) {\n\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t}\n\n\t\t},\n\t\tinitializePermissions() {\n\t\t\tif (this.share.share_type) {\n\t\t\t\tthis.share.type = this.share.share_type\n\t\t\t}\n\t\t\t// shareType 0 (USER_SHARE) would evaluate to zero\n\t\t\t// Hence the use of hasOwnProperty\n\t\t\tif ('shareType' in this.share) {\n\t\t\t\tthis.share.type = this.share.shareType\n\t\t\t}\n\t\t\tif (this.isNewShare) {\n\t\t\t\tif (this.isPublicShare) {\n\t\t\t\t\tthis.sharingPermission = BUNDLED_PERMISSIONS.READ_ONLY.toString()\n\t\t\t\t} else {\n\t\t\t\t\tthis.sharingPermission = BUNDLED_PERMISSIONS.ALL.toString()\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tif (this.hasCustomPermissions || this.share.setCustomPermissions) {\n\t\t\t\t\tthis.sharingPermission = 'custom'\n\t\t\t\t\tthis.advancedSectionAccordionExpanded = true\n\t\t\t\t\tthis.setCustomPermissions = true\n\t\t\t\t} else {\n\t\t\t\t\tthis.sharingPermission = this.share.permissions.toString()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync saveShare() {\n\t\t\tconst permissionsAndAttributes = ['permissions', 'attributes', 'note', 'expireDate']\n\t\t\tconst publicShareAttributes = ['label', 'password', 'hideDownload']\n\t\t\tif (this.isPublicShare) {\n\t\t\t\tpermissionsAndAttributes.push(...publicShareAttributes)\n\t\t\t}\n\t\t\tconst sharePermissionsSet = parseInt(this.sharingPermission)\n\t\t\tif (this.setCustomPermissions) {\n\t\t\t\tthis.updateAtomicPermissions()\n\t\t\t} else {\n\t\t\t\tthis.share.permissions = sharePermissionsSet\n\t\t\t}\n\n\t\t\tif (!this.isFolder && this.share.permissions === BUNDLED_PERMISSIONS.ALL) {\n\t\t\t\t// It's not possible to create an existing file.\n\t\t\t\tthis.share.permissions = BUNDLED_PERMISSIONS.ALL_FILE\n\t\t\t}\n\t\t\tif (!this.writeNoteToRecipientIsChecked) {\n\t\t\t\tthis.share.note = ''\n\t\t\t}\n\n\t\t\tif (this.isPasswordProtected) {\n\t\t\t\tif (this.isValidShareAttribute(this.share.newPassword)) {\n\t\t\t\t\tthis.share.password = this.share.newPassword\n\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\t\t\t\t} else {\n\t\t\t\t\tif (this.isPasswordEnforced) {\n\t\t\t\t\t\tthis.passwordError = true\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.share.password = ''\n\t\t\t}\n\n\t\t\tif (!this.hasExpirationDate) {\n\t\t\t\tthis.share.expireDate = ''\n\t\t\t}\n\n\t\t\tif (this.isNewShare) {\n\t\t\t\tconst incomingShare = {\n\t\t\t\t\tpermissions: this.share.permissions,\n\t\t\t\t\tshareType: this.share.type,\n\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\tattributes: this.share.attributes,\n\t\t\t\t\tnote: this.share.note,\n\t\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\t}\n\n\t\t\t\tif (this.hasExpirationDate) {\n\t\t\t\t\tincomingShare.expireDate = this.share.expireDate\n\t\t\t\t}\n\n\t\t\t\tif (this.isPasswordProtected) {\n\t\t\t\t\tincomingShare.password = this.share.password\n\t\t\t\t}\n\n\t\t\t\tconst share = await this.addShare(incomingShare, this.fileInfo)\n\t\t\t\tthis.share = share\n\t\t\t\tthis.$emit('add:share', this.share)\n\t\t\t} else {\n\t\t\t\tthis.queueUpdate(...permissionsAndAttributes)\n\t\t\t}\n\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {Share} share incoming share object\n\t\t * @param {object} fileInfo file data\n\t\t */\n\t\tasync addShare(share, fileInfo) {\n\t\t\tconsole.debug('Adding a new share from the input for', share)\n\t\t\ttry {\n\t\t\t\tconst path = (fileInfo.path + '/' + fileInfo.name).replace('//', '/')\n\t\t\t\tconst resultingShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: share.shareType,\n\t\t\t\t\tshareWith: share.shareWith,\n\t\t\t\t\tpermissions: share.permissions,\n\t\t\t\t\tattributes: JSON.stringify(fileInfo.shareAttributes),\n\t\t\t\t\t...(share.note ? { note: share.note } : {}),\n\t\t\t\t\t...(share.password ? { password: share.password } : {}),\n\t\t\t\t\t...(share.expireDate ? { expireDate: share.expireDate } : {}),\n\t\t\t\t})\n\t\t\t\treturn resultingShare\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\t// this.loading = false // No loader here yet\n\t\t\t}\n\t\t},\n\t\tasync removeShare() {\n\t\t\tawait this.onDelete()\n\t\t\tthis.$emit('close-sharing-details')\n\t\t},\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.passwordError = !this.isValidShareAttribute(password)\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\t\tisValidShareAttribute(value) {\n\t\t\tif ([null, undefined].includes(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (!(value.trim().length > 0)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t\tgetShareTypeIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_LINK:\n\t\t\t\treturn LinkIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\treturn UserIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn GroupIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn EmailIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn CircleIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn ShareIcon\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn ShareIcon\n\t\t\tdefault:\n\t\t\t\treturn null // Or a default icon component if needed\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharingTabDetailsView {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\twidth: 96%;\n\tmargin: 0 auto;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0.2em;\n\n\t\tspan {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\th1 {\n\t\t\t\tfont-size: 15px;\n\t\t\t\tpadding-left: 0.3em;\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__quick-permissions {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-bottom: 0.2em;\n\t\twidth: 100%;\n\t\tmargin: 0 auto;\n\t\tborder-radius: 0;\n\n\t\tdiv {\n\t\t\twidth: 100%;\n\n\t\t\tspan {\n\t\t\t\twidth: 100%;\n\n\t\t\t\tspan:nth-child(1) {\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tpadding: 0.1em;\n\t\t\t\t}\n\n\t\t\t\t::v-deep label {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-wrap: wrap;\n\n\t\t\t\t\tspan {\n\t\t\t\t\t\tdisplay: flex;\n\n\t\t\t\t\t\t&:first-of-type {\n\t\t\t\t\t\t\tflex: 10%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:last-of-type {\n\t\t\t\t\t\t\tflex: 90%\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsmall {\n\t\t\t\t\t\tpadding-left: 10%;\n\t\t\t\t\t\tflex-basis: 100% !important;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\t&__advanced-control {\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tmargin-top: 0.5em;\n\t\t}\n\n\t}\n\n\t&__advanced {\n\t\twidth: 100%;\n\t\tmargin-bottom: 0.5em;\n\t\ttext-align: left;\n\t\tpadding-left: 0;\n\n\t\tsection {\n\n\t\t\ttextarea,\n\t\t\tdiv.mx-datepicker {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttextarea {\n\t\t\t\theight: 80px;\n\t\t\t}\n\n\t\t\t/*\n The following style is applied out of the component's scope\n to remove padding from the label.checkbox-radio-switch__label,\n which is used to group radio checkbox items. The use of ::v-deep\n ensures that the padding is modified without being affected by\n the component's scoping.\n Without this achieving left alignment for the checkboxes would not\n be possible.\n */\n\t\t\tspan {\n\t\t\t\t::v-deep label {\n\t\t\t\t\tbackground-color: initial !important;\n\t\t\t\t\tborder: none !important;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsection.custom-permissions-group {\n\t\t\t\tpadding-left: 1.5em;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__footer {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\n\t\t>button:first-child {\n\t\t\tcolor: rgb(223, 7, 7);\n\t\t\tbackground-color: #f5f5f5;\n\t\t}\n\n\t\t.button-group {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 16px;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\n\t\t\t\t&:first-child {\n\t\t\t\t\tmargin-left: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=0f46cc1b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingDetailsTab.vue?vue&type=style&index=0&id=0f46cc1b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingDetailsTab.vue?vue&type=template&id=0f46cc1b&scoped=true&\"\nimport script from \"./SharingDetailsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingDetailsTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingDetailsTab.vue?vue&type=style&index=0&id=0f46cc1b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f46cc1b\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<template v-if=\"!showSharingDetailsView\">\n\t\t\t<!-- shares content -->\n\t\t\t<div class=\"sharingTab__content\">\n\t\t\t\t<!-- shared with me information -->\n\t\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t\t<template #avatar>\n\t\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t\t\t\t</template>\n\t\t\t\t</SharingEntrySimple>\n\n\t\t\t\t<!-- add new share input -->\n\t\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- link shares list -->\n\t\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\t\tref=\"linkShareList\"\n\t\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:shares=\"linkShares\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- other shares list -->\n\t\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\t\tref=\"shareList\"\n\t\t\t\t\t:shares=\"shares\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t@open-sharing-details=\"toggleShareDetailsView\" />\n\n\t\t\t\t<!-- inherited shares -->\n\t\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t\t<!-- internal link copy -->\n\t\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t\t<!-- projects -->\n\t\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t:name=\"fileInfo.name\" />\n\t\t\t</div>\n\n\t\t\t<!-- additional entries, use it with cautious -->\n\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t</div>\n\t\t</template>\n\n\t\t<!-- share details -->\n\t\t<div v-else>\n\t\t\t<SharingDetailsTab :file-info=\"shareDetailsData.fileInfo\"\n\t\t\t\t:share=\"shareDetailsData.share\"\n\t\t\t\t@close-sharing-details=\"toggleShareDetailsView\"\n\t\t\t\t@add:share=\"addShare\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService.js'\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryInternal from '../components/SharingEntryInternal.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\nimport SharingInput from '../components/SharingInput.vue'\n\nimport SharingInherited from './SharingInherited.vue'\nimport SharingLinkList from './SharingLinkList.vue'\nimport SharingList from './SharingList.vue'\nimport SharingDetailsTab from './SharingDetailsTab.vue'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t\tSharingDetailsTab,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tdeleteEvent: null,\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t\tprojectsEnabled: loadState('core', 'projects_enabled', false),\n\t\t\tshowSharingDetailsView: false,\n\t\t\tshareDetailsData: {},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t\tthis.showSharingDetailsView = false\n\t\t\tthis.shareDetailsData = {}\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false },\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => { }) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item.id === share.id)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\ttoggleShareDetailsView(eventData) {\n\t\t\tif (eventData) {\n\t\t\t\tthis.shareDetailsData = eventData\n\t\t\t}\n\t\t\tthis.showSharingDetailsView = !this.showSharingDetailsView\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false },\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false },\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=4bd1eb33&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=4bd1eb33&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bd1eb33\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_vm._e(),_vm._v(\" \"),(!_vm.showSharingDetailsView)?[_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo},on:{\"open-sharing-details\":_vm.toggleShareDetailsView}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})]:_c('div',[_c('SharingDetailsTab',{attrs:{\"file-info\":_vm.shareDetailsData.fileInfo,\"share\":_vm.shareDetailsData.share},on:{\"close-sharing-details\":_vm.toggleShareDetailsView,\"add:share\":_vm.addShare,\"remove:share\":_vm.removeShare}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticonSvg: ShareVariant,\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tOC.debug && console.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-532437fc]{display:flex;justify-content:space-between;align-items:center;height:44px}.sharing-entry__summary[data-v-532437fc]{padding:8px;padding-left:10px;display:flex;flex-direction:column;justify-content:center;width:75%;min-width:75%}.sharing-entry__summary__desc[data-v-532437fc]{display:inline-block;flex-direction:column;justify-content:space-between;padding-bottom:0;line-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sharing-entry__summary__desc p[data-v-532437fc],.sharing-entry__summary__desc small[data-v-532437fc]{color:var(--color-text-maxcontrast)}.sharing-entry__summary__desc-unique[data-v-532437fc]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,WAAA,CAEA,yCACC,WAAA,CACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,+CACC,oBAAA,CACA,qBAAA,CACA,6BAAA,CACA,gBAAA,CACA,iBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,sGAEC,mCAAA,CAGD,sDACC,mCAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\n\\t&__summary {\\n\\t\\tpadding: 8px;\\n\\t\\tpadding-left: 10px;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 75%;\\n\\t\\tmin-width: 75%;\\n\\n\\t\\t&__desc {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t\\tline-height: 1.2em;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\n\\t\\t\\tp,\\n\\t\\t\\tsmall {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-unique {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-6b7b22e9]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-6b7b22e9]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-6b7b22e9]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-6b7b22e9]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-6b7b22e9]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-6b7b22e9] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-6b7b22e9]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-6b7b22e9]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-6b7b22e9]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-6b7b22e9],.sharing-entry .action-item~.sharing-entry__loading[data-v-6b7b22e9]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-6b7b22e9]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAEA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".share-select[data-v-c003ab64]{position:relative;cursor:pointer}.share-select .trigger-text[data-v-c003ab64]{display:flex;flex-direction:row;align-items:center;font-size:12.5px;gap:2px;color:var(--color-primary-element)}.share-select .share-select-dropdown[data-v-c003ab64]{position:absolute;display:flex;flex-direction:column;top:100%;left:0;background-color:var(--color-main-background);border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.2);padding:4px 0;z-index:1}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]{padding:8px;font-size:12px;background:none;border:none;border-radius:0;font:inherit;cursor:pointer;color:inherit;outline:none;width:100%;white-space:nowrap;text-align:left}.share-select .share-select-dropdown .dropdown-item[data-v-c003ab64]:hover{background-color:#f2f2f2}.share-select .share-select-dropdown .dropdown-item.selected[data-v-c003ab64]{background-color:#f0f0f0}.share-select .share-select-dropdown[data-v-c003ab64]{max-height:0;overflow:hidden;transition:max-height .3s ease}.share-select.active .share-select-dropdown[data-v-c003ab64]{max-height:200px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CACA,cAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,gBAAA,CACA,OAAA,CACA,kCAAA,CAGD,sDACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,MAAA,CACA,6CAAA,CACA,iBAAA,CACA,mCAAA,CACA,aAAA,CACA,SAAA,CAEA,qEACC,WAAA,CACA,cAAA,CACA,eAAA,CACA,WAAA,CACA,eAAA,CACA,YAAA,CACA,cAAA,CACA,aAAA,CACA,YAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CAEA,2EACC,wBAAA,CAGD,8EACC,wBAAA,CAMH,sDACC,YAAA,CACA,eAAA,CACA,8BAAA,CAGD,6DACC,gBAAA\",\"sourcesContent\":[\"\\n.share-select {\\n\\tposition: relative;\\n\\tcursor: pointer;\\n\\n\\t.trigger-text {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tfont-size: 12.5px;\\n\\t\\tgap: 2px;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.share-select-dropdown {\\n\\t\\tposition: absolute;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\ttop: 100%;\\n\\t\\tleft: 0;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tborder-radius: 8px;\\n\\t\\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\\n\\t\\tpadding: 4px 0;\\n\\t\\tz-index: 1;\\n\\n\\t\\t.dropdown-item {\\n\\t\\t\\tpadding: 8px;\\n\\t\\t\\tfont-size: 12px;\\n\\t\\t\\tbackground: none;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t\\tfont: inherit;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\toutline: none;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-align: left;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: #f2f2f2;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.selected {\\n\\t\\t\\t\\tbackground-color: #f0f0f0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Optional: Add a transition effect for smoother dropdown animation */\\n\\t.share-select-dropdown {\\n\\t\\tmax-height: 0;\\n\\t\\toverflow: hidden;\\n\\t\\ttransition: max-height 0.3s ease;\\n\\t}\\n\\n\\t&.active .share-select-dropdown {\\n\\t\\tmax-height: 200px;\\n\\t\\t/* Adjust the value to your desired height */\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-776f7b36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-776f7b36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-776f7b36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-776f7b36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-776f7b36]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharingTabDetailsView[data-v-0f46cc1b]{display:flex;flex-direction:column;align-items:flex-start;width:96%;margin:0 auto}.sharingTabDetailsView__header[data-v-0f46cc1b]{display:flex;align-items:center;box-sizing:border-box;margin:.2em}.sharingTabDetailsView__header span[data-v-0f46cc1b]{display:flex;align-items:center}.sharingTabDetailsView__header span h1[data-v-0f46cc1b]{font-size:15px;padding-left:.3em}.sharingTabDetailsView__quick-permissions[data-v-0f46cc1b]{display:flex;justify-content:center;margin-bottom:.2em;width:100%;margin:0 auto;border-radius:0}.sharingTabDetailsView__quick-permissions div[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__quick-permissions div span span[data-v-0f46cc1b]:nth-child(1){align-items:center;justify-content:center;color:var(--color-primary-element);padding:.1em}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label{display:flex;flex-wrap:wrap}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label span{display:flex}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label span:first-of-type{flex:10%}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label span:last-of-type{flex:90%}.sharingTabDetailsView__quick-permissions div span[data-v-0f46cc1b] label small{padding-left:10%;flex-basis:100% !important}.sharingTabDetailsView__advanced-control[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__advanced-control button[data-v-0f46cc1b]{margin-top:.5em}.sharingTabDetailsView__advanced[data-v-0f46cc1b]{width:100%;margin-bottom:.5em;text-align:left;padding-left:0}.sharingTabDetailsView__advanced section textarea[data-v-0f46cc1b],.sharingTabDetailsView__advanced section div.mx-datepicker[data-v-0f46cc1b]{width:100%}.sharingTabDetailsView__advanced section textarea[data-v-0f46cc1b]{height:80px}.sharingTabDetailsView__advanced section span[data-v-0f46cc1b] label{background-color:initial !important;border:none !important}.sharingTabDetailsView__advanced section section.custom-permissions-group[data-v-0f46cc1b]{padding-left:1.5em}.sharingTabDetailsView__footer[data-v-0f46cc1b]{width:100%;display:flex;position:sticky;bottom:0;flex-direction:column;justify-content:space-between;align-items:flex-start}.sharingTabDetailsView__footer>button[data-v-0f46cc1b]:first-child{color:#df0707;background-color:#f5f5f5}.sharingTabDetailsView__footer .button-group[data-v-0f46cc1b]{display:flex;justify-content:space-between;width:100%;margin-top:16px}.sharingTabDetailsView__footer .button-group button[data-v-0f46cc1b]{margin-left:16px}.sharingTabDetailsView__footer .button-group button[data-v-0f46cc1b]:first-child{margin-left:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,aAAA,CAEA,gDACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,WAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,wDACC,cAAA,CACA,iBAAA,CAMH,2DACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CAEA,+DACC,UAAA,CAEA,oEACC,UAAA,CAEA,sFACC,kBAAA,CACA,sBAAA,CACA,kCAAA,CACA,YAAA,CAGD,0EACC,YAAA,CACA,cAAA,CAEA,+EACC,YAAA,CAEA,6FACC,QAAA,CAGD,4FACC,QAAA,CAIF,gFACC,gBAAA,CACA,0BAAA,CASL,0DACC,UAAA,CAEA,iEACC,eAAA,CAKF,kDACC,UAAA,CACA,kBAAA,CACA,eAAA,CACA,cAAA,CAIC,+IAEC,UAAA,CAGD,mEACC,WAAA,CAaA,qEACC,mCAAA,CACA,sBAAA,CAIF,2FACC,kBAAA,CAKH,gDACC,UAAA,CACA,YAAA,CACA,eAAA,CACA,QAAA,CACA,qBAAA,CACA,6BAAA,CACA,sBAAA,CAEA,mEACC,aAAA,CACA,wBAAA,CAGD,8DACC,YAAA,CACA,6BAAA,CACA,UAAA,CACA,eAAA,CAEA,qEACC,gBAAA,CAEA,iFACC,aAAA\",\"sourcesContent\":[\"\\n.sharingTabDetailsView {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: flex-start;\\n\\twidth: 96%;\\n\\tmargin: 0 auto;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0.2em;\\n\\n\\t\\tspan {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\th1 {\\n\\t\\t\\t\\tfont-size: 15px;\\n\\t\\t\\t\\tpadding-left: 0.3em;\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t}\\n\\n\\t&__quick-permissions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tmargin-bottom: 0.2em;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 0 auto;\\n\\t\\tborder-radius: 0;\\n\\n\\t\\tdiv {\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\tspan {\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\tspan:nth-child(1) {\\n\\t\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t\\tjustify-content: center;\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\t\\tpadding: 0.1em;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t::v-deep label {\\n\\t\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\t\\tflex-wrap: wrap;\\n\\n\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t\\t\\t\\t&:first-of-type {\\n\\t\\t\\t\\t\\t\\t\\tflex: 10%;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\t\\t\\t\\tflex: 90%\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tsmall {\\n\\t\\t\\t\\t\\t\\tpadding-left: 10%;\\n\\t\\t\\t\\t\\t\\tflex-basis: 100% !important;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t}\\n\\n\\t&__advanced-control {\\n\\t\\twidth: 100%;\\n\\n\\t\\tbutton {\\n\\t\\t\\tmargin-top: 0.5em;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__advanced {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 0.5em;\\n\\t\\ttext-align: left;\\n\\t\\tpadding-left: 0;\\n\\n\\t\\tsection {\\n\\n\\t\\t\\ttextarea,\\n\\t\\t\\tdiv.mx-datepicker {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\n\\t\\t\\ttextarea {\\n\\t\\t\\t\\theight: 80px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t/*\\n The following style is applied out of the component's scope\\n to remove padding from the label.checkbox-radio-switch__label,\\n which is used to group radio checkbox items. The use of ::v-deep\\n ensures that the padding is modified without being affected by\\n the component's scoping.\\n Without this achieving left alignment for the checkboxes would not\\n be possible.\\n */\\n\\t\\t\\tspan {\\n\\t\\t\\t\\t::v-deep label {\\n\\t\\t\\t\\t\\tbackground-color: initial !important;\\n\\t\\t\\t\\t\\tborder: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tsection.custom-permissions-group {\\n\\t\\t\\t\\tpadding-left: 1.5em;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\t>button:first-child {\\n\\t\\t\\tcolor: rgb(223, 7, 7);\\n\\t\\t\\tbackground-color: #f5f5f5;\\n\\t\\t}\\n\\n\\t\\t.button-group {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin-top: 16px;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\n\\t\\t\\t\\t&:first-child {\\n\\t\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-4bd1eb33]{margin:1rem auto}.sharingTab__content[data-v-4bd1eb33]{padding:0 6px}.sharingTab__additionalContent[data-v-4bd1eb33]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAGD,gDACC,aAAA\",\"sourcesContent\":[\"\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\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=\" + \"00434e4baa0d8e7b79f1\" + \"\";\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 = 7870;","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)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\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\t7870: 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} else installedChunks[chunkId] = 0;\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, [7874], () => (__webpack_require__(73600)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","Config","constructor","this","_shareConfig","loadState","isPublicUploadEnabled","allowPublicUploads","isShareWithLinkAllowed","document","getElementById","value","federatedShareDocLink","OC","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","_capabilities$files_s","_capabilities$files_s2","_capabilities$files_s3","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","_OC$getCapabilities$f","_OC$getCapabilities$f2","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","parseInt","config","minSearchStringLength","passwordPolicy","password_policy","Share","ocsData","_ocsData$attributes","ocs","data","hide_download","mail_send","attributes","JSON","parse","e","console","warn","_share","state","id","type","share_type","permissions","owner","uid_owner","ownerDisplayName","displayname_owner","shareWith","share_with","shareWithDisplayName","share_with_displayname","shareWithDisplayNameUnique","share_with_displayname_unique","shareWithLink","share_with_link","shareWithAvatar","share_with_avatar","uidFileOwner","uid_file_owner","displaynameFileOwner","displayname_file_owner","createdTime","stime","expireDate","expiration","date","token","note","label","mailSend","hideDownload","passwordExpirationTime","password_expiration_time","sendPasswordByTalk","send_password_by_talk","path","itemType","item_type","mimetype","fileSource","file_source","fileTarget","file_target","fileParent","file_parent","hasReadPermission","PERMISSION_READ","hasCreatePermission","PERMISSION_CREATE","hasDeletePermission","PERMISSION_DELETE","hasUpdatePermission","PERMISSION_UPDATE","hasSharePermission","PERMISSION_SHARE","hasDownloadPermission","i","attr","scope","key","setAttribute","attrUpdate","splice","push","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","parent","storageId","storage_id","storage","itemSource","item_source","status","SHARE_TYPES","ShareTypes","name","components","NcActions","props","title","String","default","required","subtitle","isUnique","Boolean","ariaExpanded","computed","ariaExpandedValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_t","_v","_s","_e","$slots","ref","attrs","NcActionLink","SharingEntrySimple","fileInfo","Object","copied","copySuccess","internalLink","window","location","protocol","host","generateUrl","copyLinkTooltip","t","internalLinkSubtitle","methods","navigator","clipboard","writeText","showSuccess","$refs","shareEntrySimple","actionsComponent","$el","focus","error","setTimeout","scopedSlots","_u","fn","proxy","on","$event","preventDefault","copyLink","apply","arguments","async","api","generate","request","axios","info","showError","array","Uint8Array","self","crypto","getRandomValues","length","charAt","passwordSet","shareUrl","generateOcsUrl","_ref","shareType","publicUpload","_request$data","share","emit","_error$response","_error$response$data","_error$response$data$","_error$response$data$2","errorMessage","response","meta","message","Notification","showTemporary","_request$data2","concat","_error$response2","_error$response2$data","_error$response2$data2","_error$response2$data3","properties","_request$data3","_error$response3","_error$response3$data","_error$response3$data2","_error$response3$data3","Error","shareRequestObject","handler","suggestions","query","mapShareRequestToShareObject","shareDetails","$emit","openShareDetailsForCustomSettings","setCustomPermissions","openSharingDetails","is_no_user","isNoUser","user","displayName","NcSelect","mixins","ShareRequests","ShareDetails","shares","Array","linkShares","reshare","canReshare","loading","recommendations","ShareSearch","OCA","Sharing","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","trim","noResultText","mounted","getRecommendations","handleOpen","select","debounceGetSuggestions","search","lookup","query_lookup_default","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","SHARE_TYPE_GUEST","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH","SHARE_TYPE_EMAIL","params","format","perPage","exact","rawExactSuggestions","values","reduce","arr","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","map","formatForMultiselect","sort","a","b","lookupEntry","lookupEnabled","filter","result","condition","allSuggestions","nameCounts","item","desc","debounce","getSuggestions","rawRecommendations","getCurrentUser","uid","indexOf","sharesObj","obj","shareTypeToIcon","icon","iconTitle","_result$shareWithDisp","server","_result$shareWithDesc","shareWithDescription","uuid","$nextTick","$children","open","debug","GeneratePassword","replace","createShare","sharePermissions","default_permissions","stringify","shareAttributes","newPassword","Promise","resolve","clear-search-on-blur","asyncFind","model","callback","$$v","expression","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","ALL_FILE","hasPermissions","initialPermissionSet","permissionsToCheck","SharesRequests","_this$share","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isFolder","isPublicShare","_this$share$shareType","SHARE_TYPE_LINK","includes","isShareOwner","hasCustomPermissions","checkShare","expirationDate","isValid","parseDateString","_date$match","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","queueUpdate","deleteShare","_len","propertyNames","_key","forEach","toString","add","updatedShare","updateShare","propertyName","onSyncError","property","propertyEl","focusable","querySelector","debounceQueueUpdate","NcActionButton","NcActionText","NcAvatar","SharesMixin","viaFileTargetUrl","fileid","viaFolderName","basename","initiator","folder","onDelete","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","watch","resetState","toggleInheritedShares","fetchInheritedShares","url","removeShare","index","findIndex","stopPropagation","_l","DropdownIcon","toggle","selectedOption","showDropdown","focusTrap","canViewText","canEditText","fileDropText","customPermissionsText","preSelectedOption","supportsFileDrop","_this$share$type","dropDownPermissionValue","dropdownId","Math","random","substr","toggleValue","initializeComponent","addEventListener","handleClickOutside","beforeDestroy","removeEventListener","toggleDropdown","useFocusTrap","clearFocusTrap","closeDropdown","selectOption","option","event","dropdownContainer","quickShareDropdownContainer","contains","target","assign","_nc_focus_trap","dropdownElement","quickShareDropdown","createFocusTrap","allowOutsideClick","trapStack","activate","_this$focusTrap","deactivate","shiftFocusForward","nextElement","activeElement","nextElementSibling","firstElementChild","shiftFocusBackward","previousElement","previousElementSibling","lastElementChild","handleArrowUp","handleArrowDown","class","_k","keyCode","action","is","_g","_b","tag","handlers","text","ExternalShareAction","NcActionInput","NcActionSeparator","Tune","QuickShareSelect","Number","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","isEmailShareType","hasExpirationDate","dateMaxEnforced","isPasswordProtected","Vue","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingPassword","pendingEnforcedPassword","pendingExpirationDate","shareLink","actionsTooltip","externalLegacyLinkActions","actions","externalLinkActions","isPasswordPolicyEnabled","canChangeHideDownload","some","shareAttribute","shareDefaults","pushNewLinkShare","component","update","newShare","_data$response","_data$response$data","_data$response$data$o","_data$response$data$o2","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","toggleQuickShareSelect","SharingEntryLink","onNewLinkShare","minLength","canLinkShare","hasLinkShares","hasShares","addShare","unshift","awaitForShare","find","NcButton","DotsHorizontalIcon","tooltip","hasStatus","isArray","SharingEntry","NcInputField","NcDatetimePicker","NcDateTimePickerNative","NcCheckboxRadioSwitch","CloseIcon","CircleIcon","EditIcon","LinkIcon","GroupIcon","ShareIcon","UserIcon","UploadIcon","ViewIcon","MenuDownIcon","shareRequestValue","writeNoteToRecipientIsChecked","sharingPermission","revertSharingPermission","passwordError","advancedSectionAccordionExpanded","bundledPermissions","isFirstComponentLoad","test","checked","updateAtomicPermissions","isEditChecked","canCreate","isCreateChecked","isDeleteChecked","isReshareChecked","canDownload","isDownloadChecked","hasRead","isReadChecked","defaultExpiryDate","isRemote","isSetDownloadButtonVisible","isPasswordEnforced","isExpiryDateEnforced","isGroupShare","isUserShare","isRemoteShare","isNewShare","allowsFileDrop","hasFileDropPermissions","shareButtonText","canSetEdit","canSetCreate","canSetDelete","canSetReshare","canSetDownload","customPermissionsList","perms","toUpperCase","substring","join","isChecked","beforeMount","initializePermissions","initializeAttributes","expandCustomPermissions","toggleCustomPermissions","selectedPermission","isCustomPermissions","hasAdvancedAttributes","isValidShareAttribute","permissionsAndAttributes","sharePermissionsSet","incomingShare","getShareTypeIcon","EmailIcon","domProps","saveShare","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","SharingDetailsTab","deleteEvent","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","showSharingDetailsView","shareDetailsData","isSharedWithMe","keys","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","clearInterval","updateExpirationSubtitle","unix","relativetime","Util","relativeModifiedDate","_ref2","group","escape","circle","conversation","shareWithTitle","setInterval","shareOwnerId","currentUser","shareOwner","listComponent","shareList","linkShareList","toggleShareDetailsView","eventData","emptyContentWithSections","section","refInFor","_state","addNewResult","registerAction","every","check","_sections","registerSection","n","View","SharingTab","TabInstance","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","el","context","$destroy","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","promises","u","g","globalThis","Function","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","currentScript","p","baseURI","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file