@nocobase/plugin-acl 1.3.38-beta → 1.4.0-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { TabsProps } from 'antd/es/tabs/index';
10
10
  import React from 'react';
11
+ import { TFunction } from 'react-i18next';
11
12
  import { Role } from './RolesManagerProvider';
12
13
  interface PermissionsTabsProps {
13
14
  /**
@@ -17,11 +18,15 @@ interface PermissionsTabsProps {
17
18
  /**
18
19
  * the currently selected role
19
20
  */
20
- role: Role;
21
+ activeRole: null | Role;
22
+ /**
23
+ * the current user's role
24
+ */
25
+ currentUserRole: null | Role;
21
26
  /**
22
27
  * translation function
23
28
  */
24
- t: (key: string) => string;
29
+ t: TFunction;
25
30
  /**
26
31
  * used to constrain the size of the container in the Tab
27
32
  */
@@ -7,7 +7,7 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- (function(v,l){typeof exports=="object"&&typeof module!="undefined"?l(exports,require("@nocobase/client"),require("react/jsx-runtime"),require("@formily/core"),require("@formily/react"),require("@formily/shared"),require("ahooks"),require("antd"),require("react"),require("react-i18next"),require("lodash"),require("antd-style"),require("@ant-design/icons"),require("@nocobase/utils/client")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","react/jsx-runtime","@formily/core","@formily/react","@formily/shared","ahooks","antd","react","react-i18next","lodash","antd-style","@ant-design/icons","@nocobase/utils/client"],l):(v=typeof globalThis!="undefined"?globalThis:v||self,l(v["@nocobase/plugin-acl"]={},v["@nocobase/client"],v.jsxRuntime,v["@formily/core"],v["@formily/react"],v["@formily/shared"],v.ahooks,v.antd,v.react,v["react-i18next"],v.lodash,v["antd-style"],v["@ant-design/icons"],v["@nocobase/utils"]))})(this,function(v,l,a,N,O,D,L,p,d,w,te,Qe,fe,Re){"use strict";var Ti=Object.defineProperty,Oi=Object.defineProperties;var Mi=Object.getOwnPropertyDescriptors;var Ze=Object.getOwnPropertySymbols;var Fi=Object.prototype.hasOwnProperty,Ei=Object.prototype.propertyIsEnumerable;var he=(v,l,a)=>l in v?Ti(v,l,{enumerable:!0,configurable:!0,writable:!0,value:a}):v[l]=a,x=(v,l)=>{for(var a in l||(l={}))Fi.call(l,a)&&he(v,a,l[a]);if(Ze)for(var a of Ze(l))Ei.call(l,a)&&he(v,a,l[a]);return v},E=(v,l)=>Oi(v,Mi(l));var z=(v,l,a)=>(he(v,typeof l!="symbol"?l+"":l,a),a);var $=(v,l,a)=>new Promise((N,O)=>{var D=d=>{try{p(a.next(d))}catch(w){O(w)}},L=d=>{try{p(a.throw(d))}catch(w){O(w)}},p=d=>d.done?N(d.value):Promise.resolve(d.value).then(D,L);p((a=a.apply(v,l)).next())});var K=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function ve(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var et=typeof K=="object"&&K&&K.Object===Object&&K,tt=et,nt=tt,rt=typeof self=="object"&&self&&self.Object===Object&&self,st=nt||rt||Function("return this")(),V=st,at=V,ot=at.Symbol,W=ot,me=W,ge=Object.prototype,it=ge.hasOwnProperty,ct=ge.toString,U=me?me.toStringTag:void 0;function lt(e){var t=it.call(e,U),n=e[U];try{e[U]=void 0;var r=!0}catch(i){}var s=ct.call(e);return r&&(t?e[U]=n:delete e[U]),s}var ut=lt,pt=Object.prototype,dt=pt.toString;function ht(e){return dt.call(e)}var ft=ht,ye=W,vt=ut,mt=ft,gt="[object Null]",yt="[object Undefined]",be=ye?ye.toStringTag:void 0;function bt(e){return e==null?e===void 0?yt:gt:be&&be in Object(e)?vt(e):mt(e)}var ne=bt;function _t(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var re=_t,Ct=ne,$t=re,xt="[object AsyncFunction]",St="[object Function]",wt="[object GeneratorFunction]",At="[object Proxy]";function Pt(e){if(!$t(e))return!1;var t=Ct(e);return t==St||t==wt||t==xt||t==At}var It=Pt,Tt=V,Ot=Tt["__core-js_shared__"],Mt=Ot,se=Mt,_e=function(){var e=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ft(e){return!!_e&&_e in e}var Et=Ft,Nt=Function.prototype,Dt=Nt.toString;function kt(e){if(e!=null){try{return Dt.call(e)}catch(t){}try{return e+""}catch(t){}}return""}var qt=kt,Ht=It,jt=Et,Ut=re,Gt=qt,zt=/[\\^$.*+?()[\]{}|]/g,Lt=/^\[object .+?Constructor\]$/,Kt=Function.prototype,Vt=Object.prototype,Wt=Kt.toString,Bt=Vt.hasOwnProperty,Yt=RegExp("^"+Wt.call(Bt).replace(zt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Xt(e){if(!Ut(e)||jt(e))return!1;var t=Ht(e)?Yt:Lt;return t.test(Gt(e))}var Jt=Xt;function Zt(e,t){return e==null?void 0:e[t]}var Qt=Zt,Rt=Jt,en=Qt;function tn(e,t){var n=en(e,t);return Rt(n)?n:void 0}var B=tn,nn=B,rn=nn(Object,"create"),Y=rn,Ce=Y;function sn(){this.__data__=Ce?Ce(null):{},this.size=0}var an=sn;function on(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var cn=on,ln=Y,un="__lodash_hash_undefined__",pn=Object.prototype,dn=pn.hasOwnProperty;function hn(e){var t=this.__data__;if(ln){var n=t[e];return n===un?void 0:n}return dn.call(t,e)?t[e]:void 0}var fn=hn,vn=Y,mn=Object.prototype,gn=mn.hasOwnProperty;function yn(e){var t=this.__data__;return vn?t[e]!==void 0:gn.call(t,e)}var bn=yn,_n=Y,Cn="__lodash_hash_undefined__";function $n(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=_n&&t===void 0?Cn:t,this}var xn=$n,Sn=an,wn=cn,An=fn,Pn=bn,In=xn;function k(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}k.prototype.clear=Sn,k.prototype.delete=wn,k.prototype.get=An,k.prototype.has=Pn,k.prototype.set=In;var Tn=k;function On(){this.__data__=[],this.size=0}var Mn=On;function Fn(e,t){return e===t||e!==e&&t!==t}var $e=Fn,En=$e;function Nn(e,t){for(var n=e.length;n--;)if(En(e[n][0],t))return n;return-1}var X=Nn,Dn=X,kn=Array.prototype,qn=kn.splice;function Hn(e){var t=this.__data__,n=Dn(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():qn.call(t,n,1),--this.size,!0}var jn=Hn,Un=X;function Gn(e){var t=this.__data__,n=Un(t,e);return n<0?void 0:t[n][1]}var zn=Gn,Ln=X;function Kn(e){return Ln(this.__data__,e)>-1}var Vn=Kn,Wn=X;function Bn(e,t){var n=this.__data__,r=Wn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var Yn=Bn,Xn=Mn,Jn=jn,Zn=zn,Qn=Vn,Rn=Yn;function q(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}q.prototype.clear=Xn,q.prototype.delete=Jn,q.prototype.get=Zn,q.prototype.has=Qn,q.prototype.set=Rn;var er=q,tr=B,nr=V,rr=tr(nr,"Map"),sr=rr,xe=Tn,ar=er,or=sr;function ir(){this.size=0,this.__data__={hash:new xe,map:new(or||ar),string:new xe}}var cr=ir;function lr(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var ur=lr,pr=ur;function dr(e,t){var n=e.__data__;return pr(t)?n[typeof t=="string"?"string":"hash"]:n.map}var J=dr,hr=J;function fr(e){var t=hr(this,e).delete(e);return this.size-=t?1:0,t}var vr=fr,mr=J;function gr(e){return mr(this,e).get(e)}var yr=gr,br=J;function _r(e){return br(this,e).has(e)}var Cr=_r,$r=J;function xr(e,t){var n=$r(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var Sr=xr,wr=cr,Ar=vr,Pr=yr,Ir=Cr,Tr=Sr;function H(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}H.prototype.clear=wr,H.prototype.delete=Ar,H.prototype.get=Pr,H.prototype.has=Ir,H.prototype.set=Tr;var Se=H,Or="__lodash_hash_undefined__";function Mr(e){return this.__data__.set(e,Or),this}var Fr=Mr;function Er(e){return this.__data__.has(e)}var Nr=Er,Dr=Se,kr=Fr,qr=Nr;function Z(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Dr;++t<n;)this.add(e[t])}Z.prototype.add=Z.prototype.push=kr,Z.prototype.has=qr;var Hr=Z;function jr(e,t,n,r){for(var s=e.length,i=n+(r?1:-1);r?i--:++i<s;)if(t(e[i],i,e))return i;return-1}var Ur=jr;function Gr(e){return e!==e}var zr=Gr;function Lr(e,t,n){for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}var Kr=Lr,Vr=Ur,Wr=zr,Br=Kr;function Yr(e,t,n){return t===t?Br(e,t,n):Vr(e,Wr,n)}var Xr=Yr,Jr=Xr;function Zr(e,t){var n=e==null?0:e.length;return!!n&&Jr(e,t,0)>-1}var Qr=Zr;function Rr(e,t,n){for(var r=-1,s=e==null?0:e.length;++r<s;)if(n(t,e[r]))return!0;return!1}var es=Rr;function ts(e,t){return e.has(t)}var ns=ts,rs=B,ss=V,as=rs(ss,"Set"),os=as;function is(){}var cs=is;function ls(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var we=ls,ae=os,us=cs,ps=we,ds=1/0,hs=ae&&1/ps(new ae([,-0]))[1]==ds?function(e){return new ae(e)}:us,fs=hs,vs=Hr,ms=Qr,gs=es,ys=ns,bs=fs,_s=we,Cs=200;function $s(e,t,n){var r=-1,s=ms,i=e.length,o=!0,c=[],u=c;if(n)o=!1,s=gs;else if(i>=Cs){var f=t?null:bs(e);if(f)return _s(f);o=!1,s=ys,u=new vs}else u=t?[]:c;e:for(;++r<i;){var y=e[r],C=t?t(y):y;if(y=n||y!==0?y:0,o&&C===C){for(var _=u.length;_--;)if(u[_]===C)continue e;t&&u.push(C),c.push(y)}else s(u,C,n)||(u!==c&&u.push(C),c.push(y))}return c}var xs=$s,Ss=xs;function ws(e){return e&&e.length?Ss(e):[]}var As=ws;const Ps=ve(As);function j(){return w.useTranslation(["@nocobase/plugin-acl","client"],{nsMode:"fallback"})}const M=d.createContext({role:null});M.displayName="RolesManagerContext";const Ae=Qe.createStyles(({css:e})=>e`
10
+ (function(v,l){typeof exports=="object"&&typeof module!="undefined"?l(exports,require("@nocobase/client"),require("react/jsx-runtime"),require("@formily/core"),require("@formily/react"),require("@formily/shared"),require("ahooks"),require("antd"),require("react"),require("react-i18next"),require("lodash"),require("antd-style"),require("@ant-design/icons"),require("@nocobase/utils/client")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","react/jsx-runtime","@formily/core","@formily/react","@formily/shared","ahooks","antd","react","react-i18next","lodash","antd-style","@ant-design/icons","@nocobase/utils/client"],l):(v=typeof globalThis!="undefined"?globalThis:v||self,l(v["@nocobase/plugin-acl"]={},v["@nocobase/client"],v.jsxRuntime,v["@formily/core"],v["@formily/react"],v["@formily/shared"],v.ahooks,v.antd,v.react,v["react-i18next"],v.lodash,v["antd-style"],v["@ant-design/icons"],v["@nocobase/utils"]))})(this,function(v,l,a,N,O,D,z,p,d,A,te,Qe,fe,Re){"use strict";var Ti=Object.defineProperty,Oi=Object.defineProperties;var Mi=Object.getOwnPropertyDescriptors;var Ze=Object.getOwnPropertySymbols;var Fi=Object.prototype.hasOwnProperty,Ei=Object.prototype.propertyIsEnumerable;var he=(v,l,a)=>l in v?Ti(v,l,{enumerable:!0,configurable:!0,writable:!0,value:a}):v[l]=a,S=(v,l)=>{for(var a in l||(l={}))Fi.call(l,a)&&he(v,a,l[a]);if(Ze)for(var a of Ze(l))Ei.call(l,a)&&he(v,a,l[a]);return v},E=(v,l)=>Oi(v,Mi(l));var L=(v,l,a)=>(he(v,typeof l!="symbol"?l+"":l,a),a);var x=(v,l,a)=>new Promise((N,O)=>{var D=d=>{try{p(a.next(d))}catch(A){O(A)}},z=d=>{try{p(a.throw(d))}catch(A){O(A)}},p=d=>d.done?N(d.value):Promise.resolve(d.value).then(D,z);p((a=a.apply(v,l)).next())});var K=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function ve(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var et=typeof K=="object"&&K&&K.Object===Object&&K,tt=et,nt=tt,rt=typeof self=="object"&&self&&self.Object===Object&&self,st=nt||rt||Function("return this")(),V=st,at=V,ot=at.Symbol,B=ot,me=B,ge=Object.prototype,it=ge.hasOwnProperty,ct=ge.toString,j=me?me.toStringTag:void 0;function lt(e){var t=it.call(e,j),n=e[j];try{e[j]=void 0;var r=!0}catch(i){}var s=ct.call(e);return r&&(t?e[j]=n:delete e[j]),s}var ut=lt,pt=Object.prototype,dt=pt.toString;function ht(e){return dt.call(e)}var ft=ht,ye=B,vt=ut,mt=ft,gt="[object Null]",yt="[object Undefined]",be=ye?ye.toStringTag:void 0;function bt(e){return e==null?e===void 0?yt:gt:be&&be in Object(e)?vt(e):mt(e)}var ne=bt;function _t(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var re=_t,Ct=ne,$t=re,xt="[object AsyncFunction]",St="[object Function]",wt="[object GeneratorFunction]",At="[object Proxy]";function Pt(e){if(!$t(e))return!1;var t=Ct(e);return t==St||t==wt||t==xt||t==At}var It=Pt,Tt=V,Ot=Tt["__core-js_shared__"],Mt=Ot,se=Mt,_e=function(){var e=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ft(e){return!!_e&&_e in e}var Et=Ft,Nt=Function.prototype,Dt=Nt.toString;function kt(e){if(e!=null){try{return Dt.call(e)}catch(t){}try{return e+""}catch(t){}}return""}var qt=kt,Ht=It,Ut=Et,jt=re,Gt=qt,Lt=/[\\^$.*+?()[\]{}|]/g,zt=/^\[object .+?Constructor\]$/,Kt=Function.prototype,Vt=Object.prototype,Bt=Kt.toString,Wt=Vt.hasOwnProperty,Yt=RegExp("^"+Bt.call(Wt).replace(Lt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Xt(e){if(!jt(e)||Ut(e))return!1;var t=Ht(e)?Yt:zt;return t.test(Gt(e))}var Jt=Xt;function Zt(e,t){return e==null?void 0:e[t]}var Qt=Zt,Rt=Jt,en=Qt;function tn(e,t){var n=en(e,t);return Rt(n)?n:void 0}var W=tn,nn=W,rn=nn(Object,"create"),Y=rn,Ce=Y;function sn(){this.__data__=Ce?Ce(null):{},this.size=0}var an=sn;function on(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var cn=on,ln=Y,un="__lodash_hash_undefined__",pn=Object.prototype,dn=pn.hasOwnProperty;function hn(e){var t=this.__data__;if(ln){var n=t[e];return n===un?void 0:n}return dn.call(t,e)?t[e]:void 0}var fn=hn,vn=Y,mn=Object.prototype,gn=mn.hasOwnProperty;function yn(e){var t=this.__data__;return vn?t[e]!==void 0:gn.call(t,e)}var bn=yn,_n=Y,Cn="__lodash_hash_undefined__";function $n(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=_n&&t===void 0?Cn:t,this}var xn=$n,Sn=an,wn=cn,An=fn,Pn=bn,In=xn;function k(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}k.prototype.clear=Sn,k.prototype.delete=wn,k.prototype.get=An,k.prototype.has=Pn,k.prototype.set=In;var Tn=k;function On(){this.__data__=[],this.size=0}var Mn=On;function Fn(e,t){return e===t||e!==e&&t!==t}var $e=Fn,En=$e;function Nn(e,t){for(var n=e.length;n--;)if(En(e[n][0],t))return n;return-1}var X=Nn,Dn=X,kn=Array.prototype,qn=kn.splice;function Hn(e){var t=this.__data__,n=Dn(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():qn.call(t,n,1),--this.size,!0}var Un=Hn,jn=X;function Gn(e){var t=this.__data__,n=jn(t,e);return n<0?void 0:t[n][1]}var Ln=Gn,zn=X;function Kn(e){return zn(this.__data__,e)>-1}var Vn=Kn,Bn=X;function Wn(e,t){var n=this.__data__,r=Bn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var Yn=Wn,Xn=Mn,Jn=Un,Zn=Ln,Qn=Vn,Rn=Yn;function q(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}q.prototype.clear=Xn,q.prototype.delete=Jn,q.prototype.get=Zn,q.prototype.has=Qn,q.prototype.set=Rn;var er=q,tr=W,nr=V,rr=tr(nr,"Map"),sr=rr,xe=Tn,ar=er,or=sr;function ir(){this.size=0,this.__data__={hash:new xe,map:new(or||ar),string:new xe}}var cr=ir;function lr(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var ur=lr,pr=ur;function dr(e,t){var n=e.__data__;return pr(t)?n[typeof t=="string"?"string":"hash"]:n.map}var J=dr,hr=J;function fr(e){var t=hr(this,e).delete(e);return this.size-=t?1:0,t}var vr=fr,mr=J;function gr(e){return mr(this,e).get(e)}var yr=gr,br=J;function _r(e){return br(this,e).has(e)}var Cr=_r,$r=J;function xr(e,t){var n=$r(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var Sr=xr,wr=cr,Ar=vr,Pr=yr,Ir=Cr,Tr=Sr;function H(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}H.prototype.clear=wr,H.prototype.delete=Ar,H.prototype.get=Pr,H.prototype.has=Ir,H.prototype.set=Tr;var Se=H,Or="__lodash_hash_undefined__";function Mr(e){return this.__data__.set(e,Or),this}var Fr=Mr;function Er(e){return this.__data__.has(e)}var Nr=Er,Dr=Se,kr=Fr,qr=Nr;function Z(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Dr;++t<n;)this.add(e[t])}Z.prototype.add=Z.prototype.push=kr,Z.prototype.has=qr;var Hr=Z;function Ur(e,t,n,r){for(var s=e.length,i=n+(r?1:-1);r?i--:++i<s;)if(t(e[i],i,e))return i;return-1}var jr=Ur;function Gr(e){return e!==e}var Lr=Gr;function zr(e,t,n){for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}var Kr=zr,Vr=jr,Br=Lr,Wr=Kr;function Yr(e,t,n){return t===t?Wr(e,t,n):Vr(e,Br,n)}var Xr=Yr,Jr=Xr;function Zr(e,t){var n=e==null?0:e.length;return!!n&&Jr(e,t,0)>-1}var Qr=Zr;function Rr(e,t,n){for(var r=-1,s=e==null?0:e.length;++r<s;)if(n(t,e[r]))return!0;return!1}var es=Rr;function ts(e,t){return e.has(t)}var ns=ts,rs=W,ss=V,as=rs(ss,"Set"),os=as;function is(){}var cs=is;function ls(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var we=ls,ae=os,us=cs,ps=we,ds=1/0,hs=ae&&1/ps(new ae([,-0]))[1]==ds?function(e){return new ae(e)}:us,fs=hs,vs=Hr,ms=Qr,gs=es,ys=ns,bs=fs,_s=we,Cs=200;function $s(e,t,n){var r=-1,s=ms,i=e.length,o=!0,c=[],u=c;if(n)o=!1,s=gs;else if(i>=Cs){var f=t?null:bs(e);if(f)return _s(f);o=!1,s=ys,u=new vs}else u=t?[]:c;e:for(;++r<i;){var y=e[r],_=t?t(y):y;if(y=n||y!==0?y:0,o&&_===_){for(var C=u.length;C--;)if(u[C]===_)continue e;t&&u.push(_),c.push(y)}else s(u,_,n)||(u!==c&&u.push(_),c.push(y))}return c}var xs=$s,Ss=xs;function ws(e){return e&&e.length?Ss(e):[]}var As=ws;const Ps=ve(As);function U(){return A.useTranslation(["@nocobase/plugin-acl","client"],{nsMode:"fallback"})}const M=d.createContext({role:null});M.displayName="RolesManagerContext";const Ae=Qe.createStyles(({css:e})=>e`
11
11
  .ant-table-cell {
12
12
  > .ant-space-horizontal {
13
13
  .ant-space-item-split:has(+ .ant-space-item:empty) {
@@ -15,4 +15,4 @@
15
15
  }
16
16
  }
17
17
  }
18
- `),Pe=(e=[],t=[])=>{for(const n of e)t.push(n.aclSnippet),n.children&&n.children.length&&Pe(n.children,t);return t},Is=({active:e})=>{const t=l.useApp(),{styles:n}=Ae(),{role:r}=d.useContext(M),s=l.useAPIClient(),i=l.useCompile(),o=t.pluginSettingsManager.getList(!1),c=t.pluginSettingsManager.getAclSnippets(),[u,f]=d.useState((r==null?void 0:r.snippets)||[]),y=d.useMemo(()=>te.flatMap(o,g=>g.children?[g,...g.children]:g),[o]),C=d.useMemo(()=>u.includes("pm.*")&&u.every(g=>!g.startsWith("!pm.")),[u]),{t:_}=w.useTranslation(),{loading:A,refresh:P}=l.useRequest({resource:"roles.snippets",resourceOf:r==null?void 0:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&e,refreshDeps:[r==null?void 0:r.name],manual:!0,onSuccess(g){f((g==null?void 0:g.data.filter(m=>y.find(h=>m.includes(`!${h.aclSnippet}`)||!m.startsWith("!pm."))))||[])}});if(!r)return;const S=s.resource("roles.snippets",r==null?void 0:r.name),F=(g,m)=>$(this,null,function*(){const b=Pe(m==null?void 0:m.children,[]).concat(m.aclSnippet);g?(yield S.add({values:b.map(I=>"!"+I)}),P()):(yield S.remove({values:b.map(I=>"!"+I)}),P()),p.message.success(_("Saved successfully"))});return a.jsx(p.Table,{className:n,loading:A,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:_("Plugin name"),render:g=>i(g)},{dataIndex:"accessible",title:a.jsxs(a.Fragment,{children:[a.jsx(p.Checkbox,{checked:C,onChange:()=>$(this,null,function*(){const g=c.map(m=>"!"+m);C?yield S.add({values:g}):yield S.remove({values:g}),P(),p.message.success(_("Saved successfully"))})}),_("Accessible")]}),render:(g,m)=>{const h=!u.includes("!"+m.aclSnippet);return a.jsx(p.Checkbox,{checked:h,onChange:()=>F(h,m)})}}],dataSource:o.filter(g=>g.isTopLevel!==!1).map(g=>g.showTabs!==!1?g:te.omit(g,"children"))})},oe=d.createContext([]);oe.displayName="AvailableActionsContext";const Ts=e=>{const{data:t,loading:n}=l.useRequest({resource:"availableActions",action:"list"});return n?a.jsx(p.Spin,{}):a.jsx(oe.Provider,{value:t==null?void 0:t.data,children:e.children})},Os=()=>d.useContext(oe),Ms=e=>{var n;if(!e)return{};const t={};return(n=e==null?void 0:e.forEach)==null||n.call(e,r=>{const[s,i]=r.split(":");t[s]=i||"all"}),t},Ie=e=>{const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n];r==="all"?t.push(n):t.push(`${n}:${r}`)}return t},Fs=O.connect(e=>{const{onChange:t}=e,n=Os(),r=l.useCompile(),{t:s}=w.useTranslation(),i=O.useField(),o=Ms(i.value);return a.jsx("div",{children:a.jsx(p.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:s("Action display name"),render:c=>r(c)},{dataIndex:"onNewRecord",title:s("Action type"),render:c=>c?a.jsx(p.Tag,{color:"green",children:s("Action on new records")}):a.jsx(p.Tag,{color:"geekblue",children:s("Action on existing records")})},{dataIndex:"enabled",title:s("Allow"),render:(c,u)=>a.jsx(p.Checkbox,{checked:c,"aria-label":`${u.name}_checkbox`,onChange:f=>{c?delete o[u.name]:o[u.name]="all",t(Ie(o))}})},{dataIndex:"scope",title:s("Data scope"),render:(c,u)=>!u.onNewRecord&&a.jsx(p.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:c,options:[{label:s("All records"),value:"all"},{label:s("Own records"),value:"own"}],onChange:f=>{o[u.name]=f,t(Ie(o))}})}],dataSource:n==null?void 0:n.map(c=>{let u="all",f=!1;return o[c.name]&&(f=!0,u=o[c.name]),E(x({},c),{enabled:f,scope:u})})})})}),Es=O.connect(e=>{const{t}=w.useTranslation();return a.jsxs(p.Checkbox.Group,{style:{width:"100%",display:"block"},value:e.value,onChange:n=>{const r=["ui.*","pm","pm.*","app"],s=r.map(o=>`!${o}`),i=Ps([...e.value||[],...n]).filter(o=>o&&!s.includes(o)).map(o=>!r.includes(o)||n!=null&&n.includes(o)?o:`!${o}`);for(const o of r)!i.includes(o)&&!i.includes(`!${o}`)&&i.push(`!${o}`);e.onChange(i)},children:[a.jsx("div",{style:{marginTop:16},children:a.jsx(p.Checkbox,{value:"ui.*",children:t("Allows to configure interface")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"pm",children:t("Allows to install, activate, disable plugins")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"pm.*",children:t("Allows to configure plugins")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"app",children:t("Allows to clear cache, reboot application")})})]})}),Ns=()=>{var c;const{role:e,setRole:t}=d.useContext(M),{t:n}=j(),r=l.useAPIClient(),s=(c=e==null?void 0:e.snippets)==null?void 0:c.includes("pm.*"),i=L.useMemoizedFn(u=>$(this,null,function*(){yield r.resource("roles").update({filterByTk:e.name,values:{snippets:u.values.snippets}}),t(x(x({},e),u.values)),p.message.success(n("Saved successfully"))})),o=d.useMemo(()=>N.createForm({values:e,effects(){N.onFormValuesChange(u=>$(this,null,function*(){yield i(u)}))}}),[e,i]);return a.jsx(l.SchemaComponent,{components:{SnippetCheckboxGroup:Es,StrategyActions:Fs,PluginPermissions:Is},scope:{pm:s},schema:{type:"void",name:D.uid(),"x-component":"div",properties:{general:{"x-component":"FormV2","x-component-props":{form:o},properties:{snippets:{title:n("Configure permissions"),type:"boolean","x-decorator":"FormItem","x-component":"SnippetCheckboxGroup"}}},plugins:{"x-component":"FormV2",properties:{pluginSettings:{title:n("Plugin settings"),"x-decorator":"FormItem","x-component":"PluginPermissions","x-visible":"{{pm}}"}}}}}})},ie=d.createContext(null);ie.displayName="MenuItemsContext";const Te=(e={})=>{const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n],s={title:r.title,uid:r["x-uid"]};r.properties&&(s.children=Te(r.properties)),t.push(s)}return t},Ds=()=>d.useContext(ie),ks=e=>{var i,o;const n={url:`uiSchemas:getProperties/${l.useAdminSchemaUid()}`},r=l.useRequest(n);if(r.loading)return a.jsx(p.Spin,{});const s=Te((o=(i=r.data)==null?void 0:i.data)==null?void 0:o.properties);return a.jsx(ie.Provider,{value:{service:r,items:s},children:e.children})},Oe=e=>{if(!Array.isArray(e))return[];const t=[];for(const n of e)t.push(n.uid),t.push(...Oe(n.children));return t},Me=(e,t,n=[])=>{if(!e)return[];for(const r of e){if(n.push(r.uid),t(r))return n;if(r.children){const s=Me(r.children,t,n);if(s.length)return s}n.pop()}return[]},Fe=(e=[],t=[])=>{for(const n of e)t.push(n.uid),n.children&&n.children.length&&Fe(n.children,t);return t},qs=({active:e})=>{const{styles:t}=Ae(),{role:n,setRole:r}=d.useContext(M),s=l.useAPIClient(),{items:i}=Ds(),{t:o}=w.useTranslation(),c=Oe(i),[u,f]=d.useState([]),{loading:y,refresh:C}=l.useRequest({resource:"roles.menuUiSchemas",resourceOf:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&e,refreshDeps:[n==null?void 0:n.name],onSuccess(m){var h;f(((h=m==null?void 0:m.data)==null?void 0:h.map(b=>b["x-uid"]))||[])}}),_=s.resource("roles.menuUiSchemas",n.name),A=c.length===u.length,P=(m,h)=>$(this,null,function*(){const b=Me(i,T=>T.uid===h.uid),I=Fe(h==null?void 0:h.children,[]);if(m){const T=I.concat(h.uid),de=u.filter(Ii=>!T.includes(Ii));f([...de]),yield _.remove({values:T})}else{const T=I.concat(b);f(de=>te.uniq([...de,...T])),yield _.add({values:T})}p.message.success(o("Saved successfully"))}),S=m=>m.map(h=>{const b=o(h.title);return h.children?E(x({},h),{title:b,children:S(h.children)}):E(x({},h),{title:b})}),F=L.useMemoizedFn(m=>$(this,null,function*(){yield s.resource("roles").update({filterByTk:n.name,values:m.values}),r(x(x({},n),m.values)),p.message.success(o("Saved successfully"))})),g=d.useMemo(()=>N.createForm({values:n,effects(){N.onFormValuesChange(m=>$(this,null,function*(){yield F(m)}))}}),[n,F]);return a.jsxs(a.Fragment,{children:[a.jsx(l.SchemaComponent,{schema:{type:"void",name:D.uid(),"x-component":"FormV2","x-component-props":{form:g},properties:{allowNewMenu:{title:o("Menu permissions"),"x-decorator":"FormItem","x-component":"Checkbox","x-content":o("New menu items are allowed to be accessed by default.")}}}}),a.jsx(p.Table,{className:t,loading:y,rowKey:"uid",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:o("Menu item title")},{dataIndex:"accessible",title:a.jsxs(a.Fragment,{children:[a.jsx(p.Checkbox,{checked:A,onChange:m=>$(this,null,function*(){A?yield _.set({values:[]}):yield _.set({values:c}),C(),p.message.success(o("Saved successfully"))})})," ",o("Accessible")]}),render:(m,h)=>{const b=u.includes(h.uid);return a.jsx(p.Checkbox,{checked:b,onChange:()=>P(b,h)})}}],dataSource:S(i)})]})};class Hs{constructor(){z(this,"permissionsTabs",[({t,TabLayout:n})=>({key:"general",label:t("System"),children:a.jsx(n,{children:a.jsx(Ns,{})})}),({activeKey:t,t:n,TabLayout:r})=>({key:"menu",label:n("Menu"),children:a.jsx(r,{children:a.jsx(ks,{children:a.jsx(qs,{active:t==="menu"})})})})])}addPermissionsTab(t){this.permissionsTabs.push(t)}getPermissionsTabs(t){return this.permissionsTabs.map(n=>typeof n=="function"?n(t):n)}}var js=Array.isArray,G=js;function Us(e){return e!=null&&typeof e=="object"}var ce=Us,Gs=ne,zs=ce,Ls="[object Symbol]";function Ks(e){return typeof e=="symbol"||zs(e)&&Gs(e)==Ls}var le=Ks,Vs=G,Ws=le,Bs=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ys=/^\w*$/;function Xs(e,t){if(Vs(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||Ws(e)?!0:Ys.test(e)||!Bs.test(e)||t!=null&&e in Object(t)}var Js=Xs,Ee=Se,Zs="Expected a function";function ue(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Zs);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],i=n.cache;if(i.has(s))return i.get(s);var o=e.apply(this,r);return n.cache=i.set(s,o)||i,o};return n.cache=new(ue.Cache||Ee),n}ue.Cache=Ee;var Qs=ue,Rs=Qs,ea=500;function ta(e){var t=Rs(e,function(r){return n.size===ea&&n.clear(),r}),n=t.cache;return t}var na=ta,ra=na,sa=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,aa=/\\(\\)?/g,oa=ra(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(sa,function(n,r,s,i){t.push(s?i.replace(aa,"$1"):r||n)}),t}),ia=oa;function ca(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var la=ca,Ne=W,ua=la,pa=G,da=le,ha=1/0,De=Ne?Ne.prototype:void 0,ke=De?De.toString:void 0;function qe(e){if(typeof e=="string")return e;if(pa(e))return ua(e,qe)+"";if(da(e))return ke?ke.call(e):"";var t=e+"";return t=="0"&&1/e==-ha?"-0":t}var fa=qe,va=fa;function ma(e){return e==null?"":va(e)}var ga=ma,ya=G,ba=Js,_a=ia,Ca=ga;function $a(e,t){return ya(e)?e:ba(e,t)?[e]:_a(Ca(e))}var Q=$a,xa=le,Sa=1/0;function wa(e){if(typeof e=="string"||xa(e))return e;var t=e+"";return t=="0"&&1/e==-Sa?"-0":t}var pe=wa,Aa=Q,Pa=pe;function Ia(e,t){t=Aa(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Pa(t[n++])];return n&&n==r?e:void 0}var Ta=Ia,Oa=B,Ma=function(){try{var e=Oa(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),He=Ma,je=He;function Fa(e,t,n){t=="__proto__"&&je?je(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Ea=Fa,Na=Ea,Da=$e,ka=Object.prototype,qa=ka.hasOwnProperty;function Ha(e,t,n){var r=e[t];(!(qa.call(e,t)&&Da(r,n))||n===void 0&&!(t in e))&&Na(e,t,n)}var ja=Ha,Ua=9007199254740991,Ga=/^(?:0|[1-9]\d*)$/;function za(e,t){var n=typeof e;return t=t==null?Ua:t,!!t&&(n=="number"||n!="symbol"&&Ga.test(e))&&e>-1&&e%1==0&&e<t}var Ue=za,La=ja,Ka=Q,Va=Ue,Ge=re,Wa=pe;function Ba(e,t,n,r){if(!Ge(e))return e;t=Ka(t,e);for(var s=-1,i=t.length,o=i-1,c=e;c!=null&&++s<i;){var u=Wa(t[s]),f=n;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(s!=o){var y=c[u];f=r?r(y,u,c):void 0,f===void 0&&(f=Ge(y)?y:Va(t[s+1])?[]:{})}La(c,u,f),c=c[u]}return e}var Ya=Ba,Xa=Ta,Ja=Ya,Za=Q;function Qa(e,t,n){for(var r=-1,s=t.length,i={};++r<s;){var o=t[r],c=Xa(e,o);n(c,o)&&Ja(i,Za(o,e),c)}return i}var Ra=Qa;function eo(e,t){return e!=null&&t in Object(e)}var to=eo,no=ne,ro=ce,so="[object Arguments]";function ao(e){return ro(e)&&no(e)==so}var oo=ao,ze=oo,io=ce,Le=Object.prototype,co=Le.hasOwnProperty,lo=Le.propertyIsEnumerable,uo=ze(function(){return arguments}())?ze:function(e){return io(e)&&co.call(e,"callee")&&!lo.call(e,"callee")},Ke=uo,po=9007199254740991;function ho(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=po}var fo=ho,vo=Q,mo=Ke,go=G,yo=Ue,bo=fo,_o=pe;function Co(e,t,n){t=vo(t,e);for(var r=-1,s=t.length,i=!1;++r<s;){var o=_o(t[r]);if(!(i=e!=null&&n(e,o)))break;e=e[o]}return i||++r!=s?i:(s=e==null?0:e.length,!!s&&bo(s)&&yo(o,s)&&(go(e)||mo(e)))}var $o=Co,xo=to,So=$o;function wo(e,t){return e!=null&&So(e,t,xo)}var Ao=wo,Po=Ra,Io=Ao;function To(e,t){return Po(e,t,function(n,r){return Io(e,r)})}var Oo=To;function Mo(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var Fo=Mo,Ve=W,Eo=Ke,No=G,We=Ve?Ve.isConcatSpreadable:void 0;function Do(e){return No(e)||Eo(e)||!!(We&&e&&e[We])}var ko=Do,qo=Fo,Ho=ko;function Be(e,t,n,r,s){var i=-1,o=e.length;for(n||(n=Ho),s||(s=[]);++i<o;){var c=e[i];t>0&&n(c)?t>1?Be(c,t-1,n,r,s):qo(s,c):r||(s[s.length]=c)}return s}var jo=Be,Uo=jo;function Go(e){var t=e==null?0:e.length;return t?Uo(e,1):[]}var zo=Go;function Lo(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Ko=Lo,Vo=Ko,Ye=Math.max;function Wo(e,t,n){return t=Ye(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,i=Ye(r.length-t,0),o=Array(i);++s<i;)o[s]=r[t+s];s=-1;for(var c=Array(t+1);++s<t;)c[s]=r[s];return c[t]=n(o),Vo(e,this,c)}}var Bo=Wo;function Yo(e){return function(){return e}}var Xo=Yo;function Jo(e){return e}var Zo=Jo,Qo=Xo,Xe=He,Ro=Zo,ei=Xe?function(e,t){return Xe(e,"toString",{configurable:!0,enumerable:!1,value:Qo(t),writable:!0})}:Ro,ti=ei,ni=800,ri=16,si=Date.now;function ai(e){var t=0,n=0;return function(){var r=si(),s=ri-(r-n);if(n=r,s>0){if(++t>=ni)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var oi=ai,ii=ti,ci=oi,li=ci(ii),ui=li,pi=zo,di=Bo,hi=ui;function fi(e){return hi(di(e,void 0,pi),e+"")}var vi=fi,mi=Oo,gi=vi,yi=gi(function(e,t){return e==null?{}:mi(e,t)}),bi=yi;const _i=ve(bi),Ci={type:"object",properties:{[D.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:e=>{const t=l.useRecord(),n=l.useRequest(()=>Promise.resolve({data:_i(t,["title","name","default"])}),E(x({},e),{manual:!0})),r=l.useActionContext();return d.useEffect(()=>{r.visible&&n.run()},[r.visible]),n}},title:'{{t("Edit role")}}',properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":!0},default:{title:"","x-component":"CollectionField","x-decorator":"FormItem","x-content":'{{t("Default role")}}',"x-reactions":e=>{e.initialValue?e.disabled=!0:e.disabled=!1}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}}}},$i=({loadMore:e})=>{const[t,n]=d.useState(null),r=d.useRef(null),s=d.useCallback(i=>{i&&(r.current&&r.current.disconnect(),r.current=new IntersectionObserver(o=>{o.forEach(c=>{c.target===i.current&&c.isIntersecting&&(r.current&&r.current.unobserve(i.current),e())})}),i.current&&r.current&&r.current.observe(i.current))},[e]);return d.useEffect(()=>(s(t),()=>{r.current&&r.current.disconnect()}),[t,s]),{lastItem:t,setLastItem:n}},R=()=>{const{t:e}=j(),{data:t,mutate:n}=l.useResourceActionContext(),[r,s]=d.useState(!1),[i,o]=d.useState(null),{role:c,setRole:u}=d.useContext(M),[f,y]=d.useState([]),[C,_]=d.useState(!1),A=l.useAPIClient(),P=d.useCallback(()=>$(this,null,function*(){const h=t==null?void 0:t.meta;if(!h||h.page>=h.totalPage)return;_(!0);const b=yield A.resource("roles").list({page:h.page+1,pageSize:h.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});n((b==null?void 0:b.data)||{}),_(!1)}),[t]),{lastItem:S,setLastItem:F}=$i({loadMore:P}),g=({key:h})=>{u(f.find(b=>b.name===h))};d.useEffect(()=>{f[0]&&u(f[0])},[f,u]),d.useEffect(()=>{var b,I;if(!((b=t==null?void 0:t.data)!=null&&b.length))return;const h=d.createRef();F(h),((I=t.meta)==null?void 0:I.page)>1?y(T=>T.concat(t.data)):y(t.data)},[t,F]);const m=d.useMemo(()=>f.map((h,b)=>({key:h.name,label:b===f.length-1?a.jsx("div",{ref:S,children:a.jsx(R.Item,{item:h,onEdit:()=>{s(!0),o(h)}})}):a.jsx(R.Item,{item:h,onEdit:()=>{s(!0),o(h)}})})),[f,S]);return a.jsxs(a.Fragment,{children:[f.length?a.jsx(p.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[...m,...C?[{key:"loading",label:a.jsx(p.Spin,{})}]:[]],selectedKeys:[c==null?void 0:c.name],onSelect:g}):a.jsx(p.Empty,{image:p.Empty.PRESENTED_IMAGE_SIMPLE}),a.jsx(l.ActionContextProvider,{value:{visible:r,setVisible:s},children:a.jsx(l.RecordProvider,{record:i,collectionName:"departments",children:a.jsx(l.SchemaComponent,{scope:{t:e},schema:Ci})})})]})};R.Item=function({item:t,onEdit:n}){const{t:r}=j(),{refreshAsync:s}=l.useResourceActionContext(),{modal:i,message:o}=p.App.useApp(),c=l.useAPIClient(),u=()=>{i.confirm({title:r("Delete"),content:r("Are you sure you want to delete it?"),onOk:()=>$(this,null,function*(){yield c.resource("roles").destroy({filterByTk:t.name}),o.success(r("Deleted successfully")),yield s()})})},f=({key:C,domEvent:_})=>{switch(_.stopPropagation(),C){case"edit":n();break;case"delete":u()}},y=O.Schema.compile(t.title,{t:r});return a.jsxs(p.Row,{children:[a.jsx(p.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:a.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[a.jsx(fe.TagOutlined,{}),a.jsx("span",{style:{marginLeft:"10px"},title:y,children:y})]})}),a.jsxs(p.Col,{children:[t.default?a.jsx(p.Tag,{color:"success",bordered:!1,children:r("Default")}):null,a.jsx(p.Dropdown,{menu:{items:[{label:r("Edit"),key:"edit"},{label:r("Delete"),key:"delete"}],onClick:f},children:a.jsx(fe.MoreOutlined,{})})]})]})};const xi=e=>a.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:e.children}),Si=({active:e})=>{const{t}=j(),[n,r]=d.useState("general"),{role:s,setRole:i}=d.useContext(M),o=l.usePlugin(ee),c=d.useMemo(()=>o.settingsUI.getPermissionsTabs({t,activeKey:n,TabLayout:xi,role:s}),[n,o.settingsUI,s,t]),u=l.useAPIClient(),{data:f}=l.useRequest(()=>u.resource("roles").get({filterByTk:s==null?void 0:s.name}).then(y=>{var _,A;const C=(_=y==null?void 0:y.data)==null?void 0:_.data;return(A=C.snippets)==null||A.forEach(P=>{C[P]=!0}),C}),{ready:e&&!!s,refreshDeps:[s==null?void 0:s.name]});return d.useEffect(()=>{r("general")},[s==null?void 0:s.name]),d.useEffect(()=>{i(f)},[f,i]),a.jsx(Ts,{children:a.jsx(p.Tabs,{type:"card",activeKey:n,onChange:y=>r(y),items:c})})},wi=()=>{const{t:e}=j();return a.jsx(l.SchemaComponent,{scope:{t:e},schema:{type:"void",properties:{newRole:{type:"void",title:e("New role"),"x-component":"Action","x-component-props":{type:"text",icon:"PlusOutlined",style:{width:"100%",textAlign:"left"}},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(t){const n=l.useActionContext();return l.useRequest(()=>Promise.resolve({data:{name:`r_${D.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),E(x({},t),{refreshDeps:[n.visible]}))}},title:e("New role"),properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem",description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.")}}'},default:{"x-component":"CollectionField","x-decorator":"FormItem",title:"","x-content":'{{t("Default role")}}'},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}}})},Je={name:"roles",filterTargetKey:"name",targetKey:"name",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Role display name")}}',type:"number","x-component":"Input",required:!0}},{type:"string",name:"name",interface:"input",uiSchema:{title:'{{t("Role UID")}}',type:"string","x-component":"Input"}},{type:"boolean",name:"default",interface:"boolean",uiSchema:{title:'{{t("Default role")}}',type:"boolean","x-component":"Checkbox"}}]},Ai=()=>{const{t:e}=j(),t=l.usePlugin(ee),[n,r]=d.useState("permissions"),s=Array.from(t.rolesManager.list()).map(([u,f])=>({key:u,label:O.Schema.compile(f.title,{t:e}),children:f.Component?d.createElement(f.Component,{active:n===u}):null})),[i,o]=d.useState(null),c=l.useSchemaComponentContext();return a.jsx(l.SchemaComponentContext.Provider,{value:E(x({},c),{designable:!1}),children:a.jsx(M.Provider,{value:{role:i,setRole:o},children:a.jsx(p.Card,{children:a.jsxs(p.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[a.jsx(p.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:a.jsx(l.ResourceActionProvider,{collection:Je,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:a.jsxs(l.CollectionProvider_deprecated,{collection:Je,children:[a.jsx(p.Row,{children:a.jsx(wi,{})}),a.jsx(p.Divider,{style:{margin:"12px 0"}}),a.jsx(R,{})]})})}),a.jsx(p.Col,{flex:"auto",style:{overflow:"hidden"},children:a.jsx(p.Tabs,{activeKey:n,onChange:u=>r(u),items:[{key:"permissions",label:e("Permissions"),children:a.jsx(Si,{active:n==="permissions"})},...s]})})]})})})})};class Pi{constructor(){z(this,"rolesManager",new Re.Registry)}add(t,n){this.rolesManager.register(t,n)}list(){return this.rolesManager.getEntities()}}class ee extends l.Plugin{constructor(){super(...arguments);z(this,"rolesManager",new Pi);z(this,"settingsUI",new Hs)}load(){return $(this,null,function*(){this.pluginSettingsManager.add("users-permissions.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:Ai,aclSnippet:"pm.acl.roles",sort:3})})}}v.PluginACLClient=ee,v.RolesManagerContext=M,v.default=ee,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
18
+ `),Pe=(e=[],t=[])=>{for(const n of e)t.push(n.aclSnippet),n.children&&n.children.length&&Pe(n.children,t);return t},Is=({active:e})=>{const t=l.useApp(),{styles:n}=Ae(),{role:r}=d.useContext(M),s=l.useAPIClient(),i=l.useCompile(),o=t.pluginSettingsManager.getList(!1),c=t.pluginSettingsManager.getAclSnippets(),[u,f]=d.useState((r==null?void 0:r.snippets)||[]),y=d.useMemo(()=>te.flatMap(o,g=>g.children?[g,...g.children]:g),[o]),_=d.useMemo(()=>u.includes("pm.*")&&u.every(g=>!g.startsWith("!pm.")),[u]),{t:C}=A.useTranslation(),{loading:P,refresh:w}=l.useRequest({resource:"roles.snippets",resourceOf:r==null?void 0:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&e,refreshDeps:[r==null?void 0:r.name],manual:!0,onSuccess(g){f((g==null?void 0:g.data.filter(m=>y.find(h=>m.includes(`!${h.aclSnippet}`)||!m.startsWith("!pm."))))||[])}});if(!r)return;const $=s.resource("roles.snippets",r==null?void 0:r.name),F=(g,m)=>x(this,null,function*(){const b=Pe(m==null?void 0:m.children,[]).concat(m.aclSnippet);g?(yield $.add({values:b.map(I=>"!"+I)}),w()):(yield $.remove({values:b.map(I=>"!"+I)}),w()),p.message.success(C("Saved successfully"))});return a.jsx(p.Table,{className:n,loading:P,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:C("Plugin name"),render:g=>i(g)},{dataIndex:"accessible",title:a.jsxs(a.Fragment,{children:[a.jsx(p.Checkbox,{checked:_,onChange:()=>x(this,null,function*(){const g=c.map(m=>"!"+m);_?yield $.add({values:g}):yield $.remove({values:g}),w(),p.message.success(C("Saved successfully"))})}),C("Accessible")]}),render:(g,m)=>{const h=!u.includes("!"+m.aclSnippet);return a.jsx(p.Checkbox,{checked:h,onChange:()=>F(h,m)})}}],dataSource:o.filter(g=>g.isTopLevel!==!1).map(g=>g.showTabs!==!1?g:te.omit(g,"children"))})},oe=d.createContext([]);oe.displayName="AvailableActionsContext";const Ts=e=>{const{data:t,loading:n}=l.useRequest({resource:"availableActions",action:"list"});return n?a.jsx(p.Spin,{}):a.jsx(oe.Provider,{value:t==null?void 0:t.data,children:e.children})},Os=()=>d.useContext(oe),Ms=e=>{var n;if(!e)return{};const t={};return(n=e==null?void 0:e.forEach)==null||n.call(e,r=>{const[s,i]=r.split(":");t[s]=i||"all"}),t},Ie=e=>{const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n];r==="all"?t.push(n):t.push(`${n}:${r}`)}return t},Fs=O.connect(e=>{const{onChange:t}=e,n=Os(),r=l.useCompile(),{t:s}=A.useTranslation(),i=O.useField(),o=Ms(i.value);return a.jsx("div",{children:a.jsx(p.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:s("Action display name"),render:c=>r(c)},{dataIndex:"onNewRecord",title:s("Action type"),render:c=>c?a.jsx(p.Tag,{color:"green",children:s("Action on new records")}):a.jsx(p.Tag,{color:"geekblue",children:s("Action on existing records")})},{dataIndex:"enabled",title:s("Allow"),render:(c,u)=>a.jsx(p.Checkbox,{checked:c,"aria-label":`${u.name}_checkbox`,onChange:f=>{c?delete o[u.name]:o[u.name]="all",t(Ie(o))}})},{dataIndex:"scope",title:s("Data scope"),render:(c,u)=>!u.onNewRecord&&a.jsx(p.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:c,options:[{label:s("All records"),value:"all"},{label:s("Own records"),value:"own"}],onChange:f=>{o[u.name]=f,t(Ie(o))}})}],dataSource:n==null?void 0:n.map(c=>{let u="all",f=!1;return o[c.name]&&(f=!0,u=o[c.name]),E(S({},c),{enabled:f,scope:u})})})})}),Es=O.connect(e=>{const{t}=A.useTranslation();return a.jsxs(p.Checkbox.Group,{style:{width:"100%",display:"block"},value:e.value,onChange:n=>{const r=["ui.*","pm","pm.*","app"],s=r.map(o=>`!${o}`),i=Ps([...e.value||[],...n]).filter(o=>o&&!s.includes(o)).map(o=>!r.includes(o)||n!=null&&n.includes(o)?o:`!${o}`);for(const o of r)!i.includes(o)&&!i.includes(`!${o}`)&&i.push(`!${o}`);e.onChange(i)},children:[a.jsx("div",{style:{marginTop:16},children:a.jsx(p.Checkbox,{value:"ui.*",children:t("Allows to configure interface")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"pm",children:t("Allows to install, activate, disable plugins")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"pm.*",children:t("Allows to configure plugins")})}),a.jsx("div",{style:{marginTop:8},children:a.jsx(p.Checkbox,{value:"app",children:t("Allows to clear cache, reboot application")})})]})}),Ns=()=>{var c;const{role:e,setRole:t}=d.useContext(M),{t:n}=U(),r=l.useAPIClient(),s=(c=e==null?void 0:e.snippets)==null?void 0:c.includes("pm.*"),i=z.useMemoizedFn(u=>x(this,null,function*(){yield r.resource("roles").update({filterByTk:e.name,values:{snippets:u.values.snippets}}),t(S(S({},e),u.values)),p.message.success(n("Saved successfully"))})),o=d.useMemo(()=>N.createForm({values:e,effects(){N.onFormValuesChange(u=>x(this,null,function*(){yield i(u)}))}}),[e,i]);return a.jsx(l.SchemaComponent,{components:{SnippetCheckboxGroup:Es,StrategyActions:Fs,PluginPermissions:Is},scope:{pm:s},schema:{type:"void",name:D.uid(),"x-component":"div",properties:{general:{"x-component":"FormV2","x-component-props":{form:o},properties:{snippets:{title:n("Configure permissions"),type:"boolean","x-decorator":"FormItem","x-component":"SnippetCheckboxGroup"}}},plugins:{"x-component":"FormV2",properties:{pluginSettings:{title:n("Plugin settings"),"x-decorator":"FormItem","x-component":"PluginPermissions","x-visible":"{{pm}}"}}}}}})},ie=d.createContext(null);ie.displayName="MenuItemsContext";const Te=(e={})=>{const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n],s={title:r.title,uid:r["x-uid"]};r.properties&&(s.children=Te(r.properties)),t.push(s)}return t},Ds=()=>d.useContext(ie),ks=e=>{var i,o;const n={url:`uiSchemas:getProperties/${l.useAdminSchemaUid()}`},r=l.useRequest(n);if(r.loading)return a.jsx(p.Spin,{});const s=Te((o=(i=r.data)==null?void 0:i.data)==null?void 0:o.properties);return a.jsx(ie.Provider,{value:{service:r,items:s},children:e.children})},Oe=e=>{if(!Array.isArray(e))return[];const t=[];for(const n of e)t.push(n.uid),t.push(...Oe(n.children));return t},Me=(e,t,n=[])=>{if(!e)return[];for(const r of e){if(n.push(r.uid),t(r))return n;if(r.children){const s=Me(r.children,t,n);if(s.length)return s}n.pop()}return[]},Fe=(e=[],t=[])=>{for(const n of e)t.push(n.uid),n.children&&n.children.length&&Fe(n.children,t);return t},qs=({active:e})=>{const{styles:t}=Ae(),{role:n,setRole:r}=d.useContext(M),s=l.useAPIClient(),{items:i}=Ds(),{t:o}=A.useTranslation(),c=Oe(i),[u,f]=d.useState([]),{loading:y,refresh:_}=l.useRequest({resource:"roles.menuUiSchemas",resourceOf:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&e,refreshDeps:[n==null?void 0:n.name],onSuccess(m){var h;f(((h=m==null?void 0:m.data)==null?void 0:h.map(b=>b["x-uid"]))||[])}}),C=s.resource("roles.menuUiSchemas",n.name),P=c.length===u.length,w=(m,h)=>x(this,null,function*(){const b=Me(i,T=>T.uid===h.uid),I=Fe(h==null?void 0:h.children,[]);if(m){const T=I.concat(h.uid),de=u.filter(Ii=>!T.includes(Ii));f([...de]),yield C.remove({values:T})}else{const T=I.concat(b);f(de=>te.uniq([...de,...T])),yield C.add({values:T})}p.message.success(o("Saved successfully"))}),$=m=>m.map(h=>{const b=o(h.title);return h.children?E(S({},h),{title:b,children:$(h.children)}):E(S({},h),{title:b})}),F=z.useMemoizedFn(m=>x(this,null,function*(){yield s.resource("roles").update({filterByTk:n.name,values:m.values}),r(S(S({},n),m.values)),p.message.success(o("Saved successfully"))})),g=d.useMemo(()=>N.createForm({values:n,effects(){N.onFormValuesChange(m=>x(this,null,function*(){yield F(m)}))}}),[n,F]);return a.jsxs(a.Fragment,{children:[a.jsx(l.SchemaComponent,{schema:{type:"void",name:D.uid(),"x-component":"FormV2","x-component-props":{form:g},properties:{allowNewMenu:{title:o("Menu permissions"),"x-decorator":"FormItem","x-component":"Checkbox","x-content":o("New menu items are allowed to be accessed by default.")}}}}),a.jsx(p.Table,{className:t,loading:y,rowKey:"uid",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:o("Menu item title")},{dataIndex:"accessible",title:a.jsxs(a.Fragment,{children:[a.jsx(p.Checkbox,{checked:P,onChange:m=>x(this,null,function*(){P?yield C.set({values:[]}):yield C.set({values:c}),_(),p.message.success(o("Saved successfully"))})})," ",o("Accessible")]}),render:(m,h)=>{const b=u.includes(h.uid);return a.jsx(p.Checkbox,{checked:b,onChange:()=>w(b,h)})}}],dataSource:$(i)})]})};class Hs{constructor(){L(this,"permissionsTabs",[({t,TabLayout:n})=>({key:"general",label:t("System"),children:a.jsx(n,{children:a.jsx(Ns,{})})}),({activeKey:t,t:n,TabLayout:r})=>({key:"menu",label:n("Desktop menu"),children:a.jsx(r,{children:a.jsx(ks,{children:a.jsx(qs,{active:t==="menu"})})})})])}addPermissionsTab(t){this.permissionsTabs.push(t)}getPermissionsTabs(t){return this.permissionsTabs.map(n=>typeof n=="function"?n(t):n)}}var Us=Array.isArray,G=Us;function js(e){return e!=null&&typeof e=="object"}var ce=js,Gs=ne,Ls=ce,zs="[object Symbol]";function Ks(e){return typeof e=="symbol"||Ls(e)&&Gs(e)==zs}var le=Ks,Vs=G,Bs=le,Ws=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ys=/^\w*$/;function Xs(e,t){if(Vs(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||Bs(e)?!0:Ys.test(e)||!Ws.test(e)||t!=null&&e in Object(t)}var Js=Xs,Ee=Se,Zs="Expected a function";function ue(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Zs);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],i=n.cache;if(i.has(s))return i.get(s);var o=e.apply(this,r);return n.cache=i.set(s,o)||i,o};return n.cache=new(ue.Cache||Ee),n}ue.Cache=Ee;var Qs=ue,Rs=Qs,ea=500;function ta(e){var t=Rs(e,function(r){return n.size===ea&&n.clear(),r}),n=t.cache;return t}var na=ta,ra=na,sa=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,aa=/\\(\\)?/g,oa=ra(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(sa,function(n,r,s,i){t.push(s?i.replace(aa,"$1"):r||n)}),t}),ia=oa;function ca(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var la=ca,Ne=B,ua=la,pa=G,da=le,ha=1/0,De=Ne?Ne.prototype:void 0,ke=De?De.toString:void 0;function qe(e){if(typeof e=="string")return e;if(pa(e))return ua(e,qe)+"";if(da(e))return ke?ke.call(e):"";var t=e+"";return t=="0"&&1/e==-ha?"-0":t}var fa=qe,va=fa;function ma(e){return e==null?"":va(e)}var ga=ma,ya=G,ba=Js,_a=ia,Ca=ga;function $a(e,t){return ya(e)?e:ba(e,t)?[e]:_a(Ca(e))}var Q=$a,xa=le,Sa=1/0;function wa(e){if(typeof e=="string"||xa(e))return e;var t=e+"";return t=="0"&&1/e==-Sa?"-0":t}var pe=wa,Aa=Q,Pa=pe;function Ia(e,t){t=Aa(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Pa(t[n++])];return n&&n==r?e:void 0}var Ta=Ia,Oa=W,Ma=function(){try{var e=Oa(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),He=Ma,Ue=He;function Fa(e,t,n){t=="__proto__"&&Ue?Ue(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Ea=Fa,Na=Ea,Da=$e,ka=Object.prototype,qa=ka.hasOwnProperty;function Ha(e,t,n){var r=e[t];(!(qa.call(e,t)&&Da(r,n))||n===void 0&&!(t in e))&&Na(e,t,n)}var Ua=Ha,ja=9007199254740991,Ga=/^(?:0|[1-9]\d*)$/;function La(e,t){var n=typeof e;return t=t==null?ja:t,!!t&&(n=="number"||n!="symbol"&&Ga.test(e))&&e>-1&&e%1==0&&e<t}var je=La,za=Ua,Ka=Q,Va=je,Ge=re,Ba=pe;function Wa(e,t,n,r){if(!Ge(e))return e;t=Ka(t,e);for(var s=-1,i=t.length,o=i-1,c=e;c!=null&&++s<i;){var u=Ba(t[s]),f=n;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(s!=o){var y=c[u];f=r?r(y,u,c):void 0,f===void 0&&(f=Ge(y)?y:Va(t[s+1])?[]:{})}za(c,u,f),c=c[u]}return e}var Ya=Wa,Xa=Ta,Ja=Ya,Za=Q;function Qa(e,t,n){for(var r=-1,s=t.length,i={};++r<s;){var o=t[r],c=Xa(e,o);n(c,o)&&Ja(i,Za(o,e),c)}return i}var Ra=Qa;function eo(e,t){return e!=null&&t in Object(e)}var to=eo,no=ne,ro=ce,so="[object Arguments]";function ao(e){return ro(e)&&no(e)==so}var oo=ao,Le=oo,io=ce,ze=Object.prototype,co=ze.hasOwnProperty,lo=ze.propertyIsEnumerable,uo=Le(function(){return arguments}())?Le:function(e){return io(e)&&co.call(e,"callee")&&!lo.call(e,"callee")},Ke=uo,po=9007199254740991;function ho(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=po}var fo=ho,vo=Q,mo=Ke,go=G,yo=je,bo=fo,_o=pe;function Co(e,t,n){t=vo(t,e);for(var r=-1,s=t.length,i=!1;++r<s;){var o=_o(t[r]);if(!(i=e!=null&&n(e,o)))break;e=e[o]}return i||++r!=s?i:(s=e==null?0:e.length,!!s&&bo(s)&&yo(o,s)&&(go(e)||mo(e)))}var $o=Co,xo=to,So=$o;function wo(e,t){return e!=null&&So(e,t,xo)}var Ao=wo,Po=Ra,Io=Ao;function To(e,t){return Po(e,t,function(n,r){return Io(e,r)})}var Oo=To;function Mo(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var Fo=Mo,Ve=B,Eo=Ke,No=G,Be=Ve?Ve.isConcatSpreadable:void 0;function Do(e){return No(e)||Eo(e)||!!(Be&&e&&e[Be])}var ko=Do,qo=Fo,Ho=ko;function We(e,t,n,r,s){var i=-1,o=e.length;for(n||(n=Ho),s||(s=[]);++i<o;){var c=e[i];t>0&&n(c)?t>1?We(c,t-1,n,r,s):qo(s,c):r||(s[s.length]=c)}return s}var Uo=We,jo=Uo;function Go(e){var t=e==null?0:e.length;return t?jo(e,1):[]}var Lo=Go;function zo(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Ko=zo,Vo=Ko,Ye=Math.max;function Bo(e,t,n){return t=Ye(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,i=Ye(r.length-t,0),o=Array(i);++s<i;)o[s]=r[t+s];s=-1;for(var c=Array(t+1);++s<t;)c[s]=r[s];return c[t]=n(o),Vo(e,this,c)}}var Wo=Bo;function Yo(e){return function(){return e}}var Xo=Yo;function Jo(e){return e}var Zo=Jo,Qo=Xo,Xe=He,Ro=Zo,ei=Xe?function(e,t){return Xe(e,"toString",{configurable:!0,enumerable:!1,value:Qo(t),writable:!0})}:Ro,ti=ei,ni=800,ri=16,si=Date.now;function ai(e){var t=0,n=0;return function(){var r=si(),s=ri-(r-n);if(n=r,s>0){if(++t>=ni)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var oi=ai,ii=ti,ci=oi,li=ci(ii),ui=li,pi=Lo,di=Wo,hi=ui;function fi(e){return hi(di(e,void 0,pi),e+"")}var vi=fi,mi=Oo,gi=vi,yi=gi(function(e,t){return e==null?{}:mi(e,t)}),bi=yi;const _i=ve(bi),Ci={type:"object",properties:{[D.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:e=>{const t=l.useRecord(),n=l.useRequest(()=>Promise.resolve({data:_i(t,["title","name","default"])}),E(S({},e),{manual:!0})),r=l.useActionContext();return d.useEffect(()=>{r.visible&&n.run()},[r.visible]),n}},title:'{{t("Edit role")}}',properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":!0},default:{title:"","x-component":"CollectionField","x-decorator":"FormItem","x-content":'{{t("Default role")}}',"x-reactions":e=>{e.initialValue?e.disabled=!0:e.disabled=!1}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}}}},$i=({loadMore:e})=>{const[t,n]=d.useState(null),r=d.useRef(null),s=d.useCallback(i=>{i&&(r.current&&r.current.disconnect(),r.current=new IntersectionObserver(o=>{o.forEach(c=>{c.target===i.current&&c.isIntersecting&&(r.current&&r.current.unobserve(i.current),e())})}),i.current&&r.current&&r.current.observe(i.current))},[e]);return d.useEffect(()=>(s(t),()=>{r.current&&r.current.disconnect()}),[t,s]),{lastItem:t,setLastItem:n}},R=()=>{const{t:e}=U(),{data:t,mutate:n}=l.useResourceActionContext(),[r,s]=d.useState(!1),[i,o]=d.useState(null),{role:c,setRole:u}=d.useContext(M),[f,y]=d.useState([]),[_,C]=d.useState(!1),P=l.useAPIClient(),w=d.useCallback(()=>x(this,null,function*(){const h=t==null?void 0:t.meta;if(!h||h.page>=h.totalPage)return;C(!0);const b=yield P.resource("roles").list({page:h.page+1,pageSize:h.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});n((b==null?void 0:b.data)||{}),C(!1)}),[t]),{lastItem:$,setLastItem:F}=$i({loadMore:w}),g=({key:h})=>{u(f.find(b=>b.name===h))};d.useEffect(()=>{f[0]&&u(f[0])},[f,u]),d.useEffect(()=>{var b,I;if(!((b=t==null?void 0:t.data)!=null&&b.length))return;const h=d.createRef();F(h),((I=t.meta)==null?void 0:I.page)>1?y(T=>T.concat(t.data)):y(t.data)},[t,F]);const m=d.useMemo(()=>f.map((h,b)=>({key:h.name,label:b===f.length-1?a.jsx("div",{ref:$,children:a.jsx(R.Item,{item:h,onEdit:()=>{s(!0),o(h)}})}):a.jsx(R.Item,{item:h,onEdit:()=>{s(!0),o(h)}})})),[f,$]);return a.jsxs(a.Fragment,{children:[f.length?a.jsx(p.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[...m,..._?[{key:"loading",label:a.jsx(p.Spin,{})}]:[]],selectedKeys:[c==null?void 0:c.name],onSelect:g}):a.jsx(p.Empty,{image:p.Empty.PRESENTED_IMAGE_SIMPLE}),a.jsx(l.ActionContextProvider,{value:{visible:r,setVisible:s},children:a.jsx(l.RecordProvider,{record:i,collectionName:"departments",children:a.jsx(l.SchemaComponent,{scope:{t:e},schema:Ci})})})]})};R.Item=function({item:t,onEdit:n}){const{t:r}=U(),{refreshAsync:s}=l.useResourceActionContext(),{modal:i,message:o}=p.App.useApp(),c=l.useAPIClient(),u=()=>{i.confirm({title:r("Delete"),content:r("Are you sure you want to delete it?"),onOk:()=>x(this,null,function*(){yield c.resource("roles").destroy({filterByTk:t.name}),o.success(r("Deleted successfully")),yield s()})})},f=({key:_,domEvent:C})=>{switch(C.stopPropagation(),_){case"edit":n();break;case"delete":u()}},y=O.Schema.compile(t.title,{t:r});return a.jsxs(p.Row,{children:[a.jsx(p.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:a.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[a.jsx(fe.TagOutlined,{}),a.jsx("span",{style:{marginLeft:"10px"},title:y,children:y})]})}),a.jsxs(p.Col,{children:[t.default?a.jsx(p.Tag,{color:"success",bordered:!1,children:r("Default")}):null,a.jsx(p.Dropdown,{menu:{items:[{label:r("Edit"),key:"edit"},{label:r("Delete"),key:"delete"}],onClick:f},children:a.jsx(fe.MoreOutlined,{})})]})]})};const xi=e=>a.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:e.children}),Si=({active:e})=>{const{t}=U(),[n,r]=d.useState("general"),{role:s,setRole:i}=d.useContext(M),o=l.usePlugin(ee),c=l.useACLRoleContext(),u=d.useMemo(()=>o.settingsUI.getPermissionsTabs({t,activeKey:n,TabLayout:xi,activeRole:s,currentUserRole:c}).filter(Boolean),[n,o.settingsUI,s,t,c]),f=l.useAPIClient(),{data:y}=l.useRequest(()=>f.resource("roles").get({filterByTk:s==null?void 0:s.name}).then(_=>{var P,w;const C=(P=_==null?void 0:_.data)==null?void 0:P.data;return(w=C.snippets)==null||w.forEach($=>{C[$]=!0}),C}),{ready:e&&!!s,refreshDeps:[s==null?void 0:s.name]});return d.useEffect(()=>{r("general")},[s==null?void 0:s.name]),d.useEffect(()=>{i(y)},[y,i]),a.jsx(Ts,{children:a.jsx(p.Tabs,{type:"card",activeKey:n,onChange:_=>r(_),items:u})})},wi=()=>{const{t:e}=U();return a.jsx(l.SchemaComponent,{scope:{t:e},schema:{type:"void",properties:{newRole:{type:"void",title:e("New role"),"x-component":"Action","x-component-props":{type:"text",icon:"PlusOutlined",style:{width:"100%",textAlign:"left"}},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(t){const n=l.useActionContext();return l.useRequest(()=>Promise.resolve({data:{name:`r_${D.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),E(S({},t),{refreshDeps:[n.visible]}))}},title:e("New role"),properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem",description:'{{t("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.")}}'},default:{"x-component":"CollectionField","x-decorator":"FormItem",title:"","x-content":'{{t("Default role")}}'},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}}})},Je={name:"roles",filterTargetKey:"name",targetKey:"name",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Role display name")}}',type:"number","x-component":"Input",required:!0}},{type:"string",name:"name",interface:"input",uiSchema:{title:'{{t("Role UID")}}',type:"string","x-component":"Input"}},{type:"boolean",name:"default",interface:"boolean",uiSchema:{title:'{{t("Default role")}}',type:"boolean","x-component":"Checkbox"}}]},Ai=()=>{const{t:e}=U(),t=l.usePlugin(ee),[n,r]=d.useState("permissions"),s=Array.from(t.rolesManager.list()).map(([u,f])=>({key:u,label:O.Schema.compile(f.title,{t:e}),children:f.Component?d.createElement(f.Component,{active:n===u}):null})),[i,o]=d.useState(null),c=l.useSchemaComponentContext();return a.jsx(l.SchemaComponentContext.Provider,{value:E(S({},c),{designable:!1}),children:a.jsx(M.Provider,{value:{role:i,setRole:o},children:a.jsx(p.Card,{children:a.jsxs(p.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[a.jsx(p.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:a.jsx(l.ResourceActionProvider,{collection:Je,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:a.jsxs(l.CollectionProvider_deprecated,{collection:Je,children:[a.jsx(p.Row,{children:a.jsx(wi,{})}),a.jsx(p.Divider,{style:{margin:"12px 0"}}),a.jsx(R,{})]})})}),a.jsx(p.Col,{flex:"auto",style:{overflow:"hidden"},children:a.jsx(p.Tabs,{activeKey:n,onChange:u=>r(u),items:[{key:"permissions",label:e("Permissions"),children:a.jsx(Si,{active:n==="permissions"})},...s]})})]})})})})};class Pi{constructor(){L(this,"rolesManager",new Re.Registry)}add(t,n){this.rolesManager.register(t,n)}list(){return this.rolesManager.getEntities()}}class ee extends l.Plugin{constructor(){super(...arguments);L(this,"rolesManager",new Pi);L(this,"settingsUI",new Hs)}load(){return x(this,null,function*(){this.pluginSettingsManager.add("users-permissions.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:Ai,aclSnippet:"pm.acl.roles",sort:3})})}}v.PluginACLClient=ee,v.RolesManagerContext=M,v.default=ee,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -10,22 +10,22 @@
10
10
  module.exports = {
11
11
  "antd": "5.12.8",
12
12
  "react": "18.2.0",
13
- "@nocobase/client": "1.3.38-beta",
13
+ "react-i18next": "11.18.6",
14
+ "@nocobase/client": "1.4.0-alpha",
14
15
  "@formily/shared": "2.3.0",
15
16
  "@formily/react": "2.3.0",
16
17
  "@ant-design/icons": "5.2.6",
17
- "react-i18next": "11.18.6",
18
- "@nocobase/utils": "1.3.38-beta",
19
- "@nocobase/actions": "1.3.38-beta",
20
- "@nocobase/cache": "1.3.38-beta",
21
- "@nocobase/database": "1.3.38-beta",
22
- "@nocobase/server": "1.3.38-beta",
18
+ "@nocobase/utils": "1.4.0-alpha",
19
+ "@nocobase/actions": "1.4.0-alpha",
20
+ "@nocobase/cache": "1.4.0-alpha",
21
+ "@nocobase/database": "1.4.0-alpha",
22
+ "@nocobase/server": "1.4.0-alpha",
23
23
  "async-mutex": "0.3.2",
24
24
  "lodash": "4.17.21",
25
- "@nocobase/test": "1.3.38-beta",
25
+ "@nocobase/test": "1.4.0-alpha",
26
26
  "@formily/core": "2.3.0",
27
27
  "ahooks": "3.7.8",
28
28
  "@formily/antd-v5": "1.1.9",
29
29
  "antd-style": "3.4.5",
30
- "@nocobase/acl": "1.3.38-beta"
30
+ "@nocobase/acl": "1.4.0-alpha"
31
31
  };
@@ -2,5 +2,6 @@
2
2
  "The current user has no roles. Please try another account.": "The current user has no roles. Please try another account.",
3
3
  "The user role does not exist. Please try signing in again": "The user role does not exist. Please try signing in again",
4
4
  "New role": "New role",
5
- "Permissions": "Permissions"
5
+ "Permissions": "Permissions",
6
+ "Desktop menu": "Desktop menu"
6
7
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "The current user has no roles. Please try another account.": "현재 사용자에게 역할이 없습니다. 다른 계정을 시도해주세요.",
3
- "The user role does not exist. Please try signing in again": "사용자 역할이 존재하지 않습니다. 다시 로그인을 시도해주세요."
3
+ "The user role does not exist. Please try signing in again": "사용자 역할이 존재하지 않습니다. 다시 로그인을 시도해주세요.",
4
+ "Desktop menu": "데스크톱 메뉴"
4
5
  }
@@ -5,7 +5,7 @@
5
5
  "Permissions": "权限",
6
6
  "Roles & Permissions": "角色和权限",
7
7
  "General": "通用",
8
- "Menu": "菜单",
8
+ "Desktop menu": "桌面端菜单",
9
9
  "Plugin settings": "插件设置",
10
10
  "Data sources": "数据源"
11
11
  }
@@ -377,7 +377,7 @@ class PluginACLServer extends import_server.Plugin {
377
377
  ]
378
378
  });
379
379
  });
380
- this.app.on("beforeSignOut", ({ userId }) => {
380
+ this.app.on("cache:del:roles", ({ userId }) => {
381
381
  this.app.cache.del(`roles:${userId}`);
382
382
  });
383
383
  this.app.resourcer.use(import_setCurrentRole.setCurrentRole, { tag: "setCurrentRole", before: "acl", after: "auth" });
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "权限控制",
5
5
  "description": "Based on roles, resources, and actions, access control can precisely manage interface configuration permissions, data operation permissions, menu access permissions, and plugin permissions.",
6
6
  "description.zh-CN": "基于角色、资源和操作的权限控制,可以精确控制界面配置权限、数据操作权限、菜单访问权限、插件权限。",
7
- "version": "1.3.38-beta",
7
+ "version": "1.4.0-alpha",
8
8
  "license": "AGPL-3.0",
9
9
  "main": "./dist/server/index.js",
10
10
  "homepage": "https://docs.nocobase.com/handbook/acl",
@@ -34,5 +34,5 @@
34
34
  "url": "git+https://github.com/nocobase/nocobase.git",
35
35
  "directory": "packages/plugins/acl"
36
36
  },
37
- "gitHead": "1b9490667c9224cd0b179cbf75e10a581c49b230"
37
+ "gitHead": "f097a2bddec152522b5645bd5d451f4c866d2060"
38
38
  }
File without changes