UNPKG

@keislamoglu/react-conditional

Version:

Reduce the complexity of conditional rendering.

3 lines (2 loc) 1.34 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");exports.useCondition=(r,n)=>{const u=e.useRef(!1),t=e.useRef(),s=e.useRef(n),a=e.useCallback(e=>null==r||[!r.done||r.done.every(r=>e.includes(r)),!r.undone||!r.undone.some(r=>e.includes(r))].every(Boolean),[r]),o=e.useCallback(()=>{if(!u.current)return u.current=!0,t.current=n()},[n]),c=e.useCallback(()=>{u.current&&(u.current=!1,t.current&&t.current())},[]),l=e.useCallback(e=>{a(e)?o():c()},[a,o,c]);return e.useEffect(()=>{n!==s.current&&(c(),s.current=n)},[n,c]),{verifyAndPerform:l}},exports.useConditional=r=>{const[n,u]=e.useState(new Set),t=e.useCallback(()=>{const e=Array.from(n);r.forEach(r=>{r.verifyAndPerform(e)})},[n,r]),s=e.useCallback(e=>{u(r=>r.has(e)?r:(r.add(e),new Set(r)))},[]),a=e.useCallback(e=>{u(r=>r.has(e)?(r.delete(e),new Set(r)):r)},[]),o=e.useCallback(()=>{u(e=>0===e.size?e:(e.clear(),new Set(e)))},[]),c=e.useCallback(e=>{u(r=>e.length===r.size&&e.every(e=>r.has(e))?r:(r.clear(),e.forEach(e=>r.add(e)),new Set(r)))},[]),l=e.useCallback(e=>null==e||[!e.done||e.done.every(e=>n.has(e)),!e.undone||!e.undone.some(e=>n.has(e))].every(Boolean),[n]);return e.useEffect(()=>{t()},[t]),{doAction:s,undoAction:a,clearActions:o,setActions:c,verifyCondition:l}}; //# sourceMappingURL=react-conditional.cjs.production.min.js.map