permission-js-react
Version:
React component for permission-js which makes it easy to add permissions in any React application
3 lines (2 loc) • 836 B
JavaScript
import{jsx as r}from"react/jsx-runtime";import{factoryPermission as e}from"permission-js-core";import{memo as n,createContext as t,useMemo as o,useState as i,useContext as s,useCallback as c}from"react";const u=n;function m(){const n=t(null),m=()=>{const r=s(n);if(!r)throw new Error("Use subscribing check without PermissionProvider");const{subscribe:e,update:t}=r,[,u]=i(!1),m=o((()=>e()),[e]),a=c((()=>{u((r=>!r))}),[]);return{can:c((r=>m({...r,signal:a})),[m,a]),update:t}},a=u((({children:r,element:e=null,...n})=>{const{can:t}=m(),i=Object.values(n);return o((()=>t(n)),[...i,t])?r:e}));return{usePermission:m,Can:a,PermissionProvider:({children:t})=>{const[o]=i((()=>e())),s="function"==typeof t?t(o.update):t;return r(n.Provider,{value:o,children:s})}}}export{m as factoryReactPermission};
//# sourceMappingURL=index.es.mjs.map