UNPKG

use-confirm

Version:

asynchronous confirm function for React

3 lines (2 loc) 885 B
import y from"react";import m,{useState as c}from"react";function f(o,t){return({children:e})=>m.createElement(O,{ConfirmContext:o,options:t},e)}function O({ConfirmContext:o,options:t,children:e}){let[n,i]=c(null),[r,s]=c(t),[p,C]=c(null);return m.createElement(o.Provider,{value:{message:n,setMessage:i,options:r,setOptions:s,resolve:p,setResolve:C}},e)}import{useContext as R,useMemo as d}from"react";function l(o){return()=>v(o)}function v(o){let{message:t,setMessage:e,options:n,setOptions:i,resolve:r,setResolve:s}=R(o),p=d(()=>t!==null,[t]);return{message:t,isAsking:p,options:n,ask:async(u,a)=>new Promise(x=>{e(u),s(()=>T=>x(T)),a&&i({...n,...a})}),confirm:()=>{r?.(!0),e(null)},deny:()=>{r?.(!1),e(null)}}}function P(o){let t=y.createContext(null),e=l(t),n=f(t,o);return{useConfirm:e,ConfirmContextProvider:n}}export{P as createConfirm}; //# sourceMappingURL=index.esm.js.map