UNPKG

@casl/react

Version:

React component for CASL which makes it easy to add permissions in any React application

49 lines (41 loc) 1.84 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); var e = Object.create, t = Object.defineProperty, r = Object.getOwnPropertyDescriptor, o = Object.getOwnPropertyNames, n = Object.getPrototypeOf, l = Object.prototype.hasOwnProperty; let u = require("react"); var c, i, a; i = 1, a = null != (c = u) ? e(n(c)) : {}, u = ((e, n, u, c) => { if (n && "object" == typeof n || "function" == typeof n) for (var i, a = o(n), b = 0, s = a.length; b < s; b++) i = a[b], l.call(e, i) || i === u || t(e, i, { get: (e => n[e]).bind(null, i), enumerable: !(c = r(n, i)) || c.enumerable }); return e; })(!i && c && c.t ? a : t(a, "default", { value: c, enumerable: !0 }), c); const b = (0, u.createContext)(null), s = [], f = () => {}; function p() { const e = (0, u.useContext)(b), t = (0, u.useCallback)(t => e?.on("updated", t) || f, [ e ]), r = (0, u.useCallback)(() => e?.rules || s, [ e ]); if ((0, u.useSyncExternalStore)(t, r, r), !e) throw new Error("AbilityContext is not provided. Please make sure to wrap your component tree with <AbilityProvider>."); return e; } const d = u.default.memo(function(e) { const t = p(), r = e, o = r.of || r.a || r.an || r.this || r.on, n = r.I || r.do, l = r.field, c = u.default.useMemo(() => t.relevantRuleFor(n, o, l), [ t, t.rules, n, o, l ]); let i = !!c && !c.inverted; e.not && (i = !i); const a = "function" == typeof e.children ? e.children({ isAllowed: i, ability: t, reason: c?.reason }) : e.children; return e.passThrough || i ? a : null; }); exports.AbilityProvider = function({children: e, value: t}) { return (0, u.createElement)(b.Provider, { value: t }, e); }, exports.Can = d, exports.useAbility = p; //# sourceMappingURL=index.cjs.map