@tachybase/module-acl 0.23.41 → 0.23.47

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.
@@ -1,4 +1,4 @@
1
- (function(v,c){typeof exports=="object"&&typeof module!="undefined"?c(exports,require("@tachybase/client"),require("@tachybase/utils/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/schema"),require("antd"),require("react-i18next"),require("ahooks"),require("lodash"),require("@ant-design/icons")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","@tachybase/utils/client","react/jsx-runtime","react","@tachybase/schema","antd","react-i18next","ahooks","lodash","@ant-design/icons"],c):(v=typeof globalThis!="undefined"?globalThis:v||self,c(v["@tachybase/module-acl"]={},v["@tachybase/client"],v["@tachybase/utils"],v.jsxRuntime,v.react,v["@tachybase/schema"],v.antd,v["react-i18next"],v.ahooks,v.lodash,v["@ant-design/icons"]))})(this,function(v,c,C,s,h,S,p,M,T,N,fe){"use strict";var wi=Object.defineProperty,Ai=Object.defineProperties;var Pi=Object.getOwnPropertyDescriptors;var Qe=Object.getOwnPropertySymbols;var Ii=Object.prototype.hasOwnProperty,Ti=Object.prototype.propertyIsEnumerable;var de=(v,c,C)=>c in v?wi(v,c,{enumerable:!0,configurable:!0,writable:!0,value:C}):v[c]=C,I=(v,c)=>{for(var C in c||(c={}))Ii.call(c,C)&&de(v,C,c[C]);if(Qe)for(var C of Qe(c))Ti.call(c,C)&&de(v,C,c[C]);return v},k=(v,c)=>Ai(v,Pi(c));var he=(v,c,C)=>de(v,typeof c!="symbol"?c+"":c,C);var A=(v,c,C)=>new Promise((s,h)=>{var S=T=>{try{M(C.next(T))}catch(N){h(N)}},p=T=>{try{M(C.throw(T))}catch(N){h(N)}},M=T=>T.done?s(T.value):Promise.resolve(T.value).then(S,p);M((C=C.apply(v,c)).next())});class Re{constructor(){he(this,"rolesManager",new C.Registry)}add(t,r){this.rolesManager.register(t,r)}list(){return this.rolesManager.getEntities()}}function H(){return M.useTranslation(["@tachybase/module-acl","core"],{nsMode:"fallback"})}const et=()=>{const{t:e}=H();return s.jsx(c.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 r=c.useActionContext();return c.useRequest(()=>Promise.resolve({data:{name:`r_${S.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),k(I({},t),{refreshDeps:[r.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 }}"}}}}}}}}}}})},D=h.createContext({role:null});D.displayName="RolesManagerContext";const R=h.createContext([]);R.displayName="AvailableActionsContext";const tt=e=>{const{data:t,loading:r}=c.useRequest({resource:"availableActions",action:"list"});return r?s.jsx(p.Spin,{}):s.jsx(R.Provider,{value:t==null?void 0:t.data,children:e.children})},rt=()=>h.useContext(R);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 nt=typeof K=="object"&&K&&K.Object===Object&&K,at=nt,st=at,ot=typeof self=="object"&&self&&self.Object===Object&&self,it=st||ot||Function("return this")(),L=it,ct=L,lt=ct.Symbol,V=lt,ge=V,me=Object.prototype,ut=me.hasOwnProperty,pt=me.toString,z=ge?ge.toStringTag:void 0;function dt(e){var t=ut.call(e,z),r=e[z];try{e[z]=void 0;var n=!0}catch(i){}var a=pt.call(e);return n&&(t?e[z]=r:delete e[z]),a}var ht=dt,ft=Object.prototype,vt=ft.toString;function gt(e){return vt.call(e)}var mt=gt,ye=V,yt=ht,bt=mt,_t="[object Null]",Ct="[object Undefined]",be=ye?ye.toStringTag:void 0;function xt(e){return e==null?e===void 0?Ct:_t:be&&be in Object(e)?yt(e):bt(e)}var ee=xt;function St(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var te=St,$t=ee,wt=te,At="[object AsyncFunction]",Pt="[object Function]",It="[object GeneratorFunction]",Tt="[object Proxy]";function Ot(e){if(!wt(e))return!1;var t=$t(e);return t==Pt||t==It||t==At||t==Tt}var Mt=Ot,Ft=L,Et=Ft["__core-js_shared__"],Dt=Et,re=Dt,_e=function(){var e=/[^.]+$/.exec(re&&re.keys&&re.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Nt(e){return!!_e&&_e in e}var kt=Nt,Ht=Function.prototype,jt=Ht.toString;function qt(e){if(e!=null){try{return jt.call(e)}catch(t){}try{return e+""}catch(t){}}return""}var Gt=qt,zt=Mt,Ut=kt,Kt=te,Lt=Gt,Vt=/[\\^$.*+?()[\]{}|]/g,Wt=/^\[object .+?Constructor\]$/,Bt=Function.prototype,Yt=Object.prototype,Xt=Bt.toString,Jt=Yt.hasOwnProperty,Zt=RegExp("^"+Xt.call(Jt).replace(Vt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qt(e){if(!Kt(e)||Ut(e))return!1;var t=zt(e)?Zt:Wt;return t.test(Lt(e))}var Rt=Qt;function er(e,t){return e==null?void 0:e[t]}var tr=er,rr=Rt,nr=tr;function ar(e,t){var r=nr(e,t);return rr(r)?r:void 0}var W=ar,sr=W,or=sr(Object,"create"),B=or,Ce=B;function ir(){this.__data__=Ce?Ce(null):{},this.size=0}var cr=ir;function lr(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var ur=lr,pr=B,dr="__lodash_hash_undefined__",hr=Object.prototype,fr=hr.hasOwnProperty;function vr(e){var t=this.__data__;if(pr){var r=t[e];return r===dr?void 0:r}return fr.call(t,e)?t[e]:void 0}var gr=vr,mr=B,yr=Object.prototype,br=yr.hasOwnProperty;function _r(e){var t=this.__data__;return mr?t[e]!==void 0:br.call(t,e)}var Cr=_r,xr=B,Sr="__lodash_hash_undefined__";function $r(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=xr&&t===void 0?Sr:t,this}var wr=$r,Ar=cr,Pr=ur,Ir=gr,Tr=Cr,Or=wr;function j(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}j.prototype.clear=Ar,j.prototype.delete=Pr,j.prototype.get=Ir,j.prototype.has=Tr,j.prototype.set=Or;var Mr=j;function Fr(){this.__data__=[],this.size=0}var Er=Fr;function Dr(e,t){return e===t||e!==e&&t!==t}var xe=Dr,Nr=xe;function kr(e,t){for(var r=e.length;r--;)if(Nr(e[r][0],t))return r;return-1}var Y=kr,Hr=Y,jr=Array.prototype,qr=jr.splice;function Gr(e){var t=this.__data__,r=Hr(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():qr.call(t,r,1),--this.size,!0}var zr=Gr,Ur=Y;function Kr(e){var t=this.__data__,r=Ur(t,e);return r<0?void 0:t[r][1]}var Lr=Kr,Vr=Y;function Wr(e){return Vr(this.__data__,e)>-1}var Br=Wr,Yr=Y;function Xr(e,t){var r=this.__data__,n=Yr(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Jr=Xr,Zr=Er,Qr=zr,Rr=Lr,en=Br,tn=Jr;function q(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}q.prototype.clear=Zr,q.prototype.delete=Qr,q.prototype.get=Rr,q.prototype.has=en,q.prototype.set=tn;var rn=q,nn=W,an=L,sn=nn(an,"Map"),on=sn,Se=Mr,cn=rn,ln=on;function un(){this.size=0,this.__data__={hash:new Se,map:new(ln||cn),string:new Se}}var pn=un;function dn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var hn=dn,fn=hn;function vn(e,t){var r=e.__data__;return fn(t)?r[typeof t=="string"?"string":"hash"]:r.map}var X=vn,gn=X;function mn(e){var t=gn(this,e).delete(e);return this.size-=t?1:0,t}var yn=mn,bn=X;function _n(e){return bn(this,e).get(e)}var Cn=_n,xn=X;function Sn(e){return xn(this,e).has(e)}var $n=Sn,wn=X;function An(e,t){var r=wn(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Pn=An,In=pn,Tn=yn,On=Cn,Mn=$n,Fn=Pn;function G(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}G.prototype.clear=In,G.prototype.delete=Tn,G.prototype.get=On,G.prototype.has=Mn,G.prototype.set=Fn;var $e=G,En="__lodash_hash_undefined__";function Dn(e){return this.__data__.set(e,En),this}var Nn=Dn;function kn(e){return this.__data__.has(e)}var Hn=kn,jn=$e,qn=Nn,Gn=Hn;function J(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new jn;++t<r;)this.add(e[t])}J.prototype.add=J.prototype.push=qn,J.prototype.has=Gn;var zn=J;function Un(e,t,r,n){for(var a=e.length,i=r+(n?1:-1);n?i--:++i<a;)if(t(e[i],i,e))return i;return-1}var Kn=Un;function Ln(e){return e!==e}var Vn=Ln;function Wn(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}var Bn=Wn,Yn=Kn,Xn=Vn,Jn=Bn;function Zn(e,t,r){return t===t?Jn(e,t,r):Yn(e,Xn,r)}var Qn=Zn,Rn=Qn;function ea(e,t){var r=e==null?0:e.length;return!!r&&Rn(e,t,0)>-1}var ta=ea;function ra(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}var na=ra;function aa(e,t){return e.has(t)}var sa=aa,oa=W,ia=L,ca=oa(ia,"Set"),la=ca;function ua(){}var pa=ua;function da(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var we=da,ne=la,ha=pa,fa=we,va=1/0,ga=ne&&1/fa(new ne([,-0]))[1]==va?function(e){return new ne(e)}:ha,ma=ga,ya=zn,ba=ta,_a=na,Ca=sa,xa=ma,Sa=we,$a=200;function wa(e,t,r){var n=-1,a=ba,i=e.length,o=!0,l=[],u=l;if(r)o=!1,a=_a;else if(i>=$a){var d=t?null:xa(e);if(d)return Sa(d);o=!1,a=Ca,u=new ya}else u=t?[]:l;e:for(;++n<i;){var y=e[n],x=t?t(y):y;if(y=r||y!==0?y:0,o&&x===x){for(var _=u.length;_--;)if(u[_]===x)continue e;t&&u.push(x),l.push(y)}else a(u,x,r)||(u!==l&&u.push(x),l.push(y))}return l}var Aa=wa,Pa=Aa;function Ia(e){return e&&e.length?Pa(e):[]}var Ta=Ia;const Oa=ve(Ta),Ae=c.createStyles(({css:e})=>e`
1
+ (function(v,l){typeof exports=="object"&&typeof module!="undefined"?l(exports,require("@tachybase/client"),require("@tachybase/utils/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/schema"),require("antd"),require("react-i18next"),require("ahooks"),require("lodash"),require("@ant-design/icons")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","@tachybase/utils/client","react/jsx-runtime","react","@tachybase/schema","antd","react-i18next","ahooks","lodash","@ant-design/icons"],l):(v=typeof globalThis!="undefined"?globalThis:v||self,l(v["@tachybase/module-acl"]={},v["@tachybase/client"],v["@tachybase/utils"],v.jsxRuntime,v.react,v["@tachybase/schema"],v.antd,v["react-i18next"],v.ahooks,v.lodash,v["@ant-design/icons"]))})(this,function(v,l,x,s,h,S,p,M,T,N,de){"use strict";var $i=Object.defineProperty,wi=Object.defineProperties;var Ai=Object.getOwnPropertyDescriptors;var Je=Object.getOwnPropertySymbols;var Pi=Object.prototype.hasOwnProperty,Ii=Object.prototype.propertyIsEnumerable;var Ze=(v,l,x)=>l in v?$i(v,l,{enumerable:!0,configurable:!0,writable:!0,value:x}):v[l]=x,I=(v,l)=>{for(var x in l||(l={}))Pi.call(l,x)&&Ze(v,x,l[x]);if(Je)for(var x of Je(l))Ii.call(l,x)&&Ze(v,x,l[x]);return v},k=(v,l)=>wi(v,Ai(l));var A=(v,l,x)=>new Promise((s,h)=>{var S=T=>{try{M(x.next(T))}catch(N){h(N)}},p=T=>{try{M(x.throw(T))}catch(N){h(N)}},M=T=>T.done?s(T.value):Promise.resolve(T.value).then(S,p);M((x=x.apply(v,l)).next())});class Qe{constructor(){this.rolesManager=new x.Registry}add(t,r){this.rolesManager.register(t,r)}list(){return this.rolesManager.getEntities()}}function H(){return M.useTranslation(["@tachybase/module-acl","core"],{nsMode:"fallback"})}const Re=()=>{const{t:e}=H();return s.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 r=l.useActionContext();return l.useRequest(()=>Promise.resolve({data:{name:`r_${S.uid()}`,snippets:["!ui.*","!pm","!pm.*"]}}),k(I({},t),{refreshDeps:[r.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 }}"}}}}}}}}}}})},D=h.createContext({role:null});D.displayName="RolesManagerContext";const R=h.createContext([]);R.displayName="AvailableActionsContext";const et=e=>{const{data:t,loading:r}=l.useRequest({resource:"availableActions",action:"list"});return r?s.jsx(p.Spin,{}):s.jsx(R.Provider,{value:t==null?void 0:t.data,children:e.children})},tt=()=>h.useContext(R);var K=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function he(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var rt=typeof K=="object"&&K&&K.Object===Object&&K,nt=rt,at=nt,st=typeof self=="object"&&self&&self.Object===Object&&self,ot=at||st||Function("return this")(),L=ot,it=L,ct=it.Symbol,V=ct,fe=V,ve=Object.prototype,lt=ve.hasOwnProperty,ut=ve.toString,z=fe?fe.toStringTag:void 0;function pt(e){var t=lt.call(e,z),r=e[z];try{e[z]=void 0;var n=!0}catch(i){}var a=ut.call(e);return n&&(t?e[z]=r:delete e[z]),a}var dt=pt,ht=Object.prototype,ft=ht.toString;function vt(e){return ft.call(e)}var gt=vt,ge=V,mt=dt,yt=gt,bt="[object Null]",_t="[object Undefined]",me=ge?ge.toStringTag:void 0;function Ct(e){return e==null?e===void 0?_t:bt:me&&me in Object(e)?mt(e):yt(e)}var ee=Ct;function xt(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var te=xt,St=ee,$t=te,wt="[object AsyncFunction]",At="[object Function]",Pt="[object GeneratorFunction]",It="[object Proxy]";function Tt(e){if(!$t(e))return!1;var t=St(e);return t==At||t==Pt||t==wt||t==It}var Ot=Tt,Mt=L,Ft=Mt["__core-js_shared__"],Et=Ft,re=Et,ye=function(){var e=/[^.]+$/.exec(re&&re.keys&&re.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Dt(e){return!!ye&&ye in e}var Nt=Dt,kt=Function.prototype,Ht=kt.toString;function jt(e){if(e!=null){try{return Ht.call(e)}catch(t){}try{return e+""}catch(t){}}return""}var qt=jt,Gt=Ot,zt=Nt,Ut=te,Kt=qt,Lt=/[\\^$.*+?()[\]{}|]/g,Vt=/^\[object .+?Constructor\]$/,Wt=Function.prototype,Bt=Object.prototype,Yt=Wt.toString,Xt=Bt.hasOwnProperty,Jt=RegExp("^"+Yt.call(Xt).replace(Lt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zt(e){if(!Ut(e)||zt(e))return!1;var t=Gt(e)?Jt:Vt;return t.test(Kt(e))}var Qt=Zt;function Rt(e,t){return e==null?void 0:e[t]}var er=Rt,tr=Qt,rr=er;function nr(e,t){var r=rr(e,t);return tr(r)?r:void 0}var W=nr,ar=W,sr=ar(Object,"create"),B=sr,be=B;function or(){this.__data__=be?be(null):{},this.size=0}var ir=or;function cr(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var lr=cr,ur=B,pr="__lodash_hash_undefined__",dr=Object.prototype,hr=dr.hasOwnProperty;function fr(e){var t=this.__data__;if(ur){var r=t[e];return r===pr?void 0:r}return hr.call(t,e)?t[e]:void 0}var vr=fr,gr=B,mr=Object.prototype,yr=mr.hasOwnProperty;function br(e){var t=this.__data__;return gr?t[e]!==void 0:yr.call(t,e)}var _r=br,Cr=B,xr="__lodash_hash_undefined__";function Sr(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Cr&&t===void 0?xr:t,this}var $r=Sr,wr=ir,Ar=lr,Pr=vr,Ir=_r,Tr=$r;function j(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}j.prototype.clear=wr,j.prototype.delete=Ar,j.prototype.get=Pr,j.prototype.has=Ir,j.prototype.set=Tr;var Or=j;function Mr(){this.__data__=[],this.size=0}var Fr=Mr;function Er(e,t){return e===t||e!==e&&t!==t}var _e=Er,Dr=_e;function Nr(e,t){for(var r=e.length;r--;)if(Dr(e[r][0],t))return r;return-1}var Y=Nr,kr=Y,Hr=Array.prototype,jr=Hr.splice;function qr(e){var t=this.__data__,r=kr(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():jr.call(t,r,1),--this.size,!0}var Gr=qr,zr=Y;function Ur(e){var t=this.__data__,r=zr(t,e);return r<0?void 0:t[r][1]}var Kr=Ur,Lr=Y;function Vr(e){return Lr(this.__data__,e)>-1}var Wr=Vr,Br=Y;function Yr(e,t){var r=this.__data__,n=Br(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Xr=Yr,Jr=Fr,Zr=Gr,Qr=Kr,Rr=Wr,en=Xr;function q(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}q.prototype.clear=Jr,q.prototype.delete=Zr,q.prototype.get=Qr,q.prototype.has=Rr,q.prototype.set=en;var tn=q,rn=W,nn=L,an=rn(nn,"Map"),sn=an,Ce=Or,on=tn,cn=sn;function ln(){this.size=0,this.__data__={hash:new Ce,map:new(cn||on),string:new Ce}}var un=ln;function pn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var dn=pn,hn=dn;function fn(e,t){var r=e.__data__;return hn(t)?r[typeof t=="string"?"string":"hash"]:r.map}var X=fn,vn=X;function gn(e){var t=vn(this,e).delete(e);return this.size-=t?1:0,t}var mn=gn,yn=X;function bn(e){return yn(this,e).get(e)}var _n=bn,Cn=X;function xn(e){return Cn(this,e).has(e)}var Sn=xn,$n=X;function wn(e,t){var r=$n(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var An=wn,Pn=un,In=mn,Tn=_n,On=Sn,Mn=An;function G(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}G.prototype.clear=Pn,G.prototype.delete=In,G.prototype.get=Tn,G.prototype.has=On,G.prototype.set=Mn;var xe=G,Fn="__lodash_hash_undefined__";function En(e){return this.__data__.set(e,Fn),this}var Dn=En;function Nn(e){return this.__data__.has(e)}var kn=Nn,Hn=xe,jn=Dn,qn=kn;function J(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Hn;++t<r;)this.add(e[t])}J.prototype.add=J.prototype.push=jn,J.prototype.has=qn;var Gn=J;function zn(e,t,r,n){for(var a=e.length,i=r+(n?1:-1);n?i--:++i<a;)if(t(e[i],i,e))return i;return-1}var Un=zn;function Kn(e){return e!==e}var Ln=Kn;function Vn(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}var Wn=Vn,Bn=Un,Yn=Ln,Xn=Wn;function Jn(e,t,r){return t===t?Xn(e,t,r):Bn(e,Yn,r)}var Zn=Jn,Qn=Zn;function Rn(e,t){var r=e==null?0:e.length;return!!r&&Qn(e,t,0)>-1}var ea=Rn;function ta(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}var ra=ta;function na(e,t){return e.has(t)}var aa=na,sa=W,oa=L,ia=sa(oa,"Set"),ca=ia;function la(){}var ua=la;function pa(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var Se=pa,ne=ca,da=ua,ha=Se,fa=1/0,va=ne&&1/ha(new ne([,-0]))[1]==fa?function(e){return new ne(e)}:da,ga=va,ma=Gn,ya=ea,ba=ra,_a=aa,Ca=ga,xa=Se,Sa=200;function $a(e,t,r){var n=-1,a=ya,i=e.length,o=!0,c=[],u=c;if(r)o=!1,a=ba;else if(i>=Sa){var d=t?null:Ca(e);if(d)return xa(d);o=!1,a=_a,u=new ma}else u=t?[]:c;e:for(;++n<i;){var y=e[n],C=t?t(y):y;if(y=r||y!==0?y:0,o&&C===C){for(var _=u.length;_--;)if(u[_]===C)continue e;t&&u.push(C),c.push(y)}else a(u,C,r)||(u!==c&&u.push(C),c.push(y))}return c}var wa=$a,Aa=wa;function Pa(e){return e&&e.length?Aa(e):[]}var Ia=Pa;const Ta=he(Ia),$e=l.createStyles(({css:e})=>e`
2
2
  .ant-table-cell {
3
3
  > .ant-space-horizontal {
4
4
  .ant-space-item-split:has(+ .ant-space-item:empty) {
@@ -6,4 +6,4 @@
6
6
  }
7
7
  }
8
8
  }
9
- `),Pe=(e=[],t=[])=>{for(const r of e)t.push(r.aclSnippet),r.children&&r.children.length&&Pe(r.children,t);return t},Ma=({active:e})=>{const t=c.useApp(),{styles:r}=Ae(),{role:n}=h.useContext(D),a=c.useAPIClient(),i=c.useCompile(),o=t.systemSettingsManager.getList(!1),l=t.systemSettingsManager.getAclSnippets(),[u,d]=h.useState((n==null?void 0:n.snippets)||[]),y=h.useMemo(()=>N.flatMap(o,g=>g.children?[g,...g.children]:g),[o]),x=h.useMemo(()=>u.includes("pm.*")&&u.every(g=>!g.startsWith("!pm.")),[u]),{t:_}=M.useTranslation(),{loading:w,refresh:P}=c.useRequest({resource:"roles.snippets",resourceOf:n==null?void 0:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&e,refreshDeps:[n==null?void 0:n.name],manual:!0,onSuccess(g){d((g==null?void 0:g.data.filter(m=>y.find(f=>m.includes(`!${f.aclSnippet}`)||!m.startsWith("!pm."))))||[])}});if(!n)return;const $=a.resource("roles.snippets",n==null?void 0:n.name),O=(g,m)=>A(this,null,function*(){const b=Pe(m==null?void 0:m.children,[]).concat(m.aclSnippet);g?(yield $.add({values:b.map(F=>"!"+F)}),P()):(yield $.remove({values:b.map(F=>"!"+F)}),P()),p.message.success(_("Saved successfully"))});return s.jsx(p.Table,{className:r,loading:w,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:_("Plugin name"),render:g=>i(g)},{dataIndex:"accessible",title:s.jsxs(s.Fragment,{children:[s.jsx(p.Checkbox,{checked:x,onChange:()=>A(this,null,function*(){const g=l.map(m=>"!"+m);x?yield $.add({values:g}):yield $.remove({values:g}),P(),p.message.success(_("Saved successfully"))})}),_("Accessible")]}),render:(g,m)=>{const f=!u.includes("!"+m.aclSnippet);return s.jsx(p.Checkbox,{checked:f,onChange:()=>O(f,m)})}}],dataSource:o.filter(g=>g.isTopLevel!==!1).map(g=>g.showTabs!==!1?g:N.omit(g,"children"))})},Fa=e=>{var r;if(!e)return{};const t={};return(r=e==null?void 0:e.forEach)==null||r.call(e,n=>{const[a,i]=n.split(":");t[a]=i||"all"}),t},Ie=e=>{const t=[];for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r];n==="all"?t.push(r):t.push(`${r}:${n}`)}return t},Ea=S.connect(e=>{const{onChange:t}=e,r=rt(),n=c.useCompile(),{t:a}=M.useTranslation(),i=S.useField(),o=Fa(i.value);return s.jsx("div",{children:s.jsx(p.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:a("Action display name"),render:l=>n(l)},{dataIndex:"onNewRecord",title:a("Action type"),render:l=>l?s.jsx(p.Tag,{color:"green",children:a("Action on new records")}):s.jsx(p.Tag,{color:"geekblue",children:a("Action on existing records")})},{dataIndex:"enabled",title:a("Allow"),render:(l,u)=>s.jsx(p.Checkbox,{checked:l,"aria-label":`${u.name}_checkbox`,onChange:d=>{l?delete o[u.name]:o[u.name]="all",t(Ie(o))}})},{dataIndex:"scope",title:a("Data scope"),render:(l,u)=>!u.onNewRecord&&s.jsx(p.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:l,options:[{label:a("All records"),value:"all"},{label:a("Own records"),value:"own"}],onChange:d=>{o[u.name]=d,t(Ie(o))}})}],dataSource:r==null?void 0:r.map(l=>{let u="all",d=!1;return o[l.name]&&(d=!0,u=o[l.name]),k(I({},l),{enabled:d,scope:u})})})})}),Da=S.connect(e=>{const{t}=M.useTranslation();return s.jsxs(p.Checkbox.Group,{style:{width:"100%",display:"block"},value:e.value,onChange:r=>{const n=["ui.*","pm","pm.*","app"],a=n.map(o=>`!${o}`),i=Oa([...e.value||[],...r]).filter(o=>o&&!a.includes(o)).map(o=>!n.includes(o)||r!=null&&r.includes(o)?o:`!${o}`);for(const o of n)!i.includes(o)&&!i.includes(`!${o}`)&&i.push(`!${o}`);e.onChange(i)},children:[s.jsx("div",{style:{marginTop:16},children:s.jsx(p.Checkbox,{value:"ui.*",children:t("Allows to configure interface")})}),s.jsx("div",{style:{marginTop:8},children:s.jsx(p.Checkbox,{value:"pm",children:t("Allows to install, activate, disable plugins")})}),s.jsx("div",{style:{marginTop:8},children:s.jsx(p.Checkbox,{value:"pm.*",children:t("Allows to configure plugins")})}),s.jsx("div",{style:{marginTop:8},children:s.jsx(p.Checkbox,{value:"app",children:t("Allows to clear cache, reboot application")})})]})}),Na=({active:e})=>{var u;const{role:t,setRole:r}=h.useContext(D),{t:n}=H(),a=c.useAPIClient(),i=(u=t==null?void 0:t.snippets)==null?void 0:u.includes("pm.*"),o=T.useMemoizedFn(d=>A(this,null,function*(){yield a.resource("roles").update({filterByTk:t.name,values:d.values}),r(I(I({},t),d.values)),p.message.success(n("Saved successfully"))})),l=h.useMemo(()=>S.createForm({values:t,effects(){S.onFormValuesChange(d=>A(this,null,function*(){yield o(d)}))}}),[t,o]);return s.jsx(c.SchemaComponent,{components:{SnippetCheckboxGroup:Da,StrategyActions:Ea,PluginPermissions:Ma},scope:{pm:i},schema:{type:"void",name:S.uid(),"x-component":"div",properties:{general:{"x-component":"FormV2","x-component-props":{form:l},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}}"}}}}}})},ae=h.createContext(null);ae.displayName="MenuItemsContext";const Te=(e={})=>{const t=[];for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r],a={title:n.title,uid:n["x-uid"]};n.properties&&(a.children=Te(n.properties)),t.push(a)}return t},ka=()=>h.useContext(ae),Oe=e=>{var i,o;const r={url:`uiSchemas:getProperties/${c.useAdminSchemaUid()}`},n=c.useRequest(r);if(n.loading)return s.jsx(p.Spin,{});const a=Te((o=(i=n.data)==null?void 0:i.data)==null?void 0:o.properties);return s.jsx(ae.Provider,{value:{service:n,items:a},children:e.children})},Me=e=>{if(!Array.isArray(e))return[];const t=[];for(const r of e)t.push(r.uid),t.push(...Me(r.children));return t},Fe=(e,t,r=[])=>{if(!e)return[];for(const n of e){if(r.push(n.uid),t(n))return r;if(n.children){const a=Fe(n.children,t,r);if(a.length)return a}r.pop()}return[]},Ee=(e=[],t=[])=>{for(const r of e)t.push(r.uid),r.children&&r.children.length&&Ee(r.children,t);return t},Ha=({active:e})=>{const{styles:t}=Ae(),{role:r,setRole:n}=h.useContext(D),a=c.useAPIClient(),{items:i}=ka(),{t:o}=M.useTranslation(),l=Me(i),[u,d]=h.useState([]),{loading:y,refresh:x}=c.useRequest({resource:"roles.menuUiSchemas",resourceOf:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&e,refreshDeps:[r==null?void 0:r.name],onSuccess(m){var f;d(((f=m==null?void 0:m.data)==null?void 0:f.map(b=>b["x-uid"]))||[])}}),_=a.resource("roles.menuUiSchemas",r.name),w=l.length===u.length,P=(m,f)=>A(this,null,function*(){const b=Fe(i,E=>E.uid===f.uid),F=Ee(f==null?void 0:f.children,[]);if(m){const E=F.concat(f.uid),pe=u.filter($i=>!E.includes($i));d([...pe]),yield _.remove({values:E})}else{const E=F.concat(b);d(pe=>N.uniq([...pe,...E])),yield _.add({values:E})}p.message.success(o("Saved successfully"))}),$=m=>m.map(f=>{const b=o(f.title);return f.children?k(I({},f),{title:b,children:$(f.children)}):k(I({},f),{title:b})}),O=T.useMemoizedFn(m=>A(this,null,function*(){yield a.resource("roles").update({filterByTk:r.name,values:m.values}),n(I(I({},r),m.values)),p.message.success(o("Saved successfully"))})),g=h.useMemo(()=>S.createForm({values:r,effects(){S.onFormValuesChange(m=>A(this,null,function*(){yield O(m)}))}}),[r,O]);return s.jsxs(s.Fragment,{children:[s.jsx(c.SchemaComponent,{schema:{type:"void",name:S.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.")}}}}),s.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:s.jsxs(s.Fragment,{children:[s.jsx(p.Checkbox,{checked:w,onChange:m=>A(this,null,function*(){w?yield _.set({values:[]}):yield _.set({values:l}),x(),p.message.success(o("Saved successfully"))})})," ",o("Accessible")]}),render:(m,f)=>{const b=u.includes(f.uid);return s.jsx(p.Checkbox,{checked:b,onChange:()=>P(b,f)})}}],dataSource:$(i)})]})},se=e=>s.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:e.children}),ja=({active:e})=>{var _;const{t}=H(),[r,n]=h.useState("general"),{role:a,setRole:i}=h.useContext(D),o=(_=a==null?void 0:a.snippets)==null?void 0:_.includes("pm.*"),u=c.useApp().getComponent("DataSourcePermissionManager"),d=h.useMemo(()=>[{key:"general",label:t("System"),children:s.jsx(se,{children:s.jsx(Na,{active:r==="general"&&e})})},{key:"menu",label:t("Menu"),children:s.jsx(se,{children:s.jsx(Oe,{children:s.jsx(Ha,{active:r==="menu"&&e})})})},...u?[{key:"dataSource",label:t("Data sources"),children:s.jsx(se,{children:s.jsx(Oe,{children:s.jsx(u,{role:a,active:r==="dataSource"&&e})})})}]:[]],[o,r,e,t]),y=c.useAPIClient(),{data:x}=c.useRequest(()=>y.resource("roles").get({filterByTk:a==null?void 0:a.name}).then(w=>{var $,O;const P=($=w==null?void 0:w.data)==null?void 0:$.data;return(O=P.snippets)==null||O.forEach(g=>{P[g]=!0}),P}),{ready:e&&!!a,refreshDeps:[a==null?void 0:a.name]});return h.useEffect(()=>{n("general")},[a==null?void 0:a.name]),h.useEffect(()=>{i(x)},[x]),s.jsx(tt,{children:s.jsx(p.Tabs,{type:"card",activeKey:r,onChange:w=>n(w),items:d})})},qa=({loadMore:e})=>{const[t,r]=h.useState(null),n=h.useRef(null),a=h.useCallback(i=>{i&&(n.current&&n.current.disconnect(),n.current=new IntersectionObserver(o=>{o.forEach(l=>{l.target===i.current&&l.isIntersecting&&(n.current&&n.current.unobserve(i.current),e())})}),i.current&&n.current&&n.current.observe(i.current))},[e]);return h.useEffect(()=>(a(t),()=>{n.current&&n.current.disconnect()}),[t,a]),{lastItem:t,setLastItem:r}};var Ga=Array.isArray,U=Ga;function za(e){return e!=null&&typeof e=="object"}var oe=za,Ua=ee,Ka=oe,La="[object Symbol]";function Va(e){return typeof e=="symbol"||Ka(e)&&Ua(e)==La}var ie=Va,Wa=U,Ba=ie,Ya=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Xa=/^\w*$/;function Ja(e,t){if(Wa(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Ba(e)?!0:Xa.test(e)||!Ya.test(e)||t!=null&&e in Object(t)}var Za=Ja,De=$e,Qa="Expected a function";function ce(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Qa);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],i=r.cache;if(i.has(a))return i.get(a);var o=e.apply(this,n);return r.cache=i.set(a,o)||i,o};return r.cache=new(ce.Cache||De),r}ce.Cache=De;var Ra=ce,es=Ra,ts=500;function rs(e){var t=es(e,function(n){return r.size===ts&&r.clear(),n}),r=t.cache;return t}var ns=rs,as=ns,ss=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,os=/\\(\\)?/g,is=as(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ss,function(r,n,a,i){t.push(a?i.replace(os,"$1"):n||r)}),t}),cs=is;function ls(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}var us=ls,Ne=V,ps=us,ds=U,hs=ie,fs=1/0,ke=Ne?Ne.prototype:void 0,He=ke?ke.toString:void 0;function je(e){if(typeof e=="string")return e;if(ds(e))return ps(e,je)+"";if(hs(e))return He?He.call(e):"";var t=e+"";return t=="0"&&1/e==-fs?"-0":t}var vs=je,gs=vs;function ms(e){return e==null?"":gs(e)}var ys=ms,bs=U,_s=Za,Cs=cs,xs=ys;function Ss(e,t){return bs(e)?e:_s(e,t)?[e]:Cs(xs(e))}var Z=Ss,$s=ie,ws=1/0;function As(e){if(typeof e=="string"||$s(e))return e;var t=e+"";return t=="0"&&1/e==-ws?"-0":t}var le=As,Ps=Z,Is=le;function Ts(e,t){t=Ps(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[Is(t[r++])];return r&&r==n?e:void 0}var Os=Ts,Ms=W,Fs=function(){try{var e=Ms(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),qe=Fs,Ge=qe;function Es(e,t,r){t=="__proto__"&&Ge?Ge(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Ds=Es,Ns=Ds,ks=xe,Hs=Object.prototype,js=Hs.hasOwnProperty;function qs(e,t,r){var n=e[t];(!(js.call(e,t)&&ks(n,r))||r===void 0&&!(t in e))&&Ns(e,t,r)}var Gs=qs,zs=9007199254740991,Us=/^(?:0|[1-9]\d*)$/;function Ks(e,t){var r=typeof e;return t=t==null?zs:t,!!t&&(r=="number"||r!="symbol"&&Us.test(e))&&e>-1&&e%1==0&&e<t}var ze=Ks,Ls=Gs,Vs=Z,Ws=ze,Ue=te,Bs=le;function Ys(e,t,r,n){if(!Ue(e))return e;t=Vs(t,e);for(var a=-1,i=t.length,o=i-1,l=e;l!=null&&++a<i;){var u=Bs(t[a]),d=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(a!=o){var y=l[u];d=n?n(y,u,l):void 0,d===void 0&&(d=Ue(y)?y:Ws(t[a+1])?[]:{})}Ls(l,u,d),l=l[u]}return e}var Xs=Ys,Js=Os,Zs=Xs,Qs=Z;function Rs(e,t,r){for(var n=-1,a=t.length,i={};++n<a;){var o=t[n],l=Js(e,o);r(l,o)&&Zs(i,Qs(o,e),l)}return i}var eo=Rs;function to(e,t){return e!=null&&t in Object(e)}var ro=to,no=ee,ao=oe,so="[object Arguments]";function oo(e){return ao(e)&&no(e)==so}var io=oo,Ke=io,co=oe,Le=Object.prototype,lo=Le.hasOwnProperty,uo=Le.propertyIsEnumerable,po=Ke(function(){return arguments}())?Ke:function(e){return co(e)&&lo.call(e,"callee")&&!uo.call(e,"callee")},Ve=po,ho=9007199254740991;function fo(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ho}var vo=fo,go=Z,mo=Ve,yo=U,bo=ze,_o=vo,Co=le;function xo(e,t,r){t=go(t,e);for(var n=-1,a=t.length,i=!1;++n<a;){var o=Co(t[n]);if(!(i=e!=null&&r(e,o)))break;e=e[o]}return i||++n!=a?i:(a=e==null?0:e.length,!!a&&_o(a)&&bo(o,a)&&(yo(e)||mo(e)))}var So=xo,$o=ro,wo=So;function Ao(e,t){return e!=null&&wo(e,t,$o)}var Po=Ao,Io=eo,To=Po;function Oo(e,t){return Io(e,t,function(r,n){return To(e,n)})}var Mo=Oo;function Fo(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}var Eo=Fo,We=V,Do=Ve,No=U,Be=We?We.isConcatSpreadable:void 0;function ko(e){return No(e)||Do(e)||!!(Be&&e&&e[Be])}var Ho=ko,jo=Eo,qo=Ho;function Ye(e,t,r,n,a){var i=-1,o=e.length;for(r||(r=qo),a||(a=[]);++i<o;){var l=e[i];t>0&&r(l)?t>1?Ye(l,t-1,r,n,a):jo(a,l):n||(a[a.length]=l)}return a}var Go=Ye,zo=Go;function Uo(e){var t=e==null?0:e.length;return t?zo(e,1):[]}var Ko=Uo;function Lo(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Vo=Lo,Wo=Vo,Xe=Math.max;function Bo(e,t,r){return t=Xe(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,i=Xe(n.length-t,0),o=Array(i);++a<i;)o[a]=n[t+a];a=-1;for(var l=Array(t+1);++a<t;)l[a]=n[a];return l[t]=r(o),Wo(e,this,l)}}var Yo=Bo;function Xo(e){return function(){return e}}var Jo=Xo;function Zo(e){return e}var Qo=Zo,Ro=Jo,Je=qe,ei=Qo,ti=Je?function(e,t){return Je(e,"toString",{configurable:!0,enumerable:!1,value:Ro(t),writable:!0})}:ei,ri=ti,ni=800,ai=16,si=Date.now;function oi(e){var t=0,r=0;return function(){var n=si(),a=ai-(n-r);if(r=n,a>0){if(++t>=ni)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var ii=oi,ci=ri,li=ii,ui=li(ci),pi=ui,di=Ko,hi=Yo,fi=pi;function vi(e){return fi(hi(e,void 0,di),e+"")}var gi=vi,mi=Mo,yi=gi,bi=yi(function(e,t){return e==null?{}:mi(e,t)}),_i=bi;const Ci=ve(_i),xi={type:"object",properties:{[S.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:e=>{const t=c.useRecord(),r=c.useRequest(()=>Promise.resolve({data:Ci(t,["title","name","default"])}),k(I({},e),{manual:!0})),n=c.useActionContext();return h.useEffect(()=>{n.visible&&r.run()},[n.visible]),r}},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 }}"}}}}}}}},Q=()=>{const{t:e}=H(),{data:t,mutate:r}=c.useResourceActionContext(),[n,a]=h.useState(!1),[i,o]=h.useState(null),{role:l,setRole:u}=h.useContext(D),[d,y]=h.useState([]),[x,_]=h.useState(!1),w=c.useAPIClient(),P=h.useCallback(()=>A(this,null,function*(){const f=t==null?void 0:t.meta;if(!f||f.page>=f.totalPage)return;_(!0);const b=yield w.resource("roles").list({page:f.page+1,pageSize:f.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});r((b==null?void 0:b.data)||{}),_(!1)}),[t]),{lastItem:$,setLastItem:O}=qa({loadMore:P}),g=({key:f})=>{u(d.find(b=>b.name===f))};h.useEffect(()=>{d[0]&&u(d[0])},[d,u]),h.useEffect(()=>{var b,F;if(!((b=t==null?void 0:t.data)!=null&&b.length))return;const f=h.createRef();O(f),((F=t.meta)==null?void 0:F.page)>1?y(E=>E.concat(t.data)):y(t.data)},[t,O]);const m=h.useMemo(()=>d.map((f,b)=>({key:f.name,label:b===d.length-1?s.jsx("div",{ref:$,children:s.jsx(Q.Item,{item:f,onEdit:()=>{a(!0),o(f)}})}):s.jsx(Q.Item,{item:f,onEdit:()=>{a(!0),o(f)}})})),[d,$]);return s.jsxs(s.Fragment,{children:[d.length?s.jsx(p.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[...m,...x?[{key:"loading",label:s.jsx(p.Spin,{})}]:[]],selectedKeys:[l==null?void 0:l.name],onSelect:g}):s.jsx(p.Empty,{image:p.Empty.PRESENTED_IMAGE_SIMPLE}),s.jsx(c.ActionContextProvider,{value:{visible:n,setVisible:a},children:s.jsx(c.RecordProvider,{record:i,collectionName:"departments",children:s.jsx(c.SchemaComponent,{scope:{t:e},schema:xi})})})]})};Q.Item=function({item:t,onEdit:r}){const{t:n}=H(),{refreshAsync:a}=c.useResourceActionContext(),{modal:i,message:o}=p.App.useApp(),l=c.useAPIClient(),u=()=>{i.confirm({title:n("Delete"),content:n("Are you sure you want to delete it?"),onOk:()=>A(this,null,function*(){yield l.resource("roles").destroy({filterByTk:t.name}),o.success(n("Deleted successfully")),yield a()})})},d=({key:x,domEvent:_})=>{switch(_.stopPropagation(),x){case"edit":r();break;case"delete":u()}},y=S.Schema.compile(t.title,{t:n});return s.jsxs(p.Row,{children:[s.jsx(p.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:s.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[s.jsx(fe.TagOutlined,{}),s.jsx("span",{style:{marginLeft:"10px"},title:y,children:y})]})}),s.jsxs(p.Col,{children:[t.default?s.jsx(p.Tag,{color:"success",bordered:!1,children:n("Default")}):null,s.jsx(p.Dropdown,{menu:{items:[{label:n("Edit"),key:"edit"},{label:n("Delete"),key:"delete"}],onClick:d},children:s.jsx(fe.MoreOutlined,{})})]})]})};const Ze={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"}}]},Si=()=>{const{t:e}=H(),t=c.usePlugin(ue),[r,n]=h.useState("permissions"),a=Array.from(t.rolesManager.list()).map(([u,d])=>({key:u,label:S.Schema.compile(d.title,{t:e}),children:d.Component?h.createElement(d.Component,{active:r===u}):null})),[i,o]=h.useState(null),l=c.useSchemaComponentContext();return s.jsx(c.SchemaComponentContext.Provider,{value:k(I({},l),{designable:!1}),children:s.jsx(D.Provider,{value:{role:i,setRole:o},children:s.jsx(p.Card,{children:s.jsxs(p.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[s.jsx(p.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:s.jsx(c.ResourceActionProvider,{collection:Ze,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:s.jsxs(c.CollectionProvider_deprecated,{collection:Ze,children:[s.jsx(p.Row,{children:s.jsx(et,{})}),s.jsx(p.Divider,{style:{margin:"12px 0"}}),s.jsx(Q,{})]})})}),s.jsx(p.Col,{flex:"auto",style:{overflow:"hidden"},children:s.jsx(p.Tabs,{activeKey:r,onChange:u=>n(u),items:[{key:"permissions",label:e("Permissions"),children:s.jsx(ja,{active:r==="permissions"})},...a]})})]})})})})};class ue extends c.Plugin{constructor(){super(...arguments);he(this,"rolesManager",new Re)}load(){return A(this,null,function*(){this.systemSettingsManager.add("id-auth.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:Si,aclSnippet:"pm.acl.roles",sort:3})})}}v.PluginACLClient=ue,v.RolesManagerContext=D,v.default=ue,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
9
+ `),we=(e=[],t=[])=>{for(const r of e)t.push(r.aclSnippet),r.children&&r.children.length&&we(r.children,t);return t},Oa=({active:e})=>{const t=l.useApp(),{styles:r}=$e(),{role:n}=h.useContext(D),a=l.useAPIClient(),i=l.useCompile(),o=t.systemSettingsManager.getList(!1),c=t.systemSettingsManager.getAclSnippets(),[u,d]=h.useState((n==null?void 0:n.snippets)||[]),y=h.useMemo(()=>N.flatMap(o,g=>g.children?[g,...g.children]:g),[o]),C=h.useMemo(()=>u.includes("pm.*")&&u.every(g=>!g.startsWith("!pm.")),[u]),{t:_}=M.useTranslation(),{loading:w,refresh:P}=l.useRequest({resource:"roles.snippets",resourceOf:n==null?void 0:n.name,action:"list",params:{paginate:!1}},{ready:!!n&&e,refreshDeps:[n==null?void 0:n.name],manual:!0,onSuccess(g){d((g==null?void 0:g.data.filter(m=>y.find(f=>m.includes(`!${f.aclSnippet}`)||!m.startsWith("!pm."))))||[])}});if(!n)return;const $=a.resource("roles.snippets",n==null?void 0:n.name),O=(g,m)=>A(this,null,function*(){const b=we(m==null?void 0:m.children,[]).concat(m.aclSnippet);g?(yield $.add({values:b.map(F=>"!"+F)}),P()):(yield $.remove({values:b.map(F=>"!"+F)}),P()),p.message.success(_("Saved successfully"))});return s.jsx(p.Table,{className:r,loading:w,rowKey:"key",pagination:!1,expandable:{defaultExpandAllRows:!0},columns:[{dataIndex:"title",title:_("Plugin name"),render:g=>i(g)},{dataIndex:"accessible",title:s.jsxs(s.Fragment,{children:[s.jsx(p.Checkbox,{checked:C,onChange:()=>A(this,null,function*(){const g=c.map(m=>"!"+m);C?yield $.add({values:g}):yield $.remove({values:g}),P(),p.message.success(_("Saved successfully"))})}),_("Accessible")]}),render:(g,m)=>{const f=!u.includes("!"+m.aclSnippet);return s.jsx(p.Checkbox,{checked:f,onChange:()=>O(f,m)})}}],dataSource:o.filter(g=>g.isTopLevel!==!1).map(g=>g.showTabs!==!1?g:N.omit(g,"children"))})},Ma=e=>{var r;if(!e)return{};const t={};return(r=e==null?void 0:e.forEach)==null||r.call(e,n=>{const[a,i]=n.split(":");t[a]=i||"all"}),t},Ae=e=>{const t=[];for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r];n==="all"?t.push(r):t.push(`${r}:${n}`)}return t},Fa=S.connect(e=>{const{onChange:t}=e,r=tt(),n=l.useCompile(),{t:a}=M.useTranslation(),i=S.useField(),o=Ma(i.value);return s.jsx("div",{children:s.jsx(p.Table,{rowKey:"name",size:"small",pagination:!1,columns:[{dataIndex:"displayName",title:a("Action display name"),render:c=>n(c)},{dataIndex:"onNewRecord",title:a("Action type"),render:c=>c?s.jsx(p.Tag,{color:"green",children:a("Action on new records")}):s.jsx(p.Tag,{color:"geekblue",children:a("Action on existing records")})},{dataIndex:"enabled",title:a("Allow"),render:(c,u)=>s.jsx(p.Checkbox,{checked:c,"aria-label":`${u.name}_checkbox`,onChange:d=>{c?delete o[u.name]:o[u.name]="all",t(Ae(o))}})},{dataIndex:"scope",title:a("Data scope"),render:(c,u)=>!u.onNewRecord&&s.jsx(p.Select,{"data-testid":"select-data-scope",popupMatchSelectWidth:!1,size:"small",value:c,options:[{label:a("All records"),value:"all"},{label:a("Own records"),value:"own"}],onChange:d=>{o[u.name]=d,t(Ae(o))}})}],dataSource:r==null?void 0:r.map(c=>{let u="all",d=!1;return o[c.name]&&(d=!0,u=o[c.name]),k(I({},c),{enabled:d,scope:u})})})})}),Ea=S.connect(e=>{const{t}=M.useTranslation();return s.jsxs(p.Checkbox.Group,{style:{width:"100%",display:"block"},value:e.value,onChange:r=>{const n=["ui.*","pm","pm.*","app"],a=n.map(o=>`!${o}`),i=Ta([...e.value||[],...r]).filter(o=>o&&!a.includes(o)).map(o=>!n.includes(o)||r!=null&&r.includes(o)?o:`!${o}`);for(const o of n)!i.includes(o)&&!i.includes(`!${o}`)&&i.push(`!${o}`);e.onChange(i)},children:[s.jsx("div",{style:{marginTop:16},children:s.jsx(p.Checkbox,{value:"ui.*",children:t("Allows to configure interface")})}),s.jsx("div",{style:{marginTop:8},children:s.jsx(p.Checkbox,{value:"pm",children:t("Allows to install, activate, disable plugins")})}),s.jsx("div",{style:{marginTop:8},children:s.jsx(p.Checkbox,{value:"pm.*",children:t("Allows to configure plugins")})}),s.jsx("div",{style:{marginTop:8},children:s.jsx(p.Checkbox,{value:"app",children:t("Allows to clear cache, reboot application")})})]})}),Da=({active:e})=>{var u;const{role:t,setRole:r}=h.useContext(D),{t:n}=H(),a=l.useAPIClient(),i=(u=t==null?void 0:t.snippets)==null?void 0:u.includes("pm.*"),o=T.useMemoizedFn(d=>A(this,null,function*(){yield a.resource("roles").update({filterByTk:t.name,values:d.values}),r(I(I({},t),d.values)),p.message.success(n("Saved successfully"))})),c=h.useMemo(()=>S.createForm({values:t,effects(){S.onFormValuesChange(d=>A(this,null,function*(){yield o(d)}))}}),[t,o]);return s.jsx(l.SchemaComponent,{components:{SnippetCheckboxGroup:Ea,StrategyActions:Fa,PluginPermissions:Oa},scope:{pm:i},schema:{type:"void",name:S.uid(),"x-component":"div",properties:{general:{"x-component":"FormV2","x-component-props":{form:c},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}}"}}}}}})},ae=h.createContext(null);ae.displayName="MenuItemsContext";const Pe=(e={})=>{const t=[];for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r],a={title:n.title,uid:n["x-uid"]};n.properties&&(a.children=Pe(n.properties)),t.push(a)}return t},Na=()=>h.useContext(ae),Ie=e=>{var i,o;const r={url:`uiSchemas:getProperties/${l.useAdminSchemaUid()}`},n=l.useRequest(r);if(n.loading)return s.jsx(p.Spin,{});const a=Pe((o=(i=n.data)==null?void 0:i.data)==null?void 0:o.properties);return s.jsx(ae.Provider,{value:{service:n,items:a},children:e.children})},Te=e=>{if(!Array.isArray(e))return[];const t=[];for(const r of e)t.push(r.uid),t.push(...Te(r.children));return t},Oe=(e,t,r=[])=>{if(!e)return[];for(const n of e){if(r.push(n.uid),t(n))return r;if(n.children){const a=Oe(n.children,t,r);if(a.length)return a}r.pop()}return[]},Me=(e=[],t=[])=>{for(const r of e)t.push(r.uid),r.children&&r.children.length&&Me(r.children,t);return t},ka=({active:e})=>{const{styles:t}=$e(),{role:r,setRole:n}=h.useContext(D),a=l.useAPIClient(),{items:i}=Na(),{t:o}=M.useTranslation(),c=Te(i),[u,d]=h.useState([]),{loading:y,refresh:C}=l.useRequest({resource:"roles.menuUiSchemas",resourceOf:r.name,action:"list",params:{paginate:!1}},{ready:!!r&&e,refreshDeps:[r==null?void 0:r.name],onSuccess(m){var f;d(((f=m==null?void 0:m.data)==null?void 0:f.map(b=>b["x-uid"]))||[])}}),_=a.resource("roles.menuUiSchemas",r.name),w=c.length===u.length,P=(m,f)=>A(this,null,function*(){const b=Oe(i,E=>E.uid===f.uid),F=Me(f==null?void 0:f.children,[]);if(m){const E=F.concat(f.uid),pe=u.filter(Si=>!E.includes(Si));d([...pe]),yield _.remove({values:E})}else{const E=F.concat(b);d(pe=>N.uniq([...pe,...E])),yield _.add({values:E})}p.message.success(o("Saved successfully"))}),$=m=>m.map(f=>{const b=o(f.title);return f.children?k(I({},f),{title:b,children:$(f.children)}):k(I({},f),{title:b})}),O=T.useMemoizedFn(m=>A(this,null,function*(){yield a.resource("roles").update({filterByTk:r.name,values:m.values}),n(I(I({},r),m.values)),p.message.success(o("Saved successfully"))})),g=h.useMemo(()=>S.createForm({values:r,effects(){S.onFormValuesChange(m=>A(this,null,function*(){yield O(m)}))}}),[r,O]);return s.jsxs(s.Fragment,{children:[s.jsx(l.SchemaComponent,{schema:{type:"void",name:S.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.")}}}}),s.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:s.jsxs(s.Fragment,{children:[s.jsx(p.Checkbox,{checked:w,onChange:m=>A(this,null,function*(){w?yield _.set({values:[]}):yield _.set({values:c}),C(),p.message.success(o("Saved successfully"))})})," ",o("Accessible")]}),render:(m,f)=>{const b=u.includes(f.uid);return s.jsx(p.Checkbox,{checked:b,onChange:()=>P(b,f)})}}],dataSource:$(i)})]})},se=e=>s.jsx("div",{style:{maxHeight:"60vh",overflowY:"auto"},children:e.children}),Ha=({active:e})=>{var _;const{t}=H(),[r,n]=h.useState("general"),{role:a,setRole:i}=h.useContext(D),o=(_=a==null?void 0:a.snippets)==null?void 0:_.includes("pm.*"),u=l.useApp().getComponent("DataSourcePermissionManager"),d=h.useMemo(()=>[{key:"general",label:t("System"),children:s.jsx(se,{children:s.jsx(Da,{active:r==="general"&&e})})},{key:"menu",label:t("Menu"),children:s.jsx(se,{children:s.jsx(Ie,{children:s.jsx(ka,{active:r==="menu"&&e})})})},...u?[{key:"dataSource",label:t("Data sources"),children:s.jsx(se,{children:s.jsx(Ie,{children:s.jsx(u,{role:a,active:r==="dataSource"&&e})})})}]:[]],[o,r,e,t]),y=l.useAPIClient(),{data:C}=l.useRequest(()=>y.resource("roles").get({filterByTk:a==null?void 0:a.name}).then(w=>{var $,O;const P=($=w==null?void 0:w.data)==null?void 0:$.data;return(O=P.snippets)==null||O.forEach(g=>{P[g]=!0}),P}),{ready:e&&!!a,refreshDeps:[a==null?void 0:a.name]});return h.useEffect(()=>{n("general")},[a==null?void 0:a.name]),h.useEffect(()=>{i(C)},[C]),s.jsx(et,{children:s.jsx(p.Tabs,{type:"card",activeKey:r,onChange:w=>n(w),items:d})})},ja=({loadMore:e})=>{const[t,r]=h.useState(null),n=h.useRef(null),a=h.useCallback(i=>{i&&(n.current&&n.current.disconnect(),n.current=new IntersectionObserver(o=>{o.forEach(c=>{c.target===i.current&&c.isIntersecting&&(n.current&&n.current.unobserve(i.current),e())})}),i.current&&n.current&&n.current.observe(i.current))},[e]);return h.useEffect(()=>(a(t),()=>{n.current&&n.current.disconnect()}),[t,a]),{lastItem:t,setLastItem:r}};var qa=Array.isArray,U=qa;function Ga(e){return e!=null&&typeof e=="object"}var oe=Ga,za=ee,Ua=oe,Ka="[object Symbol]";function La(e){return typeof e=="symbol"||Ua(e)&&za(e)==Ka}var ie=La,Va=U,Wa=ie,Ba=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ya=/^\w*$/;function Xa(e,t){if(Va(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Wa(e)?!0:Ya.test(e)||!Ba.test(e)||t!=null&&e in Object(t)}var Ja=Xa,Fe=xe,Za="Expected a function";function ce(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Za);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],i=r.cache;if(i.has(a))return i.get(a);var o=e.apply(this,n);return r.cache=i.set(a,o)||i,o};return r.cache=new(ce.Cache||Fe),r}ce.Cache=Fe;var Qa=ce,Ra=Qa,es=500;function ts(e){var t=Ra(e,function(n){return r.size===es&&r.clear(),n}),r=t.cache;return t}var rs=ts,ns=rs,as=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ss=/\\(\\)?/g,os=ns(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(as,function(r,n,a,i){t.push(a?i.replace(ss,"$1"):n||r)}),t}),is=os;function cs(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}var ls=cs,Ee=V,us=ls,ps=U,ds=ie,hs=1/0,De=Ee?Ee.prototype:void 0,Ne=De?De.toString:void 0;function ke(e){if(typeof e=="string")return e;if(ps(e))return us(e,ke)+"";if(ds(e))return Ne?Ne.call(e):"";var t=e+"";return t=="0"&&1/e==-hs?"-0":t}var fs=ke,vs=fs;function gs(e){return e==null?"":vs(e)}var ms=gs,ys=U,bs=Ja,_s=is,Cs=ms;function xs(e,t){return ys(e)?e:bs(e,t)?[e]:_s(Cs(e))}var Z=xs,Ss=ie,$s=1/0;function ws(e){if(typeof e=="string"||Ss(e))return e;var t=e+"";return t=="0"&&1/e==-$s?"-0":t}var le=ws,As=Z,Ps=le;function Is(e,t){t=As(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[Ps(t[r++])];return r&&r==n?e:void 0}var Ts=Is,Os=W,Ms=function(){try{var e=Os(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),He=Ms,je=He;function Fs(e,t,r){t=="__proto__"&&je?je(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Es=Fs,Ds=Es,Ns=_e,ks=Object.prototype,Hs=ks.hasOwnProperty;function js(e,t,r){var n=e[t];(!(Hs.call(e,t)&&Ns(n,r))||r===void 0&&!(t in e))&&Ds(e,t,r)}var qs=js,Gs=9007199254740991,zs=/^(?:0|[1-9]\d*)$/;function Us(e,t){var r=typeof e;return t=t==null?Gs:t,!!t&&(r=="number"||r!="symbol"&&zs.test(e))&&e>-1&&e%1==0&&e<t}var qe=Us,Ks=qs,Ls=Z,Vs=qe,Ge=te,Ws=le;function Bs(e,t,r,n){if(!Ge(e))return e;t=Ls(t,e);for(var a=-1,i=t.length,o=i-1,c=e;c!=null&&++a<i;){var u=Ws(t[a]),d=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return e;if(a!=o){var y=c[u];d=n?n(y,u,c):void 0,d===void 0&&(d=Ge(y)?y:Vs(t[a+1])?[]:{})}Ks(c,u,d),c=c[u]}return e}var Ys=Bs,Xs=Ts,Js=Ys,Zs=Z;function Qs(e,t,r){for(var n=-1,a=t.length,i={};++n<a;){var o=t[n],c=Xs(e,o);r(c,o)&&Js(i,Zs(o,e),c)}return i}var Rs=Qs;function eo(e,t){return e!=null&&t in Object(e)}var to=eo,ro=ee,no=oe,ao="[object Arguments]";function so(e){return no(e)&&ro(e)==ao}var oo=so,ze=oo,io=oe,Ue=Object.prototype,co=Ue.hasOwnProperty,lo=Ue.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=Z,go=Ke,mo=U,yo=qe,bo=fo,_o=le;function Co(e,t,r){t=vo(t,e);for(var n=-1,a=t.length,i=!1;++n<a;){var o=_o(t[n]);if(!(i=e!=null&&r(e,o)))break;e=e[o]}return i||++n!=a?i:(a=e==null?0:e.length,!!a&&bo(a)&&yo(o,a)&&(mo(e)||go(e)))}var xo=Co,So=to,$o=xo;function wo(e,t){return e!=null&&$o(e,t,So)}var Ao=wo,Po=Rs,Io=Ao;function To(e,t){return Po(e,t,function(r,n){return Io(e,n)})}var Oo=To;function Mo(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}var Fo=Mo,Le=V,Eo=Ke,Do=U,Ve=Le?Le.isConcatSpreadable:void 0;function No(e){return Do(e)||Eo(e)||!!(Ve&&e&&e[Ve])}var ko=No,Ho=Fo,jo=ko;function We(e,t,r,n,a){var i=-1,o=e.length;for(r||(r=jo),a||(a=[]);++i<o;){var c=e[i];t>0&&r(c)?t>1?We(c,t-1,r,n,a):Ho(a,c):n||(a[a.length]=c)}return a}var qo=We,Go=qo;function zo(e){var t=e==null?0:e.length;return t?Go(e,1):[]}var Uo=zo;function Ko(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Lo=Ko,Vo=Lo,Be=Math.max;function Wo(e,t,r){return t=Be(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,i=Be(n.length-t,0),o=Array(i);++a<i;)o[a]=n[t+a];a=-1;for(var c=Array(t+1);++a<t;)c[a]=n[a];return c[t]=r(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,Ye=He,Ro=Zo,ei=Ye?function(e,t){return Ye(e,"toString",{configurable:!0,enumerable:!1,value:Qo(t),writable:!0})}:Ro,ti=ei,ri=800,ni=16,ai=Date.now;function si(e){var t=0,r=0;return function(){var n=ai(),a=ni-(n-r);if(r=n,a>0){if(++t>=ri)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var oi=si,ii=ti,ci=oi,li=ci(ii),ui=li,pi=Uo,di=Bo,hi=ui;function fi(e){return hi(di(e,void 0,pi),e+"")}var vi=fi,gi=Oo,mi=vi,yi=mi(function(e,t){return e==null?{}:gi(e,t)}),bi=yi;const _i=he(bi),Ci={type:"object",properties:{[S.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:e=>{const t=l.useRecord(),r=l.useRequest(()=>Promise.resolve({data:_i(t,["title","name","default"])}),k(I({},e),{manual:!0})),n=l.useActionContext();return h.useEffect(()=>{n.visible&&r.run()},[n.visible]),r}},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 }}"}}}}}}}},Q=()=>{const{t:e}=H(),{data:t,mutate:r}=l.useResourceActionContext(),[n,a]=h.useState(!1),[i,o]=h.useState(null),{role:c,setRole:u}=h.useContext(D),[d,y]=h.useState([]),[C,_]=h.useState(!1),w=l.useAPIClient(),P=h.useCallback(()=>A(this,null,function*(){const f=t==null?void 0:t.meta;if(!f||f.page>=f.totalPage)return;_(!0);const b=yield w.resource("roles").list({page:f.page+1,pageSize:f.pageSize,filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]});r((b==null?void 0:b.data)||{}),_(!1)}),[t]),{lastItem:$,setLastItem:O}=ja({loadMore:P}),g=({key:f})=>{u(d.find(b=>b.name===f))};h.useEffect(()=>{d[0]&&u(d[0])},[d,u]),h.useEffect(()=>{var b,F;if(!((b=t==null?void 0:t.data)!=null&&b.length))return;const f=h.createRef();O(f),((F=t.meta)==null?void 0:F.page)>1?y(E=>E.concat(t.data)):y(t.data)},[t,O]);const m=h.useMemo(()=>d.map((f,b)=>({key:f.name,label:b===d.length-1?s.jsx("div",{ref:$,children:s.jsx(Q.Item,{item:f,onEdit:()=>{a(!0),o(f)}})}):s.jsx(Q.Item,{item:f,onEdit:()=>{a(!0),o(f)}})})),[d,$]);return s.jsxs(s.Fragment,{children:[d.length?s.jsx(p.Menu,{style:{border:"none",maxHeight:"65vh",overflowY:"auto"},items:[...m,...C?[{key:"loading",label:s.jsx(p.Spin,{})}]:[]],selectedKeys:[c==null?void 0:c.name],onSelect:g}):s.jsx(p.Empty,{image:p.Empty.PRESENTED_IMAGE_SIMPLE}),s.jsx(l.ActionContextProvider,{value:{visible:n,setVisible:a},children:s.jsx(l.RecordProvider,{record:i,collectionName:"departments",children:s.jsx(l.SchemaComponent,{scope:{t:e},schema:Ci})})})]})};Q.Item=function({item:t,onEdit:r}){const{t:n}=H(),{refreshAsync:a}=l.useResourceActionContext(),{modal:i,message:o}=p.App.useApp(),c=l.useAPIClient(),u=()=>{i.confirm({title:n("Delete"),content:n("Are you sure you want to delete it?"),onOk:()=>A(this,null,function*(){yield c.resource("roles").destroy({filterByTk:t.name}),o.success(n("Deleted successfully")),yield a()})})},d=({key:C,domEvent:_})=>{switch(_.stopPropagation(),C){case"edit":r();break;case"delete":u()}},y=S.Schema.compile(t.title,{t:n});return s.jsxs(p.Row,{children:[s.jsx(p.Col,{flex:3,style:{display:"inline-flex",alignItems:"center"},children:s.jsxs("span",{style:{whiteSpace:"nowrap",width:"120px",overflow:"hidden",textOverflow:"ellipsis"},children:[s.jsx(de.TagOutlined,{}),s.jsx("span",{style:{marginLeft:"10px"},title:y,children:y})]})}),s.jsxs(p.Col,{children:[t.default?s.jsx(p.Tag,{color:"success",bordered:!1,children:n("Default")}):null,s.jsx(p.Dropdown,{menu:{items:[{label:n("Edit"),key:"edit"},{label:n("Delete"),key:"delete"}],onClick:d},children:s.jsx(de.MoreOutlined,{})})]})]})};const Xe={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"}}]},xi=()=>{const{t:e}=H(),t=l.usePlugin(ue),[r,n]=h.useState("permissions"),a=Array.from(t.rolesManager.list()).map(([u,d])=>({key:u,label:S.Schema.compile(d.title,{t:e}),children:d.Component?h.createElement(d.Component,{active:r===u}):null})),[i,o]=h.useState(null),c=l.useSchemaComponentContext();return s.jsx(l.SchemaComponentContext.Provider,{value:k(I({},c),{designable:!1}),children:s.jsx(D.Provider,{value:{role:i,setRole:o},children:s.jsx(p.Card,{children:s.jsxs(p.Row,{gutter:24,style:{flexWrap:"nowrap"},children:[s.jsx(p.Col,{flex:"280px",style:{borderRight:"1px solid #eee",minWidth:"250px"},children:s.jsx(l.ResourceActionProvider,{collection:Xe,request:{resource:"roles",action:"list",params:{filter:{"name.$ne":"root"},showAnonymous:!0,sort:["createdAt"],appends:[]}},children:s.jsxs(l.CollectionProvider_deprecated,{collection:Xe,children:[s.jsx(p.Row,{children:s.jsx(Re,{})}),s.jsx(p.Divider,{style:{margin:"12px 0"}}),s.jsx(Q,{})]})})}),s.jsx(p.Col,{flex:"auto",style:{overflow:"hidden"},children:s.jsx(p.Tabs,{activeKey:r,onChange:u=>n(u),items:[{key:"permissions",label:e("Permissions"),children:s.jsx(Ha,{active:r==="permissions"})},...a]})})]})})})})};class ue extends l.Plugin{constructor(){super(...arguments),this.rolesManager=new Qe}load(){return A(this,null,function*(){this.systemSettingsManager.add("id-auth.roles",{title:this.t("Roles & Permissions"),icon:"LockOutlined",Component:xi,aclSnippet:"pm.acl.roles",sort:3})})}}v.PluginACLClient=ue,v.RolesManagerContext=D,v.default=ue,Object.defineProperties(v,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  export declare const RoleResourceCollectionContext: React.Context<any>;
3
- export declare const RolesResourcesActions: React.ForwardRefExoticComponent<Omit<Partial<any>, "ref"> & React.RefAttributes<unknown>>;
3
+ export declare const RolesResourcesActions: React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<unknown>>;
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare const StrategyActions: React.ForwardRefExoticComponent<Omit<Partial<any>, "ref"> & React.RefAttributes<unknown>>;
2
+ export declare const StrategyActions: React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<unknown>>;
@@ -1,19 +1,19 @@
1
1
  module.exports = {
2
2
  "react": "18.3.1",
3
- "@tachybase/client": "0.23.41",
4
- "@tachybase/schema": "0.23.41",
3
+ "@tachybase/client": "0.23.47",
4
+ "@tachybase/schema": "0.23.47",
5
5
  "antd": "5.22.5",
6
6
  "@ant-design/icons": "5.5.2",
7
7
  "react-i18next": "15.2.0",
8
- "@tachybase/utils": "0.23.41",
9
- "@tachybase/actions": "0.23.41",
10
- "@tachybase/cache": "0.23.41",
11
- "@tachybase/database": "0.23.41",
12
- "@tachybase/server": "0.23.41",
8
+ "@tachybase/utils": "0.23.47",
9
+ "@tachybase/actions": "0.23.47",
10
+ "@tachybase/cache": "0.23.47",
11
+ "@tachybase/database": "0.23.47",
12
+ "@tachybase/server": "0.23.47",
13
13
  "async-mutex": "0.3.2",
14
14
  "lodash": "4.17.21",
15
- "@tachybase/test": "0.23.41",
15
+ "@tachybase/test": "0.23.47",
16
16
  "ahooks": "3.8.4",
17
- "@tachybase/components": "0.23.41",
18
- "@tachybase/acl": "0.23.41"
17
+ "@tachybase/components": "0.23.47",
18
+ "@tachybase/acl": "0.23.47"
19
19
  };
@@ -22,7 +22,10 @@ __export(set_role_snippets_exports, {
22
22
  module.exports = __toCommonJS(set_role_snippets_exports);
23
23
  var import_server = require("@tachybase/server");
24
24
  class set_role_snippets_default extends import_server.Migration {
25
- appVersion = "<0.9.0-alpha.1";
25
+ constructor() {
26
+ super(...arguments);
27
+ this.appVersion = "<0.9.0-alpha.1";
28
+ }
26
29
  async up() {
27
30
  const result = await this.app.version.satisfies("<0.9.0-alpha.1");
28
31
  if (!result) {
@@ -49,15 +49,18 @@ var import_RoleModel = require("./model/RoleModel");
49
49
  var import_RoleResourceActionModel = require("./model/RoleResourceActionModel");
50
50
  var import_RoleResourceModel = require("./model/RoleResourceModel");
51
51
  class GrantHelper {
52
- resourceTargetActionMap = /* @__PURE__ */ new Map();
53
- targetActionResourceMap = /* @__PURE__ */ new Map();
54
52
  constructor() {
53
+ this.resourceTargetActionMap = /* @__PURE__ */ new Map();
54
+ this.targetActionResourceMap = /* @__PURE__ */ new Map();
55
55
  }
56
56
  }
57
57
  class PluginACL extends import_server.Plugin {
58
- // association field actions config
59
- associationFieldsActions = {};
60
- grantHelper = new GrantHelper();
58
+ constructor() {
59
+ super(...arguments);
60
+ // association field actions config
61
+ this.associationFieldsActions = {};
62
+ this.grantHelper = new GrantHelper();
63
+ }
61
64
  get acl() {
62
65
  return this.app.acl;
63
66
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tachybase/module-acl",
3
3
  "displayName": "Access control",
4
- "version": "0.23.41",
4
+ "version": "0.23.47",
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
  "keywords": [
7
7
  "Users & permissions"
@@ -20,18 +20,18 @@
20
20
  "react": "^18.3.1",
21
21
  "react-dom": "^18.3.1",
22
22
  "react-i18next": "^15.2.0",
23
- "@tachybase/components": "0.23.41",
24
- "@tachybase/schema": "0.23.41"
23
+ "@tachybase/components": "0.23.47",
24
+ "@tachybase/schema": "0.23.47"
25
25
  },
26
26
  "peerDependencies": {
27
- "@tachybase/acl": "0.23.41",
28
- "@tachybase/actions": "0.23.41",
29
- "@tachybase/cache": "0.23.41",
30
- "@tachybase/database": "0.23.41",
31
- "@tachybase/client": "0.23.41",
32
- "@tachybase/server": "0.23.41",
33
- "@tachybase/test": "0.23.41",
34
- "@tachybase/utils": "0.23.41"
27
+ "@tachybase/acl": "0.23.47",
28
+ "@tachybase/cache": "0.23.47",
29
+ "@tachybase/actions": "0.23.47",
30
+ "@tachybase/server": "0.23.47",
31
+ "@tachybase/database": "0.23.47",
32
+ "@tachybase/client": "0.23.47",
33
+ "@tachybase/utils": "0.23.47",
34
+ "@tachybase/test": "0.23.47"
35
35
  },
36
36
  "description.zh-CN": "基于角色、资源和操作的权限控制,可以精确控制界面配置权限、数据操作权限、菜单访问权限、插件权限。",
37
37
  "displayName.zh-CN": "权限控制",