{
  "version": 3,
  "sources": ["../../../../src/lib/ui/context/toasts.tsx"],
  "sourcesContent": ["import { ToastProvider } from '@radix-ui/react-toast'\nimport { Atom, Editor, uniqueId, useAtom } from '@tldraw/editor'\nimport { ReactNode, createContext, useContext, useMemo } from 'react'\nimport { TLUiIconType } from '../icon-types'\n\n/** @public */\nexport type AlertSeverity = 'success' | 'info' | 'warning' | 'error'\n\n/** @public */\nexport interface TLUiToast {\n\tid: string\n\ticon?: TLUiIconType\n\tseverity?: AlertSeverity\n\ttitle?: string\n\tdescription?: string\n\tactions?: TLUiToastAction[]\n\tkeepOpen?: boolean\n\tcloseLabel?: string\n}\n\n/** @public */\nexport interface TLUiToastAction {\n\ttype: 'primary' | 'danger' | 'normal'\n\tlabel: string\n\tonClick(): void\n}\n\n/** @public */\nexport interface TLUiToastsContextType {\n\taddToast(toast: Omit<TLUiToast, 'id'> & { id?: string }): string\n\tremoveToast(id: TLUiToast['id']): string\n\tclearToasts(): void\n\ttoasts: Atom<TLUiToast[]>\n}\n\n/** @internal */\nexport const ToastsContext = createContext<TLUiToastsContextType | null>(null)\n\n/** @public */\nexport interface TLUiToastsProviderProps {\n\toverrides?(editor: Editor): TLUiToastsContextType\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiToastsProvider({ children }: TLUiToastsProviderProps) {\n\tconst toasts = useAtom<TLUiToast[]>('toasts', [])\n\n\tconst current = useMemo(() => {\n\t\treturn {\n\t\t\ttoasts,\n\t\t\taddToast(toast: Omit<TLUiToast, 'id'> & { id?: string }) {\n\t\t\t\tconst id = toast.id ?? uniqueId()\n\t\t\t\ttoasts.update((d) => [...d.filter((m) => m.id !== toast.id), { ...toast, id }])\n\t\t\t\treturn id\n\t\t\t},\n\t\t\tremoveToast(id: string) {\n\t\t\t\ttoasts.update((d) => d.filter((m) => m.id !== id))\n\t\t\t\treturn id\n\t\t\t},\n\t\t\tclearToasts() {\n\t\t\t\ttoasts.set([])\n\t\t\t},\n\t\t}\n\t}, [toasts])\n\n\treturn (\n\t\t<ToastProvider>\n\t\t\t<ToastsContext.Provider value={current}>{children}</ToastsContext.Provider>\n\t\t</ToastProvider>\n\t)\n}\n\n/** @public */\nexport function useToasts() {\n\tconst ctx = useContext(ToastsContext)\n\n\tif (!ctx) {\n\t\tthrow new Error('useToasts must be used within a ToastsProvider')\n\t}\n\n\treturn ctx\n}\n"],
  "mappings": "AAoEG;AApEH,SAAS,qBAAqB;AAC9B,SAAuB,UAAU,eAAe;AAChD,SAAoB,eAAe,YAAY,eAAe;AAkCvD,MAAM,gBAAgB,cAA4C,IAAI;AAStE,SAAS,uBAAuB,EAAE,SAAS,GAA4B;AAC7E,QAAM,SAAS,QAAqB,UAAU,CAAC,CAAC;AAEhD,QAAM,UAAU,QAAQ,MAAM;AAC7B,WAAO;AAAA,MACN;AAAA,MACA,SAAS,OAAgD;AACxD,cAAM,KAAK,MAAM,MAAM,SAAS;AAChC,eAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC;AAC9E,eAAO;AAAA,MACR;AAAA,MACA,YAAY,IAAY;AACvB,eAAO,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACjD,eAAO;AAAA,MACR;AAAA,MACA,cAAc;AACb,eAAO,IAAI,CAAC,CAAC;AAAA,MACd;AAAA,IACD;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,SACC,oBAAC,iBACA,8BAAC,cAAc,UAAd,EAAuB,OAAO,SAAU,UAAS,GACnD;AAEF;AAGO,SAAS,YAAY;AAC3B,QAAM,MAAM,WAAW,aAAa;AAEpC,MAAI,CAAC,KAAK;AACT,UAAM,IAAI,MAAM,gDAAgD;AAAA,EACjE;AAEA,SAAO;AACR;",
  "names": []
}
