UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

1 lines 2.36 kB
{"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","last","isOpen","dialogParams","dialogId"],"mappings":"mOAQMA,EAAyBC,GAA6C,CACxE,KAAM,CAAC,MAAAC,CAAA,EAASC,mBAAA,EAChB,OAAOF,EAASC,CAAK,CACzB,EAEaE,EAAkBC,GAAe,CAC1C,KAAM,CAAC,SAAAC,CAAA,EAAYH,mBAAA,EACbI,EAAaC,EAAAA,YACdC,GAA0B,CACvBH,EAAS,CACL,KAAMI,EAAAA,QAAQ,YACd,GAAAL,EACA,OAAAI,CAAA,CACH,CACL,EACA,CAACJ,EAAIC,CAAQ,CAAA,EAEXK,EAAcH,EAAAA,YAAY,IAAM,CAClCF,EAAS,CACL,KAAMI,EAAAA,QAAQ,aACd,GAAAL,CAAA,CACH,CACL,EAAG,CAACA,EAAIC,CAAQ,CAAC,EACXM,EAAcZ,EAAaE,GACXW,EAAAA,KAAKX,EAAM,IAAI,GACf,EACrB,EACKY,EAAST,IAAOO,EAChBG,EAAef,EAAaE,GACZA,EAAM,KAAK,KAAK,CAAC,CAAC,GAAIc,CAAA,IAAcX,IAAOW,CAAQ,GACnD,MACrB,EACD,MAAO,CACH,WAAAT,EACA,YAAAI,EACA,OAAAG,EACA,aAAAC,CAAA,CAER"}