{"version":3,"file":"index.esm.mjs","sources":["../../../node_modules/react-toastify/dist/react-toastify.esm.mjs","../../../src/addons/use-notification-center/useNotificationCenter.ts"],"sourcesContent":["import e,{isValidElement as t,useRef as n,useLayoutEffect as o,useEffect as s,cloneElement as a,useSyncExternalStore as r,useState as i}from\"react\";import l from\"clsx\";const c=e=>\"number\"==typeof e&&!isNaN(e),d=e=>\"string\"==typeof e,u=e=>\"function\"==typeof e,p=e=>d(e)||u(e)?e:null,m=e=>t(e)||d(e)||u(e)||c(e);function f(e,t,n){void 0===n&&(n=300);const{scrollHeight:o,style:s}=e;requestAnimationFrame(()=>{s.minHeight=\"initial\",s.height=o+\"px\",s.transition=`all ${n}ms`,requestAnimationFrame(()=>{s.height=\"0\",s.padding=\"0\",s.margin=\"0\",setTimeout(t,n)})})}function g(t){let{enter:a,exit:r,appendPosition:i=!1,collapse:l=!0,collapseDuration:c=300}=t;return function(t){let{children:d,position:u,preventExitTransition:p,done:m,nodeRef:g,isIn:y,playToast:v}=t;const h=i?`${a}--${u}`:a,T=i?`${r}--${u}`:r,E=n(0);return o(()=>{const e=g.current,t=h.split(\" \"),n=o=>{o.target===g.current&&(v(),e.removeEventListener(\"animationend\",n),e.removeEventListener(\"animationcancel\",n),0===E.current&&\"animationcancel\"!==o.type&&e.classList.remove(...t))};e.classList.add(...t),e.addEventListener(\"animationend\",n),e.addEventListener(\"animationcancel\",n)},[]),s(()=>{const e=g.current,t=()=>{e.removeEventListener(\"animationend\",t),l?f(e,m,c):m()};y||(p?t():(E.current=1,e.className+=` ${T}`,e.addEventListener(\"animationend\",t)))},[y]),e.createElement(e.Fragment,null,d)}}function y(e,t){return null!=e?{content:e.content,containerId:e.props.containerId,id:e.props.toastId,theme:e.props.theme,type:e.props.type,data:e.props.data||{},isLoading:e.props.isLoading,icon:e.props.icon,status:t}:{}}const v=new Map;let h=[];const T=new Set,E=e=>T.forEach(t=>t(e)),b=()=>v.size>0;function I(e,t){var n;if(t)return!(null==(n=v.get(t))||!n.isToastActive(e));let o=!1;return v.forEach(t=>{t.isToastActive(e)&&(o=!0)}),o}function _(e,t){m(e)&&(b()||h.push({content:e,options:t}),v.forEach(n=>{n.buildToast(e,t)}))}function C(e,t){v.forEach(n=>{null!=t&&null!=t&&t.containerId?(null==t?void 0:t.containerId)===n.id&&n.toggle(e,null==t?void 0:t.id):n.toggle(e,null==t?void 0:t.id)})}function L(e){const{subscribe:o,getSnapshot:s,setProps:i}=n(function(e){const n=e.containerId||1;return{subscribe(o){const s=function(e,n,o){let s=1,r=0,i=[],l=[],f=[],g=n;const v=new Map,h=new Set,T=()=>{f=Array.from(v.values()),h.forEach(e=>e())},E=e=>{l=null==e?[]:l.filter(t=>t!==e),T()},b=e=>{const{toastId:n,onOpen:s,updateId:a,children:r}=e.props,i=null==a;e.staleId&&v.delete(e.staleId),v.set(n,e),l=[...l,e.props.toastId].filter(t=>t!==e.staleId),T(),o(y(e,i?\"added\":\"updated\")),i&&u(s)&&s(t(r)&&r.props)};return{id:e,props:g,observe:e=>(h.add(e),()=>h.delete(e)),toggle:(e,t)=>{v.forEach(n=>{null!=t&&t!==n.props.toastId||u(n.toggle)&&n.toggle(e)})},removeToast:E,toasts:v,clearQueue:()=>{r-=i.length,i=[]},buildToast:(n,l)=>{if((t=>{let{containerId:n,toastId:o,updateId:s}=t;const a=n?n!==e:1!==e,r=v.has(o)&&null==s;return a||r})(l))return;const{toastId:f,updateId:h,data:I,staleId:_,delay:C}=l,L=()=>{E(f)},N=null==h;N&&r++;const $={...g,style:g.toastStyle,key:s++,...Object.fromEntries(Object.entries(l).filter(e=>{let[t,n]=e;return null!=n})),toastId:f,updateId:h,data:I,closeToast:L,isIn:!1,className:p(l.className||g.toastClassName),bodyClassName:p(l.bodyClassName||g.bodyClassName),progressClassName:p(l.progressClassName||g.progressClassName),autoClose:!l.isLoading&&(w=l.autoClose,k=g.autoClose,!1===w||c(w)&&w>0?w:k),deleteToast(){const e=v.get(f),{onClose:n,children:s}=e.props;u(n)&&n(t(s)&&s.props),o(y(e,\"removed\")),v.delete(f),r--,r<0&&(r=0),i.length>0?b(i.shift()):T()}};var w,k;$.closeButton=g.closeButton,!1===l.closeButton||m(l.closeButton)?$.closeButton=l.closeButton:!0===l.closeButton&&($.closeButton=!m(g.closeButton)||g.closeButton);let P=n;t(n)&&!d(n.type)?P=a(n,{closeToast:L,toastProps:$,data:I}):u(n)&&(P=n({closeToast:L,toastProps:$,data:I}));const M={content:P,props:$,staleId:_};g.limit&&g.limit>0&&r>g.limit&&N?i.push(M):c(C)?setTimeout(()=>{b(M)},C):b(M)},setProps(e){g=e},setToggle:(e,t)=>{v.get(e).toggle=t},isToastActive:e=>l.some(t=>t===e),getSnapshot:()=>g.newestOnTop?f.reverse():f}}(n,e,E);v.set(n,s);const r=s.observe(o);return h.forEach(e=>_(e.content,e.options)),h=[],()=>{r(),v.delete(n)}},setProps(e){var t;null==(t=v.get(n))||t.setProps(e)},getSnapshot(){var e;return null==(e=v.get(n))?void 0:e.getSnapshot()}}}(e)).current;i(e);const l=r(o,s,s);return{getToastToRender:function(e){if(!l)return[];const t=new Map;return l.forEach(e=>{const{position:n}=e.props;t.has(n)||t.set(n,[]),t.get(n).push(e)}),Array.from(t,t=>e(t[0],t[1]))},isToastActive:I,count:null==l?void 0:l.length}}function N(e){const[t,o]=i(!1),[a,r]=i(!1),l=n(null),c=n({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:d,pauseOnHover:u,closeToast:p,onClick:m,closeOnClick:f}=e;var g,y;function h(){o(!0)}function T(){o(!1)}function E(n){const o=l.current;c.canDrag&&o&&(c.didMove=!0,t&&T(),c.delta=\"x\"===e.draggableDirection?n.clientX-c.start:n.clientY-c.start,c.start!==n.clientX&&(c.canCloseOnClick=!1),o.style.transform=`translate3d(${\"x\"===e.draggableDirection?`${c.delta}px, var(--y)`:`0, calc(${c.delta}px + var(--y))`},0)`,o.style.opacity=\"\"+(1-Math.abs(c.delta/c.removalDistance)))}function b(){document.removeEventListener(\"pointermove\",E),document.removeEventListener(\"pointerup\",b);const t=l.current;if(c.canDrag&&c.didMove&&t){if(c.canDrag=!1,Math.abs(c.delta)>c.removalDistance)return r(!0),e.closeToast(),void e.collapseAll();t.style.transition=\"transform 0.2s, opacity 0.2s\",t.style.removeProperty(\"transform\"),t.style.removeProperty(\"opacity\")}}null==(y=v.get((g={id:e.toastId,containerId:e.containerId,fn:o}).containerId||1))||y.setToggle(g.id,g.fn),s(()=>{if(e.pauseOnFocusLoss)return document.hasFocus()||T(),window.addEventListener(\"focus\",h),window.addEventListener(\"blur\",T),()=>{window.removeEventListener(\"focus\",h),window.removeEventListener(\"blur\",T)}},[e.pauseOnFocusLoss]);const I={onPointerDown:function(t){if(!0===e.draggable||e.draggable===t.pointerType){c.didMove=!1,document.addEventListener(\"pointermove\",E),document.addEventListener(\"pointerup\",b);const n=l.current;c.canCloseOnClick=!0,c.canDrag=!0,n.style.transition=\"none\",\"x\"===e.draggableDirection?(c.start=t.clientX,c.removalDistance=n.offsetWidth*(e.draggablePercent/100)):(c.start=t.clientY,c.removalDistance=n.offsetHeight*(80===e.draggablePercent?1.5*e.draggablePercent:e.draggablePercent)/100)}},onPointerUp:function(t){const{top:n,bottom:o,left:s,right:a}=l.current.getBoundingClientRect();\"touchend\"!==t.nativeEvent.type&&e.pauseOnHover&&t.clientX>=s&&t.clientX<=a&&t.clientY>=n&&t.clientY<=o?T():h()}};return d&&u&&(I.onMouseEnter=T,e.stacked||(I.onMouseLeave=h)),f&&(I.onClick=e=>{m&&m(e),c.canCloseOnClick&&p()}),{playToast:h,pauseToast:T,isRunning:t,preventExitTransition:a,toastRef:l,eventHandlers:I}}function $(t){let{delay:n,isRunning:o,closeToast:s,type:a=\"default\",hide:r,className:i,style:c,controlledProgress:d,progress:p,rtl:m,isIn:f,theme:g}=t;const y=r||d&&0===p,v={...c,animationDuration:`${n}ms`,animationPlayState:o?\"running\":\"paused\"};d&&(v.transform=`scaleX(${p})`);const h=l(\"Toastify__progress-bar\",d?\"Toastify__progress-bar--controlled\":\"Toastify__progress-bar--animated\",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${a}`,{\"Toastify__progress-bar--rtl\":m}),T=u(i)?i({rtl:m,type:a,defaultClassName:h}):l(h,i),E={[d&&p>=1?\"onTransitionEnd\":\"onAnimationEnd\"]:d&&p<1?null:()=>{f&&s()}};return e.createElement(\"div\",{className:\"Toastify__progress-bar--wrp\",\"data-hidden\":y},e.createElement(\"div\",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${g} Toastify__progress-bar--${a}`}),e.createElement(\"div\",{role:\"progressbar\",\"aria-hidden\":y?\"true\":\"false\",\"aria-label\":\"notification timer\",className:T,style:v,...E}))}let w=1;const k=()=>\"\"+w++;function P(e){return e&&(d(e.toastId)||c(e.toastId))?e.toastId:k()}function M(e,t){return _(e,t),t.toastId}function O(e,t){return{...t,type:t&&t.type||e,toastId:P(t)}}function x(e){return(t,n)=>M(t,O(e,n))}function A(e,t){return M(e,O(\"default\",t))}A.loading=(e,t)=>M(e,O(\"default\",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),A.promise=function(e,t,n){let o,{pending:s,error:a,success:r}=t;s&&(o=d(s)?A.loading(s,n):A.loading(s.render,{...n,...s}));const i={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(e,t,s)=>{if(null==t)return void A.dismiss(o);const a={type:e,...i,...n,data:s},r=d(t)?{render:t}:t;return o?A.update(o,{...a,...r}):A(r.render,{...a,...r}),s},c=u(e)?e():e;return c.then(e=>l(\"success\",r,e)).catch(e=>l(\"error\",a,e)),c},A.success=x(\"success\"),A.info=x(\"info\"),A.error=x(\"error\"),A.warning=x(\"warning\"),A.warn=A.warning,A.dark=(e,t)=>M(e,O(\"default\",{theme:\"dark\",...t})),A.dismiss=function(e){!function(e){var t;if(b()){if(null==e||d(t=e)||c(t))v.forEach(t=>{t.removeToast(e)});else if(e&&(\"containerId\"in e||\"id\"in e)){const t=v.get(e.containerId);t?t.removeToast(e.id):v.forEach(t=>{t.removeToast(e.id)})}}else h=h.filter(t=>null!=e&&t.options.toastId!==e)}(e)},A.clearWaitingQueue=function(e){void 0===e&&(e={}),v.forEach(t=>{!t.props.limit||e.containerId&&t.id!==e.containerId||t.clearQueue()})},A.isActive=I,A.update=function(e,t){void 0===t&&(t={});const n=((e,t)=>{var n;let{containerId:o}=t;return null==(n=v.get(o||1))?void 0:n.toasts.get(e)})(e,t);if(n){const{props:o,content:s}=n,a={delay:100,...o,...t,toastId:t.toastId||e,updateId:k()};a.toastId!==e&&(a.staleId=e);const r=a.render||s;delete a.render,M(r,a)}},A.done=e=>{A.update(e,{progress:1})},A.onChange=function(e){return T.add(e),()=>{T.delete(e)}},A.play=e=>C(!0,e),A.pause=e=>C(!1,e);const B=\"undefined\"!=typeof window?o:s,D=t=>{let{theme:n,type:o,isLoading:s,...a}=t;return e.createElement(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"colored\"===n?\"currentColor\":`var(--toastify-icon-color-${o})`,...a})},z={info:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\"}))},warning:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\"}))},success:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\"}))},error:function(t){return e.createElement(D,{...t},e.createElement(\"path\",{d:\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\"}))},spinner:function(){return e.createElement(\"div\",{className:\"Toastify__spinner\"})}},R=n=>{const{isRunning:o,preventExitTransition:s,toastRef:r,eventHandlers:i,playToast:c}=N(n),{closeButton:d,children:p,autoClose:m,onClick:f,type:g,hideProgressBar:y,closeToast:v,transition:h,position:T,className:E,style:b,bodyClassName:I,bodyStyle:_,progressClassName:C,progressStyle:L,updateId:w,role:k,progress:P,rtl:M,toastId:O,deleteToast:x,isIn:A,isLoading:B,closeOnClick:D,theme:R}=n,S=l(\"Toastify__toast\",`Toastify__toast-theme--${R}`,`Toastify__toast--${g}`,{\"Toastify__toast--rtl\":M},{\"Toastify__toast--close-on-click\":D}),H=u(E)?E({rtl:M,position:T,type:g,defaultClassName:S}):l(S,E),F=function(e){let{theme:n,type:o,isLoading:s,icon:r}=e,i=null;const l={theme:n,type:o};return!1===r||(u(r)?i=r({...l,isLoading:s}):t(r)?i=a(r,l):s?i=z.spinner():(e=>e in z)(o)&&(i=z[o](l))),i}(n),X=!!P||!m,Y={closeToast:v,type:g,theme:R};let q=null;return!1===d||(q=u(d)?d(Y):t(d)?a(d,Y):function(t){let{closeToast:n,theme:o,ariaLabel:s=\"close\"}=t;return e.createElement(\"button\",{className:`Toastify__close-button Toastify__close-button--${o}`,type:\"button\",onClick:e=>{e.stopPropagation(),n(e)},\"aria-label\":s},e.createElement(\"svg\",{\"aria-hidden\":\"true\",viewBox:\"0 0 14 16\"},e.createElement(\"path\",{fillRule:\"evenodd\",d:\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"})))}(Y)),e.createElement(h,{isIn:A,done:x,position:T,preventExitTransition:s,nodeRef:r,playToast:c},e.createElement(\"div\",{id:O,onClick:f,\"data-in\":A,className:H,...i,style:b,ref:r},e.createElement(\"div\",{...A&&{role:k},className:u(I)?I({type:g}):l(\"Toastify__toast-body\",I),style:_},null!=F&&e.createElement(\"div\",{className:l(\"Toastify__toast-icon\",{\"Toastify--animate-icon Toastify__zoom-enter\":!B})},F),e.createElement(\"div\",null,p)),q,e.createElement($,{...w&&!X?{key:`pb-${w}`}:{},rtl:M,theme:R,delay:m,isRunning:o,isIn:A,closeToast:v,hide:y,type:g,style:L,className:C,controlledProgress:X,progress:P||0})))},S=function(e,t){return void 0===t&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}},H=g(S(\"bounce\",!0)),F=g(S(\"slide\",!0)),X=g(S(\"zoom\")),Y=g(S(\"flip\")),q={position:\"bottom-left\",transition:F,rtl:!1,autoClose:3e3,hideProgressBar:!0,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,closeOnClick:!0,newestOnTop:!1,draggable:!0,draggablePercent:80,draggableDirection:\"x\",role:\"alert\",theme:\"light\"};function Q(t){let o={...q,...t};const s=t.stacked,[a,r]=i(!0),c=n(null),{getToastToRender:d,isToastActive:m,count:f}=L(o),{className:g,style:y,rtl:v,containerId:h}=o;function T(e){const t=l(\"Toastify__toast-container\",`Toastify__toast-container--${e}`,{\"Toastify__toast-container--rtl\":v});return u(g)?g({position:e,rtl:v,defaultClassName:t}):l(t,p(g))}function E(){s&&(r(!0),A.play())}return B(()=>{if(s){var e;const t=c.current.querySelectorAll('[data-in=\"true\"]'),n=12,s=null==(e=o.position)?void 0:e.includes(\"top\");let r=0,i=0;Array.from(t).reverse().forEach((e,t)=>{const o=e;o.classList.add(\"Toastify__toast--stacked\"),t>0&&(o.dataset.collapsed=`${a}`),o.dataset.pos||(o.dataset.pos=s?\"top\":\"bot\");const l=r*(a?.2:1)+(a?0:n*t);o.style.setProperty(\"--y\",`${s?l:-1*l}px`),o.style.setProperty(\"--g\",`${n}`),o.style.setProperty(\"--s\",\"\"+(1-(a?i:0))),r+=o.offsetHeight,i+=.025})}},[a,f,s]),e.createElement(\"div\",{ref:c,className:\"Toastify\",id:h,onMouseEnter:()=>{s&&(r(!1),A.pause())},onMouseLeave:E},d((t,n)=>{const o=n.length?{...y}:{...y,pointerEvents:\"none\"};return e.createElement(\"div\",{className:T(t),style:o,key:`container-${t}`},n.map(t=>{let{content:n,props:o}=t;return e.createElement(R,{...o,stacked:s,collapseAll:E,isIn:m(o.toastId,o.containerId),style:o.style,key:`toast-${o.key}`},n)}))}))}export{H as Bounce,Y as Flip,z as Icons,F as Slide,Q as ToastContainer,X as Zoom,f as collapseToast,g as cssTransition,A as toast,N as useToast,L as useToastContainer};\n//# sourceMappingURL=react-toastify.esm.mjs.map\n","import { useState, useEffect, useRef } from 'react';\nimport { toast, ToastItem, Id } from 'react-toastify';\n\ntype Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\n\nexport interface NotificationCenterItem<Data = {}>\n  extends Optional<ToastItem<Data>, 'content' | 'data' | 'status'> {\n  read: boolean;\n  createdAt: number;\n}\n\nexport type SortFn<Data> = (\n  l: NotificationCenterItem<Data>,\n  r: NotificationCenterItem<Data>\n) => number;\n\nexport type FilterFn<Data = {}> = (\n  item: NotificationCenterItem<Data>\n) => boolean;\n\nexport interface UseNotificationCenterParams<Data = {}> {\n  /**\n   * initial data to rehydrate the notification center\n   */\n  data?: NotificationCenterItem<Data>[];\n\n  /**\n   * By default, the notifications are sorted from the newest to the oldest using\n   * the `createdAt` field. Use this to provide your own sort function\n   *\n   * Usage:\n   * ```\n   * // old notifications first\n   * useNotificationCenter({\n   *   sort: ((l, r) => l.createdAt - r.createdAt)\n   * })\n   * ```\n   */\n  sort?: SortFn<Data>;\n\n  /**\n   * Keep the toast that meets the condition specified in the callback function.\n   *\n   * Usage:\n   * ```\n   * // keep only the toasts when hidden is set to false\n   * useNotificationCenter({\n   *   filter: item => item.data.hidden === false\n   * })\n   * ```\n   */\n  filter?: FilterFn<Data>;\n}\n\nexport interface UseNotificationCenter<Data> {\n  /**\n   * Contains all the notifications\n   */\n  notifications: NotificationCenterItem<Data>[];\n\n  /**\n   * Clear all notifications\n   */\n  clear(): void;\n\n  /**\n   * Mark all notification as read\n   */\n  markAllAsRead(): void;\n\n  /**\n   * Mark all notification as read or not.\n   *\n   * Usage:\n   * ```\n   * markAllAsRead(false) // mark all notification as not read\n   *\n   * markAllAsRead(true) // same as calling markAllAsRead()\n   * ```\n   */\n  markAllAsRead(read?: boolean): void;\n\n  /**\n   * Mark one or more notifications as read.\n   *\n   * Usage:\n   * ```\n   * markAsRead(\"anId\")\n   * markAsRead([\"a\",\"list\", \"of\", \"id\"])\n   * ```\n   */\n  markAsRead(id: Id | Id[]): void;\n\n  /**\n   * Mark one or more notifications as read.The second parameter let you mark the notification as read or not.\n   *\n   * Usage:\n   * ```\n   * markAsRead(\"anId\", false)\n   * markAsRead([\"a\",\"list\", \"of\", \"id\"], false)\n   *\n   * markAsRead(\"anId\", true) // same as markAsRead(\"anId\")\n   * ```\n   */\n  markAsRead(id: Id | Id[], read?: boolean): void;\n\n  /**\n   * Remove one or more notifications\n   *\n   * Usage:\n   * ```\n   * remove(\"anId\")\n   * remove([\"a\",\"list\", \"of\", \"id\"])\n   * ```\n   */\n  remove(id: Id | Id[]): void;\n\n  /**\n   * Push a notification to the notification center.\n   * Returns null when an item with the given id already exists\n   *\n   * Usage:\n   * ```\n   * const id = add({id: \"id\", content: \"test\", data: { foo: \"hello\" } })\n   *\n   * // Return the id of the notification, generate one if none provided\n   * const id = add({ data: {title: \"a title\", text: \"some text\"} })\n   * ```\n   */\n  add(item: Partial<NotificationCenterItem<Data>>): Id | null;\n\n  /**\n   * Update the notification that match the id\n   * Returns null when no matching notification found\n   *\n   * Usage:\n   * ```\n   * const id = update(\"anId\",  {content: \"test\", data: { foo: \"hello\" } })\n   *\n   * // It's also possible to update the id\n   * const id = update(\"anId\"m { id:\"anotherOne\", data: {title: \"a title\", text: \"some text\"} })\n   * ```\n   */\n  update(id: Id, item: Partial<NotificationCenterItem<Data>>): Id | null;\n\n  /**\n   * Retrieve one or more notifications\n   *\n   * Usage:\n   * ```\n   * find(\"anId\")\n   * find([\"a\",\"list\", \"of\", \"id\"])\n   * ```\n   */\n  find(id: Id): NotificationCenterItem<Data> | undefined;\n\n  /**\n   * Retrieve one or more notifications\n   *\n   * Usage:\n   * ```\n   * find(\"anId\")\n   * find([\"a\",\"list\", \"of\", \"id\"])\n   * ```\n   */\n  find(id: Id[]): NotificationCenterItem<Data>[] | undefined;\n\n  /**\n   * Retrieve the count for unread notifications\n   */\n  unreadCount: number;\n\n  /**\n   * Sort notifications using the newly provided function\n   *\n   * Usage:\n   * ```\n   * // old notifications first\n   * sort((l, r) => l.createdAt - r.createdAt)\n   * ```\n   */\n  sort(sort: SortFn<Data>): void;\n}\n\nexport function useNotificationCenter<Data = {}>(\n  params: UseNotificationCenterParams<Data> = {}\n): UseNotificationCenter<Data> {\n  const sortFn = useRef(params.sort || defaultSort);\n  const filterFn = useRef(params.filter || null);\n  const [notifications, setNotifications] = useState<\n    NotificationCenterItem<Data>[]\n  >(() => {\n    if (params.data) {\n      return filterFn.current\n        ? params.data.filter(filterFn.current).sort(sortFn.current)\n        : [...params.data].sort(sortFn.current);\n    }\n    return [];\n  });\n\n  useEffect(() => {\n    return toast.onChange(item => {\n      if (item.status === 'added' || item.status === 'updated') {\n        const newItem = decorate(item as NotificationCenterItem<Data>);\n        if (filterFn.current && !filterFn.current(newItem)) return;\n\n        setNotifications(prev => {\n          let nextState: NotificationCenterItem<Data>[] = [];\n          const updateIdx = prev.findIndex(v => v.id === newItem.id);\n\n          if (updateIdx !== -1) {\n            nextState = prev.slice();\n            Object.assign(nextState[updateIdx], newItem, {\n              createdAt: Date.now()\n            });\n          } else if (prev.length === 0) {\n            nextState = [newItem];\n          } else {\n            nextState = [newItem, ...prev];\n          }\n          return nextState.sort(sortFn.current);\n        });\n      }\n    });\n  }, []);\n\n  const remove = (id: Id | Id[]) => {\n    setNotifications(prev =>\n      prev.filter(\n        Array.isArray(id) ? v => !id.includes(v.id) : v => v.id !== id\n      )\n    );\n  };\n\n  const clear = () => {\n    setNotifications([]);\n  };\n\n  const markAllAsRead = (read = true) => {\n    setNotifications(prev =>\n      prev.map(v => {\n        v.read = read;\n        return v;\n      })\n    );\n  };\n\n  const markAsRead = (id: Id | Id[], read = true) => {\n    let map = (v: NotificationCenterItem<Data>) => {\n      if (v.id === id) v.read = read;\n      return v;\n    };\n\n    if (Array.isArray(id)) {\n      map = v => {\n        if (id.includes(v.id)) v.read = read;\n        return v;\n      };\n    }\n\n    setNotifications(prev => prev.map(map));\n  };\n\n  const find = (id: Id | Id[]) => {\n    return Array.isArray(id)\n      ? notifications.filter(v => id.includes(v.id))\n      : notifications.find(v => v.id === id);\n  };\n\n  const add = (item: Partial<NotificationCenterItem<Data>>) => {\n    if (notifications.find(v => v.id === item.id)) return null;\n\n    const newItem = decorate(item);\n\n    setNotifications(prev => [...prev, newItem].sort(sortFn.current));\n\n    return newItem.id;\n  };\n\n  const update = (id: Id, item: Partial<NotificationCenterItem<Data>>) => {\n    const index = notifications.findIndex(v => v.id === id);\n\n    if (index !== -1) {\n      setNotifications(prev => {\n        const nextState = [...prev];\n        Object.assign(nextState[index], item, {\n          createdAt: item.createdAt || Date.now()\n        });\n\n        return nextState.sort(sortFn.current);\n      });\n\n      return item.id as Id;\n    }\n\n    return null;\n  };\n\n  const sort = (compareFn: SortFn<Data>) => {\n    sortFn.current = compareFn;\n    setNotifications(prev => prev.slice().sort(compareFn));\n  };\n\n  return {\n    notifications,\n    clear,\n    markAllAsRead,\n    markAsRead,\n    add,\n    update,\n    remove,\n    // @ts-ignore fixme: overloading issue\n    find,\n    sort,\n    get unreadCount() {\n      return notifications.reduce(\n        (prev, cur) => (!cur.read ? prev + 1 : prev),\n        0\n      );\n    }\n  };\n}\n\nexport function decorate<Data>(\n  item: NotificationCenterItem<Data> | Partial<NotificationCenterItem<Data>>\n) {\n  if (item.id == null) item.id = Date.now().toString(36).substring(2, 9);\n  if (!item.createdAt) item.createdAt = Date.now();\n  if (item.read == null) item.read = false;\n  return item as NotificationCenterItem<Data>;\n}\n\n// newest to oldest\nfunction defaultSort<Data>(\n  l: NotificationCenterItem<Data>,\n  r: NotificationCenterItem<Data>\n) {\n  return r.createdAt - l.createdAt;\n}\n"],"names":["t","useNotificationCenter","params","sortFn","useRef","sort","defaultSort","filterFn","filter","notifications","setNotifications","useState","data","current","useEffect","toast","onChange","item","status","newItem","decorate","prev","nextState","updateIdx","findIndex","v","id","slice","Object","assign","createdAt","Date","now","length","remove","Array","isArray","includes","clear","markAllAsRead","read","map","markAsRead","find","add","update","index","compareFn","unreadCount","reduce","cur","toString","substring","l","r"],"mappings":"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"}