{"version":3,"names":["useToastProviderContext","useToastManager","store","toasts","add","addToast","close","closeToast","update","updateToast","promise","promiseToast"],"sources":["use-toast-manager.ts"],"sourcesContent":["import type { JSX } from \"@solidjs/web\";\nimport type { Accessor } from \"solid-js\";\nimport { useToastProviderContext } from \"./provider/toast-provider-context\";\n\n/**\n * Shape of a single toast instance in the queue. Mirrors Base UI React's\n * `ToastObject<Data>` with Solid-flavored `JSX.Element` replacing React's\n * `ReactNode`.\n */\nexport interface ToastObject<Data extends object> {\n\tid: string;\n\ttitle?: JSX.Element | string | undefined;\n\tdescription?: JSX.Element | string | undefined;\n\ttype?: string | undefined;\n\ttimeout?: number | undefined;\n\tpriority?: \"low\" | \"high\" | undefined;\n\ttransitionStatus?: \"starting\" | \"ending\" | undefined;\n\tupdateKey?: number | undefined;\n\tlimited?: boolean | undefined;\n\theight?: number | undefined;\n\tonClose?: (() => void) | undefined;\n\tonRemove?: (() => void) | undefined;\n\tactionProps?:\n\t\t| (JSX.IntrinsicElements[\"button\"] & { children?: JSX.Element })\n\t\t| undefined;\n\tdata?: Data | undefined;\n}\n\nexport interface ToastManagerAddOptions<Data extends object>\n\textends Omit<ToastObject<Data>, \"id\" | \"height\" | \"limited\" | \"updateKey\"> {\n\tid?: string | undefined;\n}\n\nexport interface ToastManagerUpdateOptions<Data extends object>\n\textends Partial<\n\t\tOmit<\n\t\t\tToastObject<Data>,\n\t\t\t\"id\" | \"height\" | \"transitionStatus\" | \"limited\" | \"updateKey\"\n\t\t>\n\t> {}\n\nexport interface ToastManagerPromiseOptions<Value, Data extends object> {\n\tloading: string | ToastManagerUpdateOptions<Data>;\n\tsuccess:\n\t\t| string\n\t\t| ToastManagerUpdateOptions<Data>\n\t\t| ((result: Value) => string | ToastManagerUpdateOptions<Data>);\n\terror:\n\t\t| string\n\t\t| ToastManagerUpdateOptions<Data>\n\t\t| ((error: unknown) => string | ToastManagerUpdateOptions<Data>);\n}\n\nexport interface UseToastManagerReturnValue<Data extends object = object> {\n\t/**\n\t * Reactive accessor for the current toast list. Readers that need the\n\t * latest queue should call `toasts()` inside a reactive scope.\n\t */\n\ttoasts: Accessor<ToastObject<Data>[]>;\n\tadd: (options: ToastManagerAddOptions<Data>) => string;\n\tclose: (id?: string) => void;\n\tupdate: (id: string, options: ToastManagerUpdateOptions<Data>) => void;\n\tpromise: <Value>(\n\t\tvalue: Promise<Value>,\n\t\toptions: ToastManagerPromiseOptions<Value, Data>,\n\t) => Promise<Value>;\n}\n\n/**\n * Hook: returns the ambient `<Toast.Provider>`'s queue + mutators.\n *\n * Port notes:\n *\n *  - React's `useMemo` wrapping is unnecessary — the underlying store is a\n *    stable object and its mutator functions are stable for the provider's\n *    lifetime.\n *  - `toasts` is an accessor (not a plain array snapshot) so callers stay\n *    reactive across add/close/update.\n */\nexport function useToastManager<\n\tData extends object = object,\n>(): UseToastManagerReturnValue<Data> {\n\tconst store = useToastProviderContext();\n\treturn {\n\t\ttoasts: store.toasts as Accessor<ToastObject<Data>[]>,\n\t\tadd: store.addToast as UseToastManagerReturnValue<Data>[\"add\"],\n\t\tclose: store.closeToast,\n\t\tupdate: store.updateToast as UseToastManagerReturnValue<Data>[\"update\"],\n\t\tpromise: store.promiseToast as UseToastManagerReturnValue<Data>[\"promise\"],\n\t};\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,mCAAmC;;AAE3E;AACA;AACA;AACA;AACA;;AA4DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAA,EAEO;EACrC,MAAMC,KAAK,GAAGF,uBAAuB,CAAC,CAAC;EACvC,OAAO;IACNG,MAAM,EAAED,KAAK,CAACC,MAAuC;IACrDC,GAAG,EAAEF,KAAK,CAACG,QAAmD;IAC9DC,KAAK,EAAEJ,KAAK,CAACK,UAAU;IACvBC,MAAM,EAAEN,KAAK,CAACO,WAAyD;IACvEC,OAAO,EAAER,KAAK,CAACS;EAChB,CAAC;AACF","ignoreList":[]}