UNPKG

koval-ui

Version:

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

3 lines (2 loc) 1.35 kB
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),l=require("./NotificationContext.cjs"),c=require("./NotificationReducer.cjs"),d=require("./useNotificationProps.cjs"),S=require("./useNotificationInstance.cjs"),T=t=>{const{state:e}=l.useNotificationContext();return t(e)},N=t=>new window.Notification(t.title,{icon:t.icon,body:t.body,requireInteraction:t.requireInteraction}),p=t=>{const{dispatch:e}=l.useNotificationContext(),i=S.useNotificationInstance(t),a=d.useNotificationProps(t),r=T(n=>n.open.some(s=>s===t)),[I,u]=o.useState(),f=o.useCallback(()=>{e({type:c.Actions.NOTIFICATION_CLOSE,id:t})},[e,t]);o.useEffect(()=>(i?.addEventListener("close",f),()=>{i?.removeEventListener("close",f)}),[f,i]);const O=o.useCallback(()=>{const n=window?.Notification?.permission;r&&i?.close(),n==="granted"?(e({type:c.Actions.NOTIFICATION_OPEN,id:t,instance:N(a)}),u(n)):n!=="denied"?window?.Notification?.requestPermission().then(s=>{u(s),s==="granted"&&e({type:c.Actions.NOTIFICATION_OPEN,id:t,instance:N(a)})}):n==="denied"&&u(n)},[e,t,i,r,a]),C=o.useCallback(()=>{i?.close(),e({type:c.Actions.NOTIFICATION_CLOSE,id:t})},[e,t,i]);return{openNotification:O,closeNotification:C,isOpen:r,permission:I}};exports.useNotificationState=p; //# sourceMappingURL=useNotificationState.cjs.map