{"version":3,"file":"index.mjs","names":["Dispatch","SetStateAction","parseError","ToastOptions","Message","ToastsManager","setToasts","idx","timeoutIds","Map","addDispatcher","setState","removeToast","id","timeoutId","get","clearTimeout","delete","oldToasts","filter","otherId","addToast","content","options","expiration","color","canClose","withLoader","toString","has","Error","newToast","set","setTimeout","notifyError","err","errorMessage","manager","bind","useState","Snack","Message","manager","Toasts","$","_c","t0","Symbol","for","toasts","setToasts","addDispatcher","t1","map","_temp","t2","props","id","removeToast"],"sources":["../../../src/components/toast/toastsManager.ts","../../../src/components/toast/Toasts.tsx"],"sourcesContent":["import { Dispatch, SetStateAction } from \"react\";\nimport { parseError } from \"../../lib\";\nimport { ToastOptions, Message } from \"./types\";\n\nclass ToastsManager {\n  protected setToasts: Dispatch<SetStateAction<Message[]>> | null = null;\n  protected idx = 1;\n  protected timeoutIds = new Map<string, any>();\n\n  addDispatcher(setState: Dispatch<SetStateAction<Message[]>>) {\n    this.setToasts = setState;\n  }\n\n  removeToast(id: string) {\n    if (!this.setToasts) {\n      return;\n    }\n\n    const timeoutId = this.timeoutIds.get(id);\n    if (!timeoutId) {\n      return;\n    }\n    clearTimeout(timeoutId);\n    this.timeoutIds.delete(id);\n\n    return this.setToasts((oldToasts) => {\n      return oldToasts.filter(({ id: otherId }) => id !== otherId);\n    });\n  }\n\n  addToast(content: string, options: ToastOptions = {}) {\n    if (!this.setToasts) {\n      return;\n    }\n    const { expiration = 5000, color = \"yellow\", canClose = true, withLoader = false } = options;\n\n    const id = (this.idx++).toString();\n    if (this.timeoutIds.has(id)) {\n      throw new Error(\"toast already exists\");\n    }\n\n    this.setToasts((oldToasts) => {\n      const newToast: Message = {\n        id,\n        content,\n        expiration,\n        color,\n        canClose,\n        withLoader,\n      };\n\n      return [newToast, ...oldToasts];\n    });\n\n    this.timeoutIds.set(\n      id,\n      expiration === -1 ? -1 : setTimeout(() => this.removeToast(id), expiration),\n    );\n\n    return id;\n  }\n\n  notifyError(err: unknown) {\n    const errorMessage = parseError(err);\n    if (errorMessage) {\n      addToast(...errorMessage);\n    } else {\n      throw err;\n    }\n  }\n}\n\nconst manager = new ToastsManager();\n\nconst addToast = manager.addToast.bind(manager);\nconst removeToast = manager.removeToast.bind(manager);\nconst notifyError = manager.notifyError.bind(manager);\n\nexport { manager, addToast, removeToast, notifyError };\n","import { useState } from \"react\";\nimport { Snack } from \"../snack\";\nimport { Message } from \"./types\";\n\nimport { manager } from \"./toastsManager\";\n\nexport function Toasts() {\n  const [toasts, setToasts] = useState<Message[]>([]);\n  manager.addDispatcher(setToasts);\n\n  return (\n    <div className=\"z-toast pointer-events-none fixed bottom-0 left-0 right-0\">\n      <div className=\"mx-4 mb-4 flex flex-col items-center gap-4\">\n        {toasts.map((props) => (\n          <Snack key={props.id} {...props} onRemove={() => manager.removeToast(props.id)} />\n        ))}\n      </div>\n    </div>\n  );\n}\n"],"mappings":";;;;;;;AAIA,IAAMK,gBAAN,MAAoB;CAClB,YAAkE;CAClE,MAAgB;CAChB,6BAAuB,IAAII,IAAiB;CAE5CC,cAAcC,UAA+C;EAC3D,KAAKL,YAAYK;CACnB;CAEAC,YAAYC,IAAY;EACtB,IAAI,CAAC,KAAKP,WACR;EAGF,MAAMQ,YAAY,KAAKN,WAAWO,IAAIF,EAAE;EACxC,IAAI,CAACC,WACH;EAEFE,aAAaF,SAAS;EACtB,KAAKN,WAAWS,OAAOJ,EAAE;EAEzB,OAAO,KAAKP,WAAWY,cAAc;GACnC,OAAOA,UAAUC,QAAQ,EAAEN,IAAIO,cAAcP,OAAOO,OAAO;EAC7D,CAAC;CACH;CAEAC,SAASC,SAAiBC,UAAwB,CAAC,GAAG;EACpD,IAAI,CAAC,KAAKjB,WACR;EAEF,MAAM,EAAEkB,aAAa,KAAMC,QAAQ,UAAUC,WAAW,MAAMC,aAAa,UAAUJ;EAErF,MAAMV,MAAM,KAAKN,MAAAA,CAAOqB,SAAS;EACjC,IAAI,KAAKpB,WAAWqB,IAAIhB,EAAE,GACxB,MAAM,IAAIiB,MAAM,sBAAsB;EAGxC,KAAKxB,WAAWY,cAAc;GAU5B,OAAO,CAACa;IARNlB;IACAS;IACAE;IACAC;IACAC;IACAC;GAGMI,GAAU,GAAGb,SAAS;EAChC,CAAC;EAED,KAAKV,WAAWwB,IACdnB,IACAW,eAAe,KAAK,KAAKS,iBAAiB,KAAKrB,YAAYC,EAAE,GAAGW,UAAU,CAC5E;EAEA,OAAOX;CACT;CAEAqB,YAAYC,KAAc;EACxB,MAAMC,eAAelC,WAAWiC,GAAG;EACnC,IAAIC,cACFf,SAAS,GAAGe,YAAY;OAExB,MAAMD;CAEV;AACF;AAEA,MAAME,UAAU,IAAIhC,cAAc;AAElC,MAAMgB,WAAWgB,QAAQhB,SAASiB,KAAKD,OAAO;AAC9C,MAAMzB,cAAcyB,QAAQzB,YAAY0B,KAAKD,OAAO;AACpD,MAAMH,cAAcG,QAAQH,YAAYI,KAAKD,OAAO;;;ACtEpD,SAAOM,SAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAC2CF,KAAA,CAAA;EAAEF,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAlD,MAAA,CAAAK,QAAAC,aAA4BX,SAAoBO,EAAE;CAClDJ,QAAOS,cAAeD,SAAS;CAAC,IAAAE;CAAA,IAAAR,EAAA,OAAAK,QAAA;EAKzBG,KAAAH,OAAMI,IAAKC,KAEX;EAACV,EAAA,KAAAK;EAAAL,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAQ,IAAA;EAJNG,KAAA,oBAAA,OAAA;GAAe,WAAA;GACb,UAAA,oBAAA,OAAA;IAAe,WAAA;IACZH,UAAAA;GAGG,CAAA;EACF,CAAA;EAAAR,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OANNW;AAMM;AAXH,SAAAD,MAAAE,OAAA;CAAA,OAQG,oBAAC,OAAD;EAAoB,GAAMA;EAAiB,gBAAMd,QAAOgB,YAAaF,MAAKC,EAAG;CAAC,GAAlED,MAAKC,EAA6D;AAAI"}