use-confirm
Version:
asynchronous confirm function for React
8 lines (7 loc) • 5.58 kB
Source Map (JSON)
{
"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": ["src_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"]
}