{
  "version": 3,
  "sources": ["../src/index.ts", "../src/factory.ts", "../src/ConfirmContext.tsx", "../src/useConfirm.ts"],
  "sourcesContent": ["export { createConfirm } from \"./factory\";\n", "import React from \"react\";\nimport {\n  ConfirmContextType,\n  createConfirmContextProvider,\n} from \"./ConfirmContext\";\nimport { createUseConfirm } from \"./useConfirm\";\n\nexport function createConfirm<TOptions = {}>(options?: TOptions) {\n  const ConfirmContext =\n    React.createContext<ConfirmContextType<TOptions> | null>(null);\n\n  const useConfirm = createUseConfirm<TOptions>(ConfirmContext);\n\n  const ConfirmContextProvider = createConfirmContextProvider<TOptions>(\n    ConfirmContext,\n    options,\n  );\n\n  return {\n    useConfirm,\n    ConfirmContextProvider,\n  };\n}\n", "import React, { useState } from \"react\";\n\nexport type ConfirmContextType<TOptions = {}> = {\n  message: React.ReactNode | null;\n  resolve?: (value: boolean) => void;\n  options?: TOptions;\n  setOptions?: React.Dispatch<React.SetStateAction<TOptions>>;\n  setMessage?: React.Dispatch<React.SetStateAction<React.ReactNode | null>>;\n  setResolve?: React.Dispatch<React.SetStateAction<(value: boolean) => void>>;\n};\n\nexport function createConfirmContext<TOptions = {}>() {\n  return React.createContext<ConfirmContextType<TOptions> | null>(null);\n}\n\nexport function createConfirmContextProvider<TOptions = {}>(\n  ConfirmContext: React.Context<ConfirmContextType<TOptions>>,\n  options: TOptions,\n) {\n  return ({ children }: { children?: React.ReactNode }) => (\n    <ConfirmContextProvider ConfirmContext={ConfirmContext} options={options}>\n      {children}\n    </ConfirmContextProvider>\n  );\n}\n\nexport type ConfirmContextProviderProps<TOptions = {}> = {\n  ConfirmContext: React.Context<ConfirmContextType<TOptions>>;\n  options?: TOptions;\n  children?: React.ReactNode;\n};\n\nfunction ConfirmContextProvider<TOptions = {}>({\n  ConfirmContext,\n  options: _options,\n  children,\n}: ConfirmContextProviderProps<TOptions>) {\n  const [message, setMessage] = useState<React.ReactNode | null>(null);\n  const [options, setOptions] = useState<TOptions>(_options);\n  const [resolve, setResolve] = useState<((value: boolean) => void) | null>(\n    null,\n  );\n\n  return (\n    <ConfirmContext.Provider\n      value={{\n        message,\n        setMessage,\n        options,\n        setOptions,\n        resolve,\n        setResolve,\n      }}\n    >\n      {children}\n    </ConfirmContext.Provider>\n  );\n}\n", "import { useContext, useMemo, Context } from \"react\";\nimport { ConfirmContextType } from \"./ConfirmContext\";\n\nexport function createUseConfirm<TOptions = {}>(\n  context: Context<ConfirmContextType<TOptions>>,\n) {\n  return () => useConfirm<TOptions>(context);\n}\n\nfunction useConfirm<TOptions = {}>(\n  ConfirmContext: Context<ConfirmContextType<TOptions>>,\n) {\n  const { message, setMessage, options, setOptions, resolve, setResolve } =\n    useContext(ConfirmContext);\n\n  const isAsking = useMemo(() => message !== null, [message]);\n\n  const ask = async (\n    msg: React.ReactNode,\n    _options?: typeof options,\n  ): Promise<boolean> => {\n    return new Promise((resolve) => {\n      setMessage(msg);\n      setResolve(() => (value: boolean) => resolve(value));\n      if (_options) {\n        setOptions({ ...options, ..._options });\n      }\n    });\n  };\n\n  const confirm = () => {\n    resolve?.(true);\n    setMessage(null);\n  };\n  const deny = () => {\n    resolve?.(false);\n    setMessage(null);\n  };\n\n  return { message, isAsking, options, ask, confirm, deny };\n}\n"],
  "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GCAA,IAAAI,EAAkB,sBCAlB,IAAAC,EAAgC,sBAezB,SAASC,EACdC,EACAC,EACA,CACA,MAAO,CAAC,CAAE,SAAAC,CAAS,IACjB,EAAAC,QAAA,cAACC,EAAA,CAAuB,eAAgBJ,EAAgB,QAASC,GAC9DC,CACH,CAEJ,CAQA,SAASE,EAAsC,CAC7C,eAAAJ,EACA,QAASK,EACT,SAAAH,CACF,EAA0C,CACxC,GAAM,CAACI,EAASC,CAAU,KAAI,YAAiC,IAAI,EAC7D,CAACN,EAASO,CAAU,KAAI,YAAmBH,CAAQ,EACnD,CAACI,EAASC,CAAU,KAAI,YAC5B,IACF,EAEA,OACE,EAAAP,QAAA,cAACH,EAAe,SAAf,CACC,MAAO,CACL,QAAAM,EACA,WAAAC,EACA,QAAAN,EACA,WAAAO,EACA,QAAAC,EACA,WAAAC,CACF,GAECR,CACH,CAEJ,CCzDA,IAAAS,EAA6C,iBAGtC,SAASC,EACdC,EACA,CACA,MAAO,IAAMC,EAAqBD,CAAO,CAC3C,CAEA,SAASC,EACPC,EACA,CACA,GAAM,CAAE,QAAAC,EAAS,WAAAC,EAAY,QAAAC,EAAS,WAAAC,EAAY,QAAAC,EAAS,WAAAC,CAAW,KACpE,cAAWN,CAAc,EAErBO,KAAW,WAAQ,IAAMN,IAAY,KAAM,CAACA,CAAO,CAAC,EAwB1D,MAAO,CAAE,QAAAA,EAAS,SAAAM,EAAU,QAAAJ,EAAS,IAtBzB,MACVK,EACAC,IAEO,IAAI,QAASJ,GAAY,CAC9BH,EAAWM,CAAG,EACdF,EAAW,IAAOI,GAAmBL,EAAQK,CAAK,CAAC,EAC/CD,GACFL,EAAW,CAAE,GAAGD,EAAS,GAAGM,CAAS,CAAC,CAE1C,CAAC,EAYuC,QAT1B,IAAM,CACpBJ,IAAU,EAAI,EACdH,EAAW,IAAI,CACjB,EAMmD,KALtC,IAAM,CACjBG,IAAU,EAAK,EACfH,EAAW,IAAI,CACjB,CAEwD,CAC1D,CFjCO,SAASS,EAA6BC,EAAoB,CAC/D,IAAMC,EACJ,EAAAC,QAAM,cAAmD,IAAI,EAEzDC,EAAaC,EAA2BH,CAAc,EAEtDI,EAAyBC,EAC7BL,EACAD,CACF,EAEA,MAAO,CACL,WAAAG,EACA,uBAAAE,CACF,CACF",
  "names": ["index_exports", "__export", "createConfirm", "__toCommonJS", "import_react", "import_react", "createConfirmContextProvider", "ConfirmContext", "options", "children", "React", "ConfirmContextProvider", "_options", "message", "setMessage", "setOptions", "resolve", "setResolve", "import_react", "createUseConfirm", "context", "useConfirm", "ConfirmContext", "message", "setMessage", "options", "setOptions", "resolve", "setResolve", "isAsking", "msg", "_options", "value", "createConfirm", "options", "ConfirmContext", "React", "useConfirm", "createUseConfirm", "ConfirmContextProvider", "createConfirmContextProvider"]
}
