@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
JavaScript
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