koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
3 lines (2 loc) • 1.46 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),O=require("./NotificationContext.cjs"),c=require("./NotificationReducer.cjs"),T=require("./useNotificationProps.cjs"),p=require("./useNotificationInstance.cjs"),q=t=>{const{state:o}=O.useNotificationContext();return t(o)},I=t=>new window.Notification(t.title,{icon:t.icon,body:t.body,requireInteraction:t.requireInteraction}),y=t=>{const{dispatch:o}=O.useNotificationContext(),e=p.useNotificationInstance(t),r=T.useNotificationProps(t),a=q(i=>i.open.some(s=>s===t)),[C,u]=n.useState(),f=n.useCallback(()=>{o({type:c.Actions.NOTIFICATION_CLOSE,id:t})},[o,t]);n.useEffect(()=>(e==null||e.addEventListener("close",f),()=>{e==null||e.removeEventListener("close",f)}),[f,e]);const d=n.useCallback(()=>{var s,N;const i=(s=window==null?void 0:window.Notification)==null?void 0:s.permission;a&&(e==null||e.close()),i==="granted"?(o({type:c.Actions.NOTIFICATION_OPEN,id:t,instance:I(r)}),u(i)):i!=="denied"?(N=window==null?void 0:window.Notification)==null||N.requestPermission().then(l=>{u(l),l==="granted"&&o({type:c.Actions.NOTIFICATION_OPEN,id:t,instance:I(r)})}):i==="denied"&&u(i)},[o,t,e,a,r]),S=n.useCallback(()=>{e==null||e.close(),o({type:c.Actions.NOTIFICATION_CLOSE,id:t})},[o,t,e]);return{openNotification:d,closeNotification:S,isOpen:a,permission:C}};exports.useNotificationState=y;
//# sourceMappingURL=useNotificationState.cjs.map