UNPKG

koval-ui

Version:

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

1 lines 2.11 kB
{"version":3,"file":"Notification.cjs","sources":["../../../../src/lib/Notification/Notification.tsx"],"sourcesContent":["import type {FC} from 'react';\nimport {Fragment, useEffect} from 'react';\n\nimport {useRegisterNotification} from './useRegisterNotification.ts';\nimport type {NotificationProps, Id} from './NotificationReducer.ts';\nimport {useNotificationState} from './useNotificationState.tsx';\n\nexport type Props = NotificationProps & {\n /** Unique id of notification */\n id: Id;\n /** Callback triggered when Notification toggles */\n onToggle?: (isOpen: boolean) => void;\n onDenied?: () => void;\n};\n\nexport const Notification: FC<Props> = ({\n id,\n title,\n icon,\n body,\n requireInteraction,\n onToggle = () => {},\n onDenied = () => {},\n}) => {\n const registerNotification = useRegisterNotification();\n const {isOpen, permission} = useNotificationState(id);\n useEffect(() => {\n registerNotification(id, {title, icon, body, requireInteraction});\n }, [id, title, icon, body, requireInteraction, registerNotification]);\n\n useEffect(() => {\n onToggle(isOpen);\n }, [isOpen, onToggle]);\n\n useEffect(() => {\n permission === 'denied' && onDenied();\n }, [onDenied, permission]);\n\n return <Fragment />;\n};\n"],"names":["Notification","id","title","icon","body","requireInteraction","onToggle","onDenied","registerNotification","useRegisterNotification","isOpen","permission","useNotificationState","useEffect","Fragment"],"mappings":"wOAeaA,EAA0B,CAAC,CACpC,GAAAC,EACA,MAAAC,EACA,KAAAC,EACA,KAAAC,EACA,mBAAAC,EACA,SAAAC,EAAW,IAAM,CAAC,EAClB,SAAAC,EAAW,IAAM,CAAA,CACrB,IAAM,CACF,MAAMC,EAAuBC,EAAAA,wBAAwB,EAC/C,CAAC,OAAAC,EAAQ,WAAAC,GAAcC,EAAAA,qBAAqBX,CAAE,EACpDY,OAAAA,EAAAA,UAAU,IAAM,CACZL,EAAqBP,EAAI,CAAC,MAAAC,EAAO,KAAAC,EAAM,KAAAC,EAAM,mBAAAC,EAAmB,CAAA,EACjE,CAACJ,EAAIC,EAAOC,EAAMC,EAAMC,EAAoBG,CAAoB,CAAC,EAEpEK,EAAAA,UAAU,IAAM,CACZP,EAASI,CAAM,CAAA,EAChB,CAACA,EAAQJ,CAAQ,CAAC,EAErBO,EAAAA,UAAU,IAAM,CACZF,IAAe,UAAYJ,EAAS,CAAA,EACrC,CAACA,EAAUI,CAAU,CAAC,QAEjBG,EAAS,SAAA,EAAA,CACrB"}