f7cloud_client/apps/groupfolders/js/groupfolders-sharing.js
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

3 lines
47 KiB
JavaScript

/*! For license information please see groupfolders-sharing.js.LICENSE.txt */
"use strict";(self.webpackChunkgroupfolders=self.webpackChunkgroupfolders||[]).push([["sharing","data_image_svg_xml_3c_21--_20-_20SPDX-FileCopyrightText_202020_20Google_20Inc_20-_20SPDX-Lice-cc29b1"],{2845:(e,r,i)=>{i.r(r),i.d(r,{default:()=>K});var o=i(5471),a=i(6802),s=i(5168),l=i(3814),c=i(1944),d=i(4095),u=i(7607),p=i(9656),A=i(9112),m=i(6549);const h={toString:function(t){return(t>>>0).toString(2).padStart(8,"0")},firstHigh:function(t){for(var e=0;0!==t;){if(!0&t)return e;e++,t>>=1}return 0},test:function(t,e){return(t>>e)%2!=0},set:function(t,e){return t|1<<e},clear:function(t,e){return t&~(1<<e)},toggle:function(t,e){return this.test(t,e)?this.clear(t,e):this.set(t,e)}};var f=i(9054),g=i(9089),v=i(629),E=i(3562),y=i(3797),S=i(4764),T=i(6790),C={INHERIT_DENY:0,INHERIT_ALLOW:1,INHERIT_DEFAULT:2,SELF_DENY:3,SELF_ALLOW:4};const I={name:"AclStateButton",directives:{tooltip:p.A},components:{NcButton:d.A,NcActions:S.A,NcActionRadio:T.A,Check:v.A,Cancel:E.A},props:{inherited:{type:Boolean,default:!1},state:{type:Number,default:C.INHERIT_DENY},readOnly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},data:function(){return{STATES:C}},computed:{isAllowed:function(){return this.state===C.INHERIT_ALLOW||this.state===C.SELF_ALLOW||this.state===C.INHERIT_DEFAULT},isInherited:function(){return this.state===C.INHERIT_ALLOW||this.state===C.INHERIT_DENY||this.state===C.INHERIT_DEFAULT},icon:function(){switch(this.state){case C.INHERIT_DEFAULT:return y.A;case C.INHERIT_ALLOW:case C.SELF_ALLOW:return v.A;default:return E.A}},label:function(){switch(this.state){case C.INHERIT_DEFAULT:return t("groupfolders","Unset");case C.INHERIT_DENY:return t("groupfolders","Denied (Inherited permission)");case C.INHERIT_ALLOW:return t("groupfolders","Allowed (Inherited permission)");case C.SELF_DENY:return t("groupfolders","Denied");case C.SELF_ALLOW:return t("groupfolders","Allowed")}return""}}};var N=i(5072),_=i.n(N),b=i(7825),w=i.n(b),x=i(7659),L=i.n(x),O=i(5056),R=i.n(O),D=i(540),P=i.n(D),B=i(1113),k=i.n(B),F=i(6763),M={};M.styleTagTransform=k(),M.setAttributes=R(),M.insert=L().bind(null,"head"),M.domAPI=w(),M.insertStyleElement=P();_()(F.A,M);F.A&&F.A.locals&&F.A.locals;var H=i(4486);const W=(0,H.A)(I,(function(){var t=this,e=t._self._c;return t.readOnly?e("div",[t.isAllowed?e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Allowed"),expression:"t('groupfolders', 'Allowed')"}],attrs:{title:t.t("groupfolders","Allowed"),"aria-label":t.t("groupfolders","Access allowed")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Check",{attrs:{size:16}})]},proxy:!0}],null,!1,21696331)}):e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Denied"),expression:"t('groupfolders', 'Denied')"}],attrs:{title:t.t("groupfolders","Denied"),"aria-label":t.t("groupfolders","Access denied")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Cancel",{attrs:{size:16}})]},proxy:!0}],null,!1,3542579339)})],1):e("div",[e("NcActions",{attrs:{"aria-label":t.label,"v-tooltip":t.label},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.icon,{tag:"component",class:{inherited:t.isInherited},attrs:{size:16}})]},proxy:!0}])},[t._v(" "),e("NcActionRadio",{attrs:{name:"state",checked:t.state===t.STATES.INHERIT_ALLOW||t.state===t.STATES.INHERIT_DENY||t.state===t.STATES.INHERIT_DEFAULT,disabled:t.disabled},on:{change:function(e){return t.$emit("update",t.STATES.INHERIT_DEFAULT)}}},[t._v("\n\t\t\t"+t._s(t.t("groupfolders","Inherit permission"))+"\n\t\t")]),t._v(" "),e("NcActionRadio",{attrs:{name:"state",checked:t.state===t.STATES.SELF_DENY,disabled:t.disabled},on:{change:function(e){return t.$emit("update",t.STATES.SELF_DENY)}}},[t._v("\n\t\t\t"+t._s(t.t("groupfolders","Deny"))+"\n\t\t")]),t._v(" "),e("NcActionRadio",{attrs:{name:"state",checked:t.state===t.STATES.SELF_ALLOW,disabled:t.disabled},on:{change:function(e){return t.$emit("update",t.STATES.SELF_ALLOW)}}},[t._v("\n\t\t\t"+t._s(t.t("groupfolders","Allow"))+"\n\t\t")])],1)],1)}),[],!1,null,"3b787510",null).exports;function Y(t){return Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Y(t)}function j(){j=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,i=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function d(t,e,n,r){var o=e&&e.prototype instanceof g?e:g,a=Object.create(o.prototype),s=new L(r||[]);return i(a,"_invoke",{value:_(t,n,s)}),a}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=d;var p="suspendedStart",A="suspendedYield",m="executing",h="completed",f={};function g(){}function v(){}function E(){}var y={};c(y,a,(function(){return this}));var S=Object.getPrototypeOf,T=S&&S(S(O([])));T&&T!==n&&r.call(T,a)&&(y=T);var C=E.prototype=g.prototype=Object.create(y);function I(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function n(i,o,a,s){var l=u(t[i],t,o);if("throw"!==l.type){var c=l.arg,d=c.value;return d&&"object"==Y(d)&&r.call(d,"__await")?e.resolve(d.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(d).then((function(t){c.value=t,a(c)}),(function(t){return n("throw",t,a,s)}))}s(l.arg)}var o;i(this,"_invoke",{value:function(t,r){function i(){return new e((function(e,i){n(t,r,e,i)}))}return o=o?o.then(i,i):i()}})}function _(e,n,r){var i=p;return function(o,a){if(i===m)throw Error("Generator is already running");if(i===h){if("throw"===o)throw a;return{value:t,done:!0}}for(r.method=o,r.arg=a;;){var s=r.delegate;if(s){var l=b(s,r);if(l){if(l===f)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(i===p)throw i=h,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);i=m;var c=u(e,n,r);if("normal"===c.type){if(i=r.done?h:A,c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(i=h,r.method="throw",r.arg=c.arg)}}}function b(e,n){var r=n.method,i=e.iterator[r];if(i===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,b(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=u(i,e.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,f;var a=o.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,f):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,f)}function w(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function x(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(w,this),this.reset(!0)}function O(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function n(){for(;++i<e.length;)if(r.call(e,i))return n.value=e[i],n.done=!1,n;return n.value=t,n.done=!0,n};return o.next=o}}throw new TypeError(Y(e)+" is not iterable")}return v.prototype=E,i(C,"constructor",{value:E,configurable:!0}),i(E,"constructor",{value:v,configurable:!0}),v.displayName=c(E,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===v||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,E):(t.__proto__=E,c(t,l,"GeneratorFunction")),t.prototype=Object.create(C),t},e.awrap=function(t){return{__await:t}},I(N.prototype),c(N.prototype,s,(function(){return this})),e.AsyncIterator=N,e.async=function(t,n,r,i,o){void 0===o&&(o=Promise);var a=new N(d(t,n,r,i),o);return e.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},I(C),c(C,l,"Generator"),c(C,a,(function(){return this})),c(C,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=O,L.prototype={constructor:L,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(x),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function i(r,i){return s.type="throw",s.arg=e,n.next=r,i&&(n.method="next",n.arg=t),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(l&&c){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(l){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;x(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:O(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),f}},e}function U(t,e,n,r,i,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,i)}function q(t){return function(t){if(Array.isArray(t))return $(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return $(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}var z=null;const G={name:"SharingSidebarView",directives:{tooltip:p.A},components:{NcAvatar:c.A,NcSelect:u.default,NcButton:d.A,AclStateButton:W,Plus:m.A,Delete:A.A},props:{fileInfo:{type:Object,required:!0}},data:function(){return{aclEnabled:!1,aclCanManage:!1,showAclCreate:!1,groupFolderId:null,loading:!1,isSearching:!1,options:[],value:null,model:null,list:[]}},computed:{isAdmin:function(){return this.aclCanManage},isNotInherited:function(){return function(t,e){return 0==(t&~e)}},isAllowed:function(){return function(t,e){return(t&e)>0}},getState:function(){var t=this;return function(e,n){var r=t.isAllowed(e,n.permissions);if(t.isNotInherited(e,n.mask))return r?C.SELF_ALLOW:C.SELF_DENY;var i=t.isAllowed(e,n.inheritedPermissions);return t.isNotInherited(e,n.inheritedMask)?i?C.INHERIT_ALLOW:C.INHERIT_DENY:C.INHERIT_DEFAULT}}},watch:{fileInfo:function(){this.loadAcls()}},beforeMount:function(){this.loadAcls()},methods:{loadAcls:function(){var t=this;this.options=[],this.loading=!0,this.model=JSON.parse(JSON.stringify(this.fileInfo)),f.A.propFind(this.model).then((function(e){e.acls&&(t.list=e.acls),t.inheritedAclsById=e.inheritedAclsById,t.aclEnabled=e.aclEnabled,t.aclCanManage=e.aclCanManage,t.groupFolderId=e.groupFolderId,t.loading=!1,t.searchMappings("")}))},getFullDisplayName:function(e,n){return"group"===n?"".concat(e," (").concat(t("groupfolders","Group"),")"):"circle"===n?"".concat(e," (").concat(t("groupfolders","Team"),")"):e},searchMappings:function(t){var e=this;z&&z.cancel("Operation canceled by another search request."),z=a.Ay.CancelToken.source(),this.isSearching=!0,a.Ay.get((0,l.Jv)("apps/groupfolders/folders/".concat(this.groupFolderId,"/search"))+"?format=json&search="+t,{cancelToken:z.token}).then((function(t){e.isSearching=!1;var n=Object.values(t.data.ocs.data.groups).map((function(t){return{unique:"group:"+t.gid,type:"group",id:t.gid,displayname:t.displayname,label:e.getFullDisplayName(t.displayname,"group")}})),r=Object.values(t.data.ocs.data.users).map((function(t){return{unique:"user:"+t.uid,type:"user",id:t.uid,displayname:t.displayname,label:e.getFullDisplayName(t.displayname,"user")}})),i=Object.values(t.data.ocs.data.circles).map((function(t){return{unique:"circle:"+t.sid,type:"circle",id:t.sid,displayname:t.displayname,label:e.getFullDisplayName(t.displayname,"circle")}}));e.options=[].concat(q(n),q(r),q(i)).filter((function(t){return!e.list.find((function(e){return t.unique===e.getUniqueMappingIdentifier()}))}))})).catch((function(t){a.Ay.isCancel(t)||logger.error("Failed to search results for groupfolder ACL")}))},toggleAclCreate:function(){var t=this;this.showAclCreate=!this.showAclCreate,this.showAclCreate&&o.Ay.nextTick((function(){t.$refs.select.$el.querySelector("input").focus()}))},createAcl:function(t){var e=this;this.value=null;var n=new g.A;n.fromValues(t.type,t.id,t.displayname,0,31),this.list.push(n),f.A.propPatch(this.model,this.list.filter((function(t){return!t.inherited}))).then((function(){e.showAclCreate=!1}))},removeAcl:function(t){var e=this,n=this.list.indexOf(t),r=this.list.concat([]);n>-1&&r.splice(n,1),f.A.propPatch(this.model,r.filter((function(t){return!t.inherited}))).then((function(){e.list.splice(n,1);var r=e.inheritedAclsById[t.getUniqueMappingIdentifier()];null!=r&&e.list.splice(n,0,r)}))},changePermission:function(t,e,n){var r=this;return function(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var o=t.apply(e,n);function a(t){U(o,r,i,a,s,"next",t)}function s(t){U(o,r,i,a,s,"throw",t)}a(void 0)}))}}(j().mark((function i(){var a,l,c,d,u;return j().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=r.list.indexOf(t),l=n===C.INHERIT_ALLOW||n===C.INHERIT_DENY||n===C.INHERIT_DEFAULT,c=n===C.SELF_ALLOW,d=h.firstHigh(e),u=t.clone(),t=t.clone(),l?t.mask=h.clear(t.mask,d):(t.mask=h.set(t.mask,d),t.permissions=c?h.set(t.permissions,d):h.clear(t.permissions,d)),t.inherited=!1,o.Ay.set(r.list,a,t),r.loading=!0,i.prev=10,i.next=13,f.A.propPatch(r.model,r.list.filter((function(t){return!t.inherited})));case 13:logger.debug("Permissions updated successfully"),i.next=21;break;case 16:i.prev=16,i.t0=i.catch(10),logger.error("Failed to save changes:",{error:i.t0}),o.Ay.set(r.list,a,u),(0,s.Qg)(i.t0);case 21:return i.prev=21,r.loading=!1,i.finish(21);case 24:case"end":return i.stop()}}),i,null,[[10,16,21,24]])})))()}}};var X=i(6814),V={};V.styleTagTransform=k(),V.setAttributes=R(),V.insert=L().bind(null,"head"),V.domAPI=w(),V.insertStyleElement=P();_()(X.A,V);X.A&&X.A.locals&&X.A.locals;const J=(0,H.A)(G,(function(){var t=this,e=t._self._c;return t.aclEnabled&&!t.loading?e("div",{attrs:{id:"groupfolder-acl-container"}},[e("div",{staticClass:"section-header"},[e("h4",[t._v(t._s(t.t("groupfolders","Advanced permissions for Team folder")))])]),t._v(" "),t._m(0),t._v(" "),e("table",[e("thead",[e("tr",[e("th"),t._v(" "),e("th",[t.model?e("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.model.name,expression:"model.name"}]},[t._v("\n\t\t\t\t\t\t"+t._s(t.model.name)+"\n\t\t\t\t\t")]):e("span",[t._v("\n\t\t\t\t\t\t"+t._s(t.t("groupfolders","Team folder"))+"\n\t\t\t\t\t")])]),t._v(" "),e("th",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Read"),expression:"t('groupfolders', 'Read')"}],staticClass:"state-column"},[t._v("\n\t\t\t\t\t"+t._s(t.t("groupfolders","Read"))+"\n\t\t\t\t")]),t._v(" "),e("th",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Write"),expression:"t('groupfolders', 'Write')"}],staticClass:"state-column"},[t._v("\n\t\t\t\t\t"+t._s(t.t("groupfolders","Write"))+"\n\t\t\t\t")]),t._v(" "),"dir"===t.model.type?e("th",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Create"),expression:"t('groupfolders', 'Create')"}],staticClass:"state-column"},[t._v("\n\t\t\t\t\t"+t._s(t.t("groupfolders","Create"))+"\n\t\t\t\t")]):t._e(),t._v(" "),e("th",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Delete"),expression:"t('groupfolders', 'Delete')"}],staticClass:"state-column"},[t._v("\n\t\t\t\t\t"+t._s(t.t("groupfolders","Delete"))+"\n\t\t\t\t")]),t._v(" "),e("th",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.t("groupfolders","Share"),expression:"t('groupfolders', 'Share')"}],staticClass:"state-column"},[t._v("\n\t\t\t\t\t"+t._s(t.t("groupfolders","Share"))+"\n\t\t\t\t")]),t._v(" "),e("th",{staticClass:"state-column"})])]),t._v(" "),t.isAdmin?e("tbody",t._l(t.list,(function(n){return e("tr",{key:n.mappingType+"-"+n.mappingId},[e("td",[e("NcAvatar",{attrs:{user:n.mappingId,"is-no-user":"user"!==n.mappingType,size:24}})],1),t._v(" "),e("td",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.getFullDisplayName(n.mappingDisplayName,n.mappingType),expression:"getFullDisplayName(item.mappingDisplayName, item.mappingType)"}],staticClass:"username"},[t._v("\n\t\t\t\t\t"+t._s(t.getFullDisplayName(n.mappingDisplayName,n.mappingType))+"\n\t\t\t\t")]),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_READ,n),inherited:n.inherited,disabled:t.loading},on:{update:function(e){return t.changePermission(n,t.OC.PERMISSION_READ,e)}}})],1),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_UPDATE,n),inherited:n.inherited,disabled:t.loading},on:{update:function(e){return t.changePermission(n,t.OC.PERMISSION_UPDATE,e)}}})],1),t._v(" "),"dir"===t.model.type?e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_CREATE,n),inherited:n.inherited,disabled:t.loading},on:{update:function(e){return t.changePermission(n,t.OC.PERMISSION_CREATE,e)}}})],1):t._e(),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_DELETE,n),inherited:n.inherited,disabled:t.loading},on:{update:function(e){return t.changePermission(n,t.OC.PERMISSION_DELETE,e)}}})],1),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_SHARE,n),inherited:n.inherited,disabled:t.loading},on:{update:function(e){return t.changePermission(n,t.OC.PERMISSION_SHARE,e)}}})],1),t._v(" "),e("td",{staticClass:"state-column"},[!1===n.inherited?e("NcButton",{attrs:{type:"tertiary","v-tooltip":t.t("groupfolders","Remove access rule"),"aria-label":t.t("groupfolders","Remove access rule")},on:{click:function(e){return t.removeAcl(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:16}})]},proxy:!0}],null,!0)}):t._e()],1)])})),0):e("tbody",[e("tr",[e("td",[e("NcAvatar",{attrs:{user:"admin",size:24}})],1),t._v(" "),e("td",{staticClass:"username"},[t._v("\n\t\t\t\t\t"+t._s(t.t("groupfolders","You"))+"\n\t\t\t\t")]),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_READ,{permissions:t.model.permissions,mask:31}),"read-only":!0}})],1),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_UPDATE,{permissions:t.model.permissions,mask:31}),"read-only":!0}})],1),t._v(" "),"dir"===t.model.type?e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_CREATE,{permissions:t.model.permissions,mask:31}),"read-only":!0}})],1):t._e(),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_DELETE,{permissions:t.model.permissions,mask:31}),"read-only":!0}})],1),t._v(" "),e("td",{staticClass:"state-column"},[e("AclStateButton",{attrs:{state:t.getState(t.OC.PERMISSION_SHARE,{permissions:t.model.permissions,mask:31}),"read-only":!0}})],1)])])]),t._v(" "),!t.isAdmin||t.loading||t.showAclCreate?t._e():e("NcButton",{on:{click:t.toggleAclCreate},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:16}})]},proxy:!0}],null,!1,1065440311)},[t._v("\n\t\t"+t._s(t.t("groupfolders","Add new rule"))+"\n\t")]),t._v(" "),t.isAdmin&&!t.loading&&t.showAclCreate?e("NcSelect",{ref:"select",attrs:{options:t.options,loading:t.isSearching,filterable:!1,placeholder:t.t("groupfolders","Select a user or group"),"get-option-key":function(){return"unique"}},on:{input:t.createAcl,search:t.searchMappings},scopedSlots:t._u([{key:"option",fn:function(n){return[e("NcAvatar",{attrs:{user:n.id,"is-no-user":"user"!==n.type}}),t._v("\n\t\t\t"+t._s(n.label)+"\n\t\t")]}}],null,!1,918868790),model:{value:t.value,callback:function(e){t.value=e},expression:"value"}}):t._e()],1):t._e()}),[function(){var t=this._self._c;return t("div",{staticClass:"groupfolder-entry"},[t("div",{staticClass:"avatar icon-group-white"}),this._v(" "),t("span",{staticClass:"username"})])}],!1,null,"97832dfc",null).exports;var Q=i(6036);o.Ay.prototype.t=t,o.Ay.prototype.n=n,o.Ay.prototype.OC=OC,o.Ay.prototype.OCA=OCA,o.Ay.use(Q.m_);const K=o.Ay.extend(J)},6763:(t,e,n)=>{n.d(e,{A:()=>s});var r=n(1354),i=n.n(r),o=n(6314),a=n.n(o)()(i());a.push([t.id,"\n.inherited[data-v-3b787510] {\n\topacity: 0.5;\n\tcolor: var(--color-text-maxcontrast);\n}\n","",{version:3,sources:["webpack://./src/components/AclStateButton.vue"],names:[],mappings:";AAkJA;CACA,YAAA;CACA,oCAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2018 F7cloud GmbH and F7cloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n<template>\n\t<div v-if=\"readOnly\">\n\t\t<NcButton v-if=\"!isAllowed\"\n\t\t\tv-tooltip=\"t('groupfolders', 'Denied')\"\n\t\t\t:title=\"t('groupfolders', 'Denied')\"\n\t\t\t:aria-label=\"t('groupfolders', 'Access denied')\">\n\t\t\t<template #icon>\n\t\t\t\t<Cancel :size=\"16\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t\t<NcButton v-else\n\t\t\tv-tooltip=\"t('groupfolders', 'Allowed')\"\n\t\t\t:title=\"t('groupfolders', 'Allowed')\"\n\t\t\t:aria-label=\"t('groupfolders', 'Access allowed')\">\n\t\t\t<template #icon>\n\t\t\t\t<Check :size=\"16\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</div>\n\t<div v-else>\n\t\t<NcActions :aria-label=\"label\" :v-tooltip=\"label\">\n\t\t\t<template #icon>\n\t\t\t\t<component :is=\"icon\" :class=\"{inherited: isInherited}\" :size=\"16\" />\n\t\t\t</template>\n\t\t\t<NcActionRadio name=\"state\"\n\t\t\t\t:checked=\"state === STATES.INHERIT_ALLOW || state === STATES.INHERIT_DENY || state === STATES.INHERIT_DEFAULT\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@change=\"$emit('update', STATES.INHERIT_DEFAULT)\">\n\t\t\t\t{{ t('groupfolders', 'Inherit permission') }}\n\t\t\t</NcActionRadio>\n\t\t\t<NcActionRadio name=\"state\"\n\t\t\t\t:checked=\"state === STATES.SELF_DENY\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@change=\"$emit('update', STATES.SELF_DENY)\">\n\t\t\t\t{{ t('groupfolders', 'Deny') }}\n\t\t\t</NcActionRadio>\n\t\t\t<NcActionRadio name=\"state\"\n\t\t\t\t:checked=\"state === STATES.SELF_ALLOW\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@change=\"$emit('update', STATES.SELF_ALLOW)\">\n\t\t\t\t{{ t('groupfolders', 'Allow') }}\n\t\t\t</NcActionRadio>\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script>\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Cancel from 'vue-material-design-icons/Cancel.vue'\nimport Minus from 'vue-material-design-icons/Minus.vue'\nimport NcButton from '@f7cloud/vue/dist/Components/NcButton.js'\nimport NcActions from '@f7cloud/vue/dist/Components/NcActions.js'\nimport NcActionRadio from '@f7cloud/vue/dist/Components/NcActionRadio.js'\nimport Tooltip from '@f7cloud/vue/dist/Directives/Tooltip.js'\n\nexport const STATES = {\n\tINHERIT_DENY: 0,\n\tINHERIT_ALLOW: 1,\n\tINHERIT_DEFAULT: 2,\n\tSELF_DENY: 3,\n\tSELF_ALLOW: 4,\n}\n\nexport default {\n\tname: 'AclStateButton',\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tcomponents: {\n\t\tNcButton,\n\t\tNcActions,\n\t\tNcActionRadio,\n\t\tCheck,\n\t\tCancel,\n\t},\n\tprops: {\n\t\tinherited: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tstate: {\n\t\t\ttype: Number,\n\t\t\tdefault: STATES.INHERIT_DENY,\n\t\t},\n\t\treadOnly: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tSTATES,\n\t\t}\n\t},\n\tcomputed: {\n\t\tisAllowed() {\n\t\t\treturn this.state === STATES.INHERIT_ALLOW || this.state === STATES.SELF_ALLOW || this.state === STATES.INHERIT_DEFAULT\n\t\t},\n\t\tisInherited() {\n\t\t\treturn this.state === STATES.INHERIT_ALLOW || this.state === STATES.INHERIT_DENY || this.state === STATES.INHERIT_DEFAULT\n\t\t},\n\t\ticon() {\n\t\t\tswitch (this.state) {\n\t\t\tcase STATES.INHERIT_DEFAULT:\n\t\t\t\treturn Minus\n\t\t\tcase STATES.INHERIT_ALLOW:\n\t\t\tcase STATES.SELF_ALLOW:\n\t\t\t\treturn Check\n\t\t\tdefault:\n\t\t\t\treturn Cancel\n\t\t\t}\n\t\t},\n\t\tlabel() {\n\t\t\tswitch (this.state) {\n\t\t\tcase STATES.INHERIT_DEFAULT:\n\t\t\t\treturn t('groupfolders', 'Unset')\n\t\t\tcase STATES.INHERIT_DENY:\n\t\t\t\treturn t('groupfolders', 'Denied (Inherited permission)')\n\t\t\tcase STATES.INHERIT_ALLOW:\n\t\t\t\treturn t('groupfolders', 'Allowed (Inherited permission)')\n\t\t\tcase STATES.SELF_DENY:\n\t\t\t\treturn t('groupfolders', 'Denied')\n\t\t\tcase STATES.SELF_ALLOW:\n\t\t\t\treturn t('groupfolders', 'Allowed')\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.inherited {\n\t\topacity: 0.5;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n</style>\n"],sourceRoot:""}]);const s=a},6814:(t,e,n)=>{n.d(e,{A:()=>s});var r=n(1354),i=n.n(r),o=n(6314),a=n.n(o)()(i());a.push([t.id,"\n#groupfolder-acl-container[data-v-97832dfc] {\n\t\tborder-top: 2px solid var(--color-border);\n\t\tmargin-bottom: 20px;\n}\n.groupfolder-entry[data-v-97832dfc] {\n\t\theight: 44px;\n\t\twhite-space: normal;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tposition: relative;\n}\n.avatar.icon-group-white[data-v-97832dfc] {\n\t\tdisplay: inline-block;\n\t\tbackground-color: var(--color-primary-element, #0082c9);\n\t\tpadding: 16px;\n}\n.groupfolder-entry .username[data-v-97832dfc] {\n\t\tpadding: 0 8px;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n}\ntable[data-v-97832dfc] {\n\t\twidth: 100%;\n\t\tmargin-top: -44px;\n\t\tmargin-bottom: 5px;\n}\ntable td[data-v-97832dfc], table th[data-v-97832dfc] {\n\t\tpadding: 0\n}\nthead th[data-v-97832dfc] {\n\t\theight: 44px;\n}\nthead th[data-v-97832dfc]:first-child,\n\ttbody tr td[data-v-97832dfc]:first-child {\n\t\twidth: 24px;\n\t\tpadding: 0;\n\t\tpadding-left: 4px;\n}\ntable .avatardiv[data-v-97832dfc] {\n\t\tmargin-top: 6px;\n}\ntable thead th[data-v-97832dfc]:nth-child(2),\n\ttable .username[data-v-97832dfc] {\n\t\tpadding-left: 13px;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: 0;\n\t\tmin-width: 50px;\n}\n.state-column[data-v-97832dfc] {\n\t\ttext-align: center;\n\t\twidth: 44px !important;\n\t\tpadding: 3px;\n}\nthead .state-column[data-v-97832dfc] {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n}\ntable button[data-v-97832dfc] {\n\t\theight: 26px;\n\t\twidth: 24px !important;\n\t\tdisplay: block;\n\t\tborder-radius: 50%;\n\t\tmargin: auto;\n}\na.icon-close[data-v-97832dfc] {\n\t\tdisplay: inline-block;\n\t\theight: 24px;\n\t\twidth: 100%;\n\t\tvertical-align: middle;\n\t\tbackground-size: 12px;\n\t\topacity: .7;\n\t\tfloat: right;\n}\na.icon-close[data-v-97832dfc]:hover {\n\t\topacity: 1;\n}\n.multiselect[data-v-97832dfc] {\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px);\n}\n.section-header[data-v-97832dfc] {\n\tmargin-top: 4px;\n\tmargin-bottom: 8px;\n\tdisplay: flex;\n\talign-items: center;\nh4[data-v-97832dfc] {\n\t\tmargin: 0;\n\t\tfont-size: 16px;\n}\n.hint-icon[data-v-97832dfc] {\n\t\tcolor: var(--color-primary-element);\n}\n}\n","",{version:3,sources:["webpack://./src/components/SharingSidebarView.vue"],names:[],mappings:";AA+YA;EACA,yCAAA;EACA,mBAAA;AACA;AAEA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;AACA;AAEA;EACA,qBAAA;EACA,uDAAA;EACA,aAAA;AACA;AAEA;EACA,cAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;AACA;AAEA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;AACA;AAEA;EACA;AACA;AAEA;EACA,YAAA;AACA;AAEA;;EAEA,WAAA;EACA,UAAA;EACA,iBAAA;AACA;AAEA;EACA,eAAA;AACA;AAEA;;EAEA,kBAAA;EACA,uBAAA;EACA,gBAAA;EACA,YAAA;EACA,eAAA;AACA;AAEA;EACA,kBAAA;EACA,sBAAA;EACA,YAAA;AACA;AAEA;EACA,uBAAA;EACA,gBAAA;AACA;AAEA;EACA,YAAA;EACA,sBAAA;EACA,cAAA;EACA,kBAAA;EACA,YAAA;AACA;AAEA;EACA,qBAAA;EACA,YAAA;EACA,WAAA;EACA,sBAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;AACA;AAEA;EACA,UAAA;AACA;AAEA;EACA,iBAAA;EACA,wBAAA;AACA;AAEA;CACA,eAAA;CACA,kBAAA;CACA,aAAA;CACA,mBAAA;AAEA;EACA,SAAA;EACA,eAAA;AACA;AAEA;EACA,mCAAA;AACA;AACA",sourcesContent:['\x3c!--\n - SPDX-FileCopyrightText: 2018 F7cloud GmbH and F7cloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n<template>\n\t<div v-if="aclEnabled && !loading" id="groupfolder-acl-container">\n\t\t<div class="section-header">\n\t\t\t<h4>{{ t(\'groupfolders\', \'Advanced permissions for Team folder\') }}</h4>\n\t\t</div>\n\t\t<div class="groupfolder-entry">\n\t\t\t<div class="avatar icon-group-white" />\n\t\t\t<span class="username" />\n\t\t</div>\n\t\t<table>\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th />\n\t\t\t\t\t<th>\n\t\t\t\t\t\t<span v-if="model" v-tooltip="model.name">\n\t\t\t\t\t\t\t{{ model.name }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-else>\n\t\t\t\t\t\t\t{{ t(\'groupfolders\', \'Team folder\') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-tooltip="t(\'groupfolders\', \'Read\')" class="state-column">\n\t\t\t\t\t\t{{ t(\'groupfolders\', \'Read\') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-tooltip="t(\'groupfolders\', \'Write\')" class="state-column">\n\t\t\t\t\t\t{{ t(\'groupfolders\', \'Write\') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-if="model.type === \'dir\'" v-tooltip="t(\'groupfolders\', \'Create\')" class="state-column">\n\t\t\t\t\t\t{{ t(\'groupfolders\', \'Create\') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-tooltip="t(\'groupfolders\', \'Delete\')" class="state-column">\n\t\t\t\t\t\t{{ t(\'groupfolders\', \'Delete\') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-tooltip="t(\'groupfolders\', \'Share\')" class="state-column">\n\t\t\t\t\t\t{{ t(\'groupfolders\', \'Share\') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th class="state-column" />\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody v-if="!isAdmin">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<NcAvatar user="admin" :size="24" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="username">\n\t\t\t\t\t\t{{ t(\'groupfolders\', \'You\') }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_READ, {\n\t\t\t\t\t\t\t\tpermissions: model.permissions,\n\t\t\t\t\t\t\t\tmask: 31,\n\t\t\t\t\t\t\t})"\n\t\t\t\t\t\t\t:read-only="true" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_UPDATE, {\n\t\t\t\t\t\t\t\tpermissions: model.permissions,\n\t\t\t\t\t\t\t\tmask: 31,\n\t\t\t\t\t\t\t})"\n\t\t\t\t\t\t\t:read-only="true" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if="model.type === \'dir\'" class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_CREATE, {\n\t\t\t\t\t\t\t\tpermissions: model.permissions,\n\t\t\t\t\t\t\t\tmask: 31,\n\t\t\t\t\t\t\t})"\n\t\t\t\t\t\t\t:read-only="true" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_DELETE, {\n\t\t\t\t\t\t\t\tpermissions: model.permissions,\n\t\t\t\t\t\t\t\tmask: 31,\n\t\t\t\t\t\t\t})"\n\t\t\t\t\t\t\t:read-only="true" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_SHARE, {\n\t\t\t\t\t\t\t\tpermissions: model.permissions,\n\t\t\t\t\t\t\t\tmask: 31,\n\t\t\t\t\t\t\t})"\n\t\t\t\t\t\t\t:read-only="true" />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t\t<tbody v-else>\n\t\t\t\t<tr v-for="item in list" :key="item.mappingType + \'-\' + item.mappingId">\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<NcAvatar :user="item.mappingId" :is-no-user="item.mappingType !== \'user\'" :size="24" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-tooltip="getFullDisplayName(item.mappingDisplayName, item.mappingType)" class="username">\n\t\t\t\t\t\t{{ getFullDisplayName(item.mappingDisplayName, item.mappingType) }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_READ, item)"\n\t\t\t\t\t\t\t:inherited="item.inherited"\n\t\t\t\t\t\t\t:disabled="loading"\n\t\t\t\t\t\t\t@update="changePermission(item, OC.PERMISSION_READ, $event)" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_UPDATE, item)"\n\t\t\t\t\t\t\t:inherited="item.inherited"\n\t\t\t\t\t\t\t:disabled="loading"\n\t\t\t\t\t\t\t@update="changePermission(item, OC.PERMISSION_UPDATE, $event)" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if="model.type === \'dir\'" class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_CREATE, item)"\n\t\t\t\t\t\t\t:inherited="item.inherited"\n\t\t\t\t\t\t\t:disabled="loading"\n\t\t\t\t\t\t\t@update="changePermission(item, OC.PERMISSION_CREATE, $event)" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_DELETE, item)"\n\t\t\t\t\t\t\t:inherited="item.inherited"\n\t\t\t\t\t\t\t:disabled="loading"\n\t\t\t\t\t\t\t@update="changePermission(item, OC.PERMISSION_DELETE, $event)" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<AclStateButton :state="getState(OC.PERMISSION_SHARE, item)"\n\t\t\t\t\t\t\t:inherited="item.inherited"\n\t\t\t\t\t\t\t:disabled="loading"\n\t\t\t\t\t\t\t@update="changePermission(item, OC.PERMISSION_SHARE, $event)" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="state-column">\n\t\t\t\t\t\t<NcButton v-if="item.inherited === false"\n\t\t\t\t\t\t\ttype="tertiary"\n\t\t\t\t\t\t\t:v-tooltip="t(\'groupfolders\', \'Remove access rule\')"\n\t\t\t\t\t\t\t:aria-label="t(\'groupfolders\', \'Remove access rule\')"\n\t\t\t\t\t\t\t@click="removeAcl(item)">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<Delete :size="16" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t\t<NcButton v-if="isAdmin && !loading && !showAclCreate"\n\t\t\t@click="toggleAclCreate">\n\t\t\t<template #icon>\n\t\t\t\t<Plus :size="16" />\n\t\t\t</template>\n\t\t\t{{ t(\'groupfolders\', \'Add new rule\') }}\n\t\t</NcButton>\n\t\t<NcSelect v-if="isAdmin && !loading && showAclCreate"\n\t\t\tref="select"\n\t\t\tv-model="value"\n\t\t\t:options="options"\n\t\t\t:loading="isSearching"\n\t\t\t:filterable="false"\n\t\t\t:placeholder="t(\'groupfolders\', \'Select a user or group\')"\n\t\t\t:get-option-key="() => \'unique\'"\n\t\t\t@input="createAcl"\n\t\t\t@search="searchMappings">\n\t\t\t<template #option="option">\n\t\t\t\t<NcAvatar :user="option.id" :is-no-user="option.type !== \'user\'" />\n\t\t\t\t{{ option.label }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport axios from \'@f7cloud/axios\'\nimport { showError } from \'@f7cloud/dialogs\'\nimport { generateUrl } from \'@f7cloud/router\'\nimport NcAvatar from \'@f7cloud/vue/dist/Components/NcAvatar.js\'\nimport NcButton from \'@f7cloud/vue/dist/Components/NcButton.js\'\nimport NcSelect from \'@f7cloud/vue/dist/Components/NcSelect.js\'\nimport Tooltip from \'@f7cloud/vue/dist/Directives/Tooltip.js\'\nimport Vue from \'vue\'\nimport Delete from \'vue-material-design-icons/TrashCanOutline.vue\'\nimport Plus from \'vue-material-design-icons/Plus.vue\'\nimport BinaryTools from \'./../BinaryTools.js\'\nimport client from \'./../client.js\'\nimport Rule from \'./../model/Rule.js\'\nimport AclStateButton, { STATES } from \'./AclStateButton.vue\'\n\nlet searchRequestCancelSource = null\n\nexport default {\n\tname: \'SharingSidebarView\',\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcSelect,\n\t\tNcButton,\n\t\tAclStateButton,\n\t\tPlus,\n\t\tDelete,\n\t},\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\taclEnabled: false,\n\t\t\taclCanManage: false,\n\t\t\tshowAclCreate: false,\n\t\t\tgroupFolderId: null,\n\t\t\tloading: false,\n\t\t\tisSearching: false,\n\t\t\toptions: [],\n\t\t\tvalue: null,\n\t\t\tmodel: null,\n\t\t\tlist: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tisAdmin() {\n\t\t\treturn this.aclCanManage\n\t\t},\n\t\tisNotInherited() {\n\t\t\treturn (permission, mask) => {\n\t\t\t\treturn (permission & ~mask) === 0\n\t\t\t}\n\t\t},\n\t\tisAllowed() {\n\t\t\treturn (permission, permissions) => {\n\t\t\t\treturn (permission & permissions) > 0\n\t\t\t}\n\t\t},\n\t\tgetState() {\n\t\t\treturn (permission, item) => {\n\t\t\t\tconst permitted = this.isAllowed(permission, item.permissions)\n\t\t\t\tif (this.isNotInherited(permission, item.mask)) {\n\t\t\t\t\treturn permitted ? STATES.SELF_ALLOW : STATES.SELF_DENY\n\t\t\t\t} else {\n\t\t\t\t\tconst inheritPermitted = this.isAllowed(permission, item.inheritedPermissions)\n\t\t\t\t\tif (this.isNotInherited(permission, item.inheritedMask)) {\n\t\t\t\t\t\treturn inheritPermitted ? STATES.INHERIT_ALLOW : STATES.INHERIT_DENY\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn STATES.INHERIT_DEFAULT\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo(/* newVal, oldVal */) {\n\t\t\t// reload ACL entries if file changes\n\t\t\tthis.loadAcls()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\t// load ACL entries for initial file\n\t\tthis.loadAcls()\n\t},\n\tmethods: {\n\t\tloadAcls() {\n\t\t\tthis.options = []\n\t\t\tthis.loading = true\n\t\t\tthis.model = JSON.parse(JSON.stringify(this.fileInfo))\n\t\t\tclient.propFind(this.model).then((data) => {\n\t\t\t\tif (data.acls) {\n\t\t\t\t\tthis.list = data.acls\n\t\t\t\t}\n\t\t\t\tthis.inheritedAclsById = data.inheritedAclsById\n\t\t\t\tthis.aclEnabled = data.aclEnabled\n\t\t\t\tthis.aclCanManage = data.aclCanManage\n\t\t\t\tthis.groupFolderId = data.groupFolderId\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.searchMappings(\'\')\n\t\t\t})\n\t\t},\n\t\tgetFullDisplayName(displayName, type) {\n\t\t\tif (type === \'group\') {\n\t\t\t\treturn `${displayName} (${t(\'groupfolders\', \'Group\')})`\n\t\t\t}\n\t\t\tif (type === \'circle\') {\n\t\t\t\treturn `${displayName} (${t(\'groupfolders\', \'Team\')})`\n\t\t\t}\n\n\t\t\treturn displayName\n\t\t},\n\t\tsearchMappings(query) {\n\t\t\tif (searchRequestCancelSource) {\n\t\t\t\tsearchRequestCancelSource.cancel(\'Operation canceled by another search request.\')\n\t\t\t}\n\t\t\tsearchRequestCancelSource = axios.CancelToken.source()\n\t\t\tthis.isSearching = true\n\t\t\taxios.get(generateUrl(`apps/groupfolders/folders/${this.groupFolderId}/search`) + \'?format=json&search=\' + query, {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t}).then((result) => {\n\t\t\t\tthis.isSearching = false\n\t\t\t\tconst groups = Object.values(result.data.ocs.data.groups).map((group) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tunique: \'group:\' + group.gid,\n\t\t\t\t\t\ttype: \'group\',\n\t\t\t\t\t\tid: group.gid,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t\tlabel: this.getFullDisplayName(group.displayname, \'group\'),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tconst users = Object.values(result.data.ocs.data.users).map((user) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tunique: \'user:\' + user.uid,\n\t\t\t\t\t\ttype: \'user\',\n\t\t\t\t\t\tid: user.uid,\n\t\t\t\t\t\tdisplayname: user.displayname,\n\t\t\t\t\t\tlabel: this.getFullDisplayName(user.displayname, \'user\'),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tconst circles = Object.values(result.data.ocs.data.circles).map((user) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tunique: \'circle:\' + user.sid,\n\t\t\t\t\t\ttype: \'circle\',\n\t\t\t\t\t\tid: user.sid,\n\t\t\t\t\t\tdisplayname: user.displayname,\n\t\t\t\t\t\tlabel: this.getFullDisplayName(user.displayname, \'circle\'),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tthis.options = [...groups, ...users, ...circles].filter((entry) => {\n\t\t\t\t\t// filter out existing acl rules\n\t\t\t\t\treturn !this.list.find((existingAcl) => entry.unique === existingAcl.getUniqueMappingIdentifier())\n\t\t\t\t})\n\t\t\t}).catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tlogger.error(\'Failed to search results for groupfolder ACL\')\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\ttoggleAclCreate() {\n\t\t\tthis.showAclCreate = !this.showAclCreate\n\t\t\tif (this.showAclCreate) {\n\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\tthis.$refs.select.$el.querySelector(\'input\').focus()\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tcreateAcl(option) {\n\t\t\tthis.value = null\n\t\t\tconst rule = new Rule()\n\t\t\trule.fromValues(option.type, option.id, option.displayname, 0b00000, 0b11111)\n\t\t\tthis.list.push(rule)\n\t\t\tclient.propPatch(this.model, this.list.filter(rule => !rule.inherited)).then(() => {\n\t\t\t\tthis.showAclCreate = false\n\t\t\t})\n\t\t},\n\t\tremoveAcl(rule) {\n\t\t\tconst index = this.list.indexOf(rule)\n\t\t\tconst list = this.list.concat([]) // shallow clone\n\t\t\tif (index > -1) {\n\t\t\t\tlist.splice(index, 1)\n\t\t\t}\n\t\t\tclient.propPatch(this.model, list.filter(rule => !rule.inherited)).then(() => {\n\t\t\t\tthis.list.splice(index, 1)\n\t\t\t\tconst inheritedAcl = this.inheritedAclsById[rule.getUniqueMappingIdentifier()]\n\t\t\t\tif (inheritedAcl != null) {\n\t\t\t\t\tthis.list.splice(index, 0, inheritedAcl)\n\t\t\t\t}\n\t\t\t})\n\n\t\t},\n\t\tasync changePermission(item, permission, $event) {\n\t\t\tconst index = this.list.indexOf(item)\n\t\t\tconst inherit = $event === STATES.INHERIT_ALLOW || $event === STATES.INHERIT_DENY || $event === STATES.INHERIT_DEFAULT\n\t\t\tconst allow = $event === STATES.SELF_ALLOW\n\t\t\tconst bit = BinaryTools.firstHigh(permission)\n\t\t\tconst itemRestorePoint = item.clone()\n\t\t\titem = item.clone()\n\t\t\tif (inherit) {\n\t\t\t\titem.mask = BinaryTools.clear(item.mask, bit)\n\t\t\t\t// we can ignore permissions, since they are inherited\n\t\t\t} else {\n\t\t\t\titem.mask = BinaryTools.set(item.mask, bit)\n\t\t\t\tif (allow) {\n\t\t\t\t\titem.permissions = BinaryTools.set(item.permissions, bit)\n\t\t\t\t} else {\n\t\t\t\t\titem.permissions = BinaryTools.clear(item.permissions, bit)\n\t\t\t\t}\n\t\t\t}\n\t\t\titem.inherited = false\n\t\t\tVue.set(this.list, index, item)\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait client.propPatch(this.model, this.list.filter(rule => !rule.inherited))\n\t\t\t\tlogger.debug(\'Permissions updated successfully\')\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\'Failed to save changes:\', { error })\n\t\t\t\tVue.set(this.list, index, itemRestorePoint)\n\t\t\t\tshowError(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 scoped>\n\t#groupfolder-acl-container {\n\t\tborder-top: 2px solid var(--color-border);\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.groupfolder-entry {\n\t\theight: 44px;\n\t\twhite-space: normal;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\t.avatar.icon-group-white {\n\t\tdisplay: inline-block;\n\t\tbackground-color: var(--color-primary-element, #0082c9);\n\t\tpadding: 16px;\n\t}\n\n\t.groupfolder-entry .username {\n\t\tpadding: 0 8px;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\ttable {\n\t\twidth: 100%;\n\t\tmargin-top: -44px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\ttable td, table th {\n\t\tpadding: 0\n\t}\n\n\tthead th {\n\t\theight: 44px;\n\t}\n\n\tthead th:first-child,\n\ttbody tr td:first-child {\n\t\twidth: 24px;\n\t\tpadding: 0;\n\t\tpadding-left: 4px;\n\t}\n\n\ttable .avatardiv {\n\t\tmargin-top: 6px;\n\t}\n\n\ttable thead th:nth-child(2),\n\ttable .username {\n\t\tpadding-left: 13px;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: 0;\n\t\tmin-width: 50px;\n\t}\n\n\t.state-column {\n\t\ttext-align: center;\n\t\twidth: 44px !important;\n\t\tpadding: 3px;\n\t}\n\n\tthead .state-column {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\ttable button {\n\t\theight: 26px;\n\t\twidth: 24px !important;\n\t\tdisplay: block;\n\t\tborder-radius: 50%;\n\t\tmargin: auto;\n\t}\n\n\ta.icon-close {\n\t\tdisplay: inline-block;\n\t\theight: 24px;\n\t\twidth: 100%;\n\t\tvertical-align: middle;\n\t\tbackground-size: 12px;\n\t\topacity: .7;\n\t\tfloat: right;\n\t}\n\n\ta.icon-close:hover {\n\t\topacity: 1;\n\t}\n\n\t.multiselect {\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px);\n\t}\n\n.section-header {\n\tmargin-top: 4px;\n\tmargin-bottom: 8px;\n\tdisplay: flex;\n\talign-items: center;\n\n\th4 {\n\t\tmargin: 0;\n\t\tfont-size: 16px;\n\t}\n\n\t.hint-icon {\n\t\tcolor: var(--color-primary-element);\n\t}\n}\n</style>\n'],sourceRoot:""}]);const s=a},7518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},7514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},9722:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},6886:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"}}]);
//# sourceMappingURL=groupfolders-sharing.js.map?v=b9a3e6d89c2503332f03