koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.46 kB
Source Map (JSON)
{"version":3,"file":"useDialogState.cjs","sources":["../../../../src/lib/Dialog/useDialogState.tsx"],"sourcesContent":["import {useCallback} from 'react';\n\nimport {last} from '@/internal/utils/last.ts';\n\nimport {useDialogContext} from './DialogContext';\nimport type {DialogState, DialogParams} from './DialogReducer';\nimport {Actions} from './DialogReducer';\n\nconst useSelector = <TResult,>(callback: (arg0: DialogState) => TResult) => {\n const {state} = useDialogContext();\n return callback(state);\n};\n\nexport const useDialogState = (id: string) => {\n const {dispatch} = useDialogContext();\n const openDialog = useCallback(\n (params?: DialogParams) => {\n dispatch({\n type: Actions.DIALOG_OPEN,\n id,\n params,\n });\n },\n [id, dispatch]\n );\n const closeDialog = useCallback(() => {\n dispatch({\n type: Actions.DIALOG_CLOSE,\n id,\n });\n }, [id, dispatch]);\n const topDialogId = useSelector((state: DialogState) => {\n const topDialog = last(state.open);\n return topDialog?.id;\n });\n const isOpen = id === topDialogId;\n const dialogParams = useSelector((state: DialogState) => {\n const topDialog = state.open.find(({id: dialogId}) => id === dialogId);\n return topDialog?.params;\n });\n return {\n openDialog,\n closeDialog,\n isOpen,\n dialogParams,\n };\n};\n"],"names":["useSelector","callback","state","useDialogContext","useDialogState","id","dispatch","openDialog","useCallback","params","Actions","closeDialog","topDialogId","topDialog","last","isOpen","dialogParams","dialogId"],"mappings":"mOAQMA,EAAyBC,GAA6C,CAClE,KAAA,CAAC,MAAAC,CAAK,EAAIC,mBAAiB,EACjC,OAAOF,EAASC,CAAK,CACzB,EAEaE,EAAkBC,GAAe,CACpC,KAAA,CAAC,SAAAC,CAAQ,EAAIH,mBAAiB,EAC9BI,EAAaC,EAAA,YACdC,GAA0B,CACdH,EAAA,CACL,KAAMI,EAAQ,QAAA,YACd,GAAAL,EACA,OAAAI,CAAA,CACH,CACL,EACA,CAACJ,EAAIC,CAAQ,CACjB,EACMK,EAAcH,EAAAA,YAAY,IAAM,CACzBF,EAAA,CACL,KAAMI,EAAQ,QAAA,aACd,GAAAL,CAAA,CACH,CAAA,EACF,CAACA,EAAIC,CAAQ,CAAC,EACXM,EAAcZ,EAAaE,GAAuB,CAC9C,MAAAW,EAAYC,EAAAA,KAAKZ,EAAM,IAAI,EACjC,OAAOW,GAAA,YAAAA,EAAW,EAAA,CACrB,EACKE,EAASV,IAAOO,EAChBI,EAAehB,EAAaE,GAAuB,CAC/C,MAAAW,EAAYX,EAAM,KAAK,KAAK,CAAC,CAAC,GAAIe,CAAA,IAAcZ,IAAOY,CAAQ,EACrE,OAAOJ,GAAA,YAAAA,EAAW,MAAA,CACrB,EACM,MAAA,CACH,WAAAN,EACA,YAAAI,EACA,OAAAI,EACA,aAAAC,CACJ,CACJ"}