{"version":3,"names":["createSignal","onCleanup","untrack","contains","Timeout","nextToastCounter","generateToastId","Math","random","toString","slice","resolvePromiseOption","option","value","undefined","resolved","title","createToastStore","initial","toastsMirror","toasts","setToasts","ownedWrite","equals","writeList","next","readListRaw","hovering","setHoveringSignal","focused","setFocusedSignal","isWindowFocused","setIsWindowFocusedSignal","prevFocusElement","setPrevFocusElement","viewport","setViewport","timeoutOption","setTimeoutOption","timeout","limitOption","setLimitOption","limit","timers","Map","timersPaused","t","clear","hasDifferingHeights","heights","map","height","filter","h","length","Set","size","getExpanded","getExpandedOrOutOfFocus","shouldStartPaused","scheduleTimer","id","delay","cb","startActive","create","start","delete","set","Date","now","remaining","callback","pauseTimers","elapsed","resumeTimers","handle","setHovering","setFocused","setIsWindowFocused","findIndex","writeToasts","removeToast","opts","index","current","toast","skipOnRemove","onRemove","splice","updateToastInternal","updates","behavior","prev","transitionStatus","prevTimeout","prevType","type","nextToast","markUpdated","updateKey","limited","Object","assign","nextList","defaultTimeout","nextDuration","prevDuration","timeoutUpdated","hasOwn","shouldHaveTimer","hasTimer","has","changed","wasLoading","get","resetTimer","closeToast","addToast","options","currentLimit","existing","find","_ignored","_ts","toastToAdd","withNew","active","excess","oldestActive","limitedIds","duration","updateToast","closeAll","some","toastsToClose","activeIndex","item","isLimited","onClose","vp","ownerDocument","activeElement","restoreFocusToPrevElement","el","focus","preventScroll","promiseToast","loading","handled","then","result","success","catch","error","err","Promise","reject","optionsAsAny","setPromise","isEmpty","handleDocumentPointerDown","event","pointerType","target","expanded"],"sources":["toast-store.ts"],"sourcesContent":["import { type Accessor, createSignal, onCleanup, untrack } from \"solid-js\";\nimport { contains } from \"../internals/dom/contains\";\nimport { Timeout } from \"../internals/use-timeout\";\nimport type {\n\tToastManagerAddOptions,\n\tToastManagerPromiseOptions,\n\tToastManagerUpdateOptions,\n\tToastObject,\n} from \"./use-toast-manager\";\n\n/**\n * Tier-3b port of Base UI React's `ToastStore`\n * (`packages/react/src/toast/store.ts`). The Solid port mirrors the React\n * store's shape but swaps the `ReactStore`/selector plumbing for plain\n * Solid signals. Every external reader (`Toast.Viewport`, `Toast.Root`,\n * `Toast.Close`) subscribes to the signals directly through accessors —\n * there are no selector memos because each reader only cares about one or\n * two slots.\n *\n * Scope differences vs React:\n *\n * - Heights are measured on `Toast.Root` and flow into stack CSS vars.\n * - Pause/resume follows React: when ANY of `hovering` / `focused` is true,\n *   or `isWindowFocused` is false, timers are paused; when all three\n *   release the lock, timers resume from their recorded remaining delay.\n */\n\ntype UpdateBehavior = {\n\tresetTimer?: boolean | undefined;\n\tmarkUpdated?: boolean | undefined;\n};\n\ninterface TimerInfo {\n\ttimeout?: Timeout | undefined;\n\tstart: number;\n\tdelay: number;\n\tremaining: number;\n\tcallback: () => void;\n}\n\n/** The shape that consumers read (via accessors) from the store. */\nexport interface ToastStoreReaders {\n\ttoasts: Accessor<ToastObject<object>[]>;\n\thovering: Accessor<boolean>;\n\tfocused: Accessor<boolean>;\n\texpanded: Accessor<boolean>;\n\tisEmpty: Accessor<boolean>;\n\tprevFocusElement: Accessor<HTMLElement | null>;\n\tviewport: Accessor<HTMLElement | null>;\n\tisWindowFocused: Accessor<boolean>;\n}\n\nexport interface ToastStore extends ToastStoreReaders {\n\treadonly timeout: Accessor<number>;\n\treadonly limit: Accessor<number>;\n\n\taddToast: (options: ToastManagerAddOptions<object>) => string;\n\tupdateToast: (id: string, options: ToastManagerUpdateOptions<object>) => void;\n\tupdateToastInternal: (\n\t\tid: string,\n\t\tupdates: Partial<Omit<ToastObject<object>, \"id\">>,\n\t\tbehavior?: UpdateBehavior,\n\t) => void;\n\tcloseToast: (id?: string) => void;\n\tremoveToast: (id: string, opts?: { skipOnRemove?: boolean }) => void;\n\tpromiseToast: <Value>(\n\t\tvalue: Promise<Value>,\n\t\toptions: ToastManagerPromiseOptions<Value, object>,\n\t) => Promise<Value>;\n\n\tsetHovering: (next: boolean) => void;\n\tsetFocused: (next: boolean) => void;\n\tsetIsWindowFocused: (next: boolean) => void;\n\tsetViewport: (el: HTMLElement | null) => void;\n\tsetPrevFocusElement: (el: HTMLElement | null) => void;\n\trestoreFocusToPrevElement: () => void;\n\n\tpauseTimers: () => void;\n\tresumeTimers: () => void;\n\n\t// Internal — only used by the provider to sync timeout/limit into the\n\t// store from its props. Kept off the public manager surface.\n\tsetTimeoutOption: (next: number) => void;\n\tsetLimitOption: (next: number) => void;\n\n\t/** Touch outside the viewport — collapse expanded state and resume timers. */\n\thandleDocumentPointerDown: (event: PointerEvent) => void;\n}\n\nlet nextToastCounter = 0;\nfunction generateToastId(): string {\n\tnextToastCounter += 1;\n\treturn `toast-${nextToastCounter}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction resolvePromiseOption<Value>(\n\toption:\n\t\t| string\n\t\t| ToastManagerUpdateOptions<object>\n\t\t| ((result: Value) => string | ToastManagerUpdateOptions<object>)\n\t\t| undefined,\n\tvalue?: Value,\n): ToastManagerUpdateOptions<object> {\n\tif (option === undefined) return {};\n\tconst resolved =\n\t\ttypeof option === \"function\"\n\t\t\t? (option as (v: Value) => string | ToastManagerUpdateOptions<object>)(\n\t\t\t\t\tvalue as Value,\n\t\t\t\t)\n\t\t\t: option;\n\tif (typeof resolved === \"string\") return { title: resolved };\n\treturn resolved;\n}\n\nexport interface CreateToastStoreOptions {\n\ttimeout: number;\n\tlimit: number;\n}\n\n/**\n * Factory — owns all store signals + timers for the owning component. The\n * returned object is stable for the scope's lifetime; owner-dispose tears\n * every pending timer down via `onCleanup`.\n *\n * Signals opt into `ownedWrite` because the store's setters are invoked\n * from unowned surfaces (event handlers, timers) but the signals are\n * created inside the provider's owned scope.\n */\nexport function createToastStore(initial: CreateToastStoreOptions): ToastStore {\n\t// Solid 2 signals update readers on the next flush — reads between\n\t// synchronous writes still see the stale value. Our multi-add / close\n\t// paths reshape the list multiple times per call site (e.g. two\n\t// `manager.add()` in the same frame), so we keep a private mutable\n\t// mirror and notify the signal after every mutation.\n\t//\n\t// `createStore` was explored as a replacement (see `spikes/toast-store/`)\n\t// — proxy reads give same-tick visibility natively, but its `<For>`\n\t// reconciliation preserves item proxies across array reassignment,\n\t// which breaks reorder behaviour when an id moves position. The mirror\n\t// stays until we rewrite the add/close paths as fine-grained draft\n\t// mutations (splice/push) rather than whole-array replacements.\n\tlet toastsMirror: ToastObject<object>[] = [];\n\tconst [toasts, setToasts] = createSignal<ToastObject<object>[]>(\n\t\ttoastsMirror,\n\t\t{\n\t\t\townedWrite: true,\n\t\t\t// Identity-based equality: every write produces a fresh array, so\n\t\t\t// the signal must treat \"different array reference\" as a change.\n\t\t\t// Default `isEqual` is a value compare — we shortcut that here.\n\t\t\tequals: false,\n\t\t},\n\t);\n\tconst writeList = (next: ToastObject<object>[]): void => {\n\t\ttoastsMirror = next;\n\t\tsetToasts(next);\n\t};\n\tconst readListRaw = (): ToastObject<object>[] => toastsMirror;\n\tconst [hovering, setHoveringSignal] = createSignal(false, {\n\t\townedWrite: true,\n\t});\n\tconst [focused, setFocusedSignal] = createSignal(false, { ownedWrite: true });\n\tconst [isWindowFocused, setIsWindowFocusedSignal] = createSignal(true, {\n\t\townedWrite: true,\n\t});\n\tconst [prevFocusElement, setPrevFocusElement] =\n\t\tcreateSignal<HTMLElement | null>(null, { ownedWrite: true });\n\tconst [viewport, setViewport] = createSignal<HTMLElement | null>(null, {\n\t\townedWrite: true,\n\t});\n\tconst [timeoutOption, setTimeoutOption] = createSignal(initial.timeout, {\n\t\townedWrite: true,\n\t});\n\tconst [limitOption, setLimitOption] = createSignal(initial.limit, {\n\t\townedWrite: true,\n\t});\n\n\tconst timers = new Map<string, TimerInfo>();\n\tlet timersPaused = false;\n\n\tonCleanup(() => {\n\t\tfor (const [, t] of timers) t.timeout?.clear();\n\t\ttimers.clear();\n\t});\n\n\tconst hasDifferingHeights = (): boolean => {\n\t\tconst heights = readListRaw()\n\t\t\t.map((t) => t.height ?? 0)\n\t\t\t.filter((h) => h > 0);\n\t\treturn heights.length > 0 && new Set(heights).size > 1;\n\t};\n\n\tconst getExpanded = (): boolean =>\n\t\thovering() || focused() || hasDifferingHeights();\n\tconst getExpandedOrOutOfFocus = (): boolean =>\n\t\thovering() || focused() || !isWindowFocused();\n\tconst shouldStartPaused = (): boolean => untrack(getExpandedOrOutOfFocus);\n\n\tconst scheduleTimer = (id: string, delay: number, cb: () => void): void => {\n\t\tconst startActive = !shouldStartPaused();\n\t\tconst t = startActive ? Timeout.create() : undefined;\n\t\tt?.start(delay, () => {\n\t\t\ttimers.delete(id);\n\t\t\tcb();\n\t\t});\n\t\ttimers.set(id, {\n\t\t\ttimeout: t,\n\t\t\tstart: startActive ? Date.now() : 0,\n\t\t\tdelay,\n\t\t\tremaining: delay,\n\t\t\tcallback: cb,\n\t\t});\n\t};\n\n\tconst pauseTimers = (): void => {\n\t\tif (timersPaused) return;\n\t\ttimersPaused = true;\n\t\tfor (const [, t] of timers) {\n\t\t\tif (t.timeout) {\n\t\t\t\tt.timeout.clear();\n\t\t\t\tconst elapsed = Date.now() - t.start;\n\t\t\t\tconst remaining = t.delay - elapsed;\n\t\t\t\tt.remaining = remaining > 0 ? remaining : 0;\n\t\t\t\tt.timeout = undefined;\n\t\t\t}\n\t\t}\n\t};\n\n\tconst resumeTimers = (): void => {\n\t\tif (!timersPaused) return;\n\t\ttimersPaused = false;\n\t\tfor (const [id, t] of timers) {\n\t\t\tconst remaining = t.remaining > 0 ? t.remaining : t.delay;\n\t\t\tconst handle = Timeout.create();\n\t\t\tt.timeout = handle;\n\t\t\tt.start = Date.now();\n\t\t\thandle.start(remaining, () => {\n\t\t\t\ttimers.delete(id);\n\t\t\t\tt.callback();\n\t\t\t});\n\t\t}\n\t};\n\n\tconst setHovering = (next: boolean): void => {\n\t\tsetHoveringSignal(next);\n\t\tif (next) pauseTimers();\n\t\telse if (!untrack(focused) && untrack(isWindowFocused)) resumeTimers();\n\t};\n\n\tconst setFocused = (next: boolean): void => {\n\t\tsetFocusedSignal(next);\n\t\tif (next) pauseTimers();\n\t\telse if (!untrack(hovering) && untrack(isWindowFocused)) resumeTimers();\n\t};\n\n\tconst setIsWindowFocused = (next: boolean): void => {\n\t\tsetIsWindowFocusedSignal(next);\n\t\tif (!next) pauseTimers();\n\t\telse if (!untrack(hovering) && !untrack(focused)) resumeTimers();\n\t};\n\n\tconst findIndex = (id: string): number =>\n\t\treadListRaw().findIndex((t) => t.id === id);\n\n\tconst writeToasts = (next: ToastObject<object>[]): void => {\n\t\twriteList(next);\n\t\tif (next.length === 0) {\n\t\t\tsetHoveringSignal(false);\n\t\t\tsetFocusedSignal(false);\n\t\t}\n\t};\n\n\tconst removeToast = (\n\t\tid: string,\n\t\topts: { skipOnRemove?: boolean } = {},\n\t): void => {\n\t\tconst index = findIndex(id);\n\t\tif (index === -1) return;\n\t\tconst current = readListRaw();\n\t\tconst toast = current[index];\n\t\tif (!opts.skipOnRemove) toast?.onRemove?.();\n\t\tconst next = current.slice();\n\t\tnext.splice(index, 1);\n\t\twriteToasts(next);\n\t};\n\n\tconst updateToastInternal = (\n\t\tid: string,\n\t\tupdates: Partial<Omit<ToastObject<object>, \"id\">>,\n\t\tbehavior: UpdateBehavior = {},\n\t): void => {\n\t\tconst current = readListRaw();\n\t\tconst index = current.findIndex((t) => t.id === id);\n\t\tif (index === -1) return;\n\t\tconst prev = current[index];\n\t\tif (!prev) return;\n\t\tif (prev.transitionStatus === \"ending\") return;\n\n\t\t// Snapshot the fields the timer logic below needs from the PRE-update\n\t\t// toast — we mutate `prev` in place further down, so reading these after\n\t\t// the mutation would see the new values.\n\t\tconst prevTimeout = prev.timeout;\n\t\tconst prevType = prev.type;\n\n\t\tconst nextToast = {\n\t\t\t...prev,\n\t\t\t...updates,\n\t\t\tid: prev.id,\n\t\t\t...(behavior.markUpdated ? { updateKey: (prev.updateKey ?? 0) + 1 } : {}),\n\t\t} satisfies ToastObject<object>;\n\n\t\t// Skip no-op internal writes so ResizeObserver ↔ store ↔ style does not\n\t\t// spin when only `height` / `transitionStatus` are unchanged.\n\t\tif (\n\t\t\t!behavior.markUpdated &&\n\t\t\t(nextToast.height ?? 0) === (prev.height ?? 0) &&\n\t\t\tnextToast.transitionStatus === prev.transitionStatus &&\n\t\t\tnextToast.limited === prev.limited &&\n\t\t\tnextToast.type === prev.type &&\n\t\t\tnextToast.timeout === prev.timeout\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Mutate the EXISTING toast object in place rather than swapping in a\n\t\t// fresh `{ ...prev, ...updates }` reference. Consumers render the queue\n\t\t// with a keyed `<For each={toasts()}>`, which keys rows by item\n\t\t// IDENTITY — replacing the object reference makes `<For>` drop and\n\t\t// rebuild the row, re-firing `Toast.Root`'s mount `ref` →\n\t\t// `recalculateHeight()` → another internal write → another rebuild. In\n\t\t// happy-dom the no-op guard above collapses that after one pass (height\n\t\t// is constant `0`), but in a real browser sub-pixel height jitter keeps\n\t\t// each measurement different, so the rebuild/measure cycle spins at\n\t\t// 100% CPU. Preserving identity keeps the row mounted; the `toast` memo\n\t\t// in `ToastRoot` (created with `equals: false`) still re-notifies style\n\t\t// readers off the queue signal. Add / close / reorder still allocate\n\t\t// new references where a genuine identity change is intended.\n\t\tObject.assign(prev, updates, { id: prev.id });\n\t\tif (behavior.markUpdated) {\n\t\t\tprev.updateKey = (prev.updateKey ?? 0) + 1;\n\t\t}\n\t\tconst nextList = current.slice();\n\t\twriteToasts(nextList);\n\n\t\tconst defaultTimeout = untrack(timeoutOption);\n\t\tconst nextDuration = nextToast.timeout ?? defaultTimeout;\n\t\tconst prevDuration = prevTimeout ?? defaultTimeout;\n\n\t\tconst timeoutUpdated = Object.hasOwn(updates, \"timeout\");\n\t\tconst shouldHaveTimer =\n\t\t\tnextToast.transitionStatus !== \"ending\" &&\n\t\t\tnextToast.type !== \"loading\" &&\n\t\t\tnextDuration > 0;\n\t\tconst hasTimer = timers.has(id);\n\t\tconst changed = prevDuration !== nextDuration;\n\t\tconst wasLoading = prevType === \"loading\";\n\n\t\tif (!shouldHaveTimer && hasTimer) {\n\t\t\ttimers.get(id)?.timeout?.clear();\n\t\t\ttimers.delete(id);\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tshouldHaveTimer &&\n\t\t\t(!hasTimer ||\n\t\t\t\tchanged ||\n\t\t\t\ttimeoutUpdated ||\n\t\t\t\twasLoading ||\n\t\t\t\tbehavior.resetTimer)\n\t\t) {\n\t\t\ttimers.get(id)?.timeout?.clear();\n\t\t\ttimers.delete(id);\n\t\t\tscheduleTimer(id, nextDuration, () => closeToast(id));\n\t\t\tif (untrack(getExpandedOrOutOfFocus)) pauseTimers();\n\t\t}\n\t};\n\n\tconst addToast = (options: ToastManagerAddOptions<object>): string => {\n\t\tconst defaultTimeout = untrack(timeoutOption);\n\t\tconst currentLimit = untrack(limitOption);\n\t\tconst id = options.id ?? generateToastId();\n\t\tconst current = readListRaw();\n\n\t\tif (options.id) {\n\t\t\tconst existing = current.find((t) => t.id === options.id);\n\t\t\tif (existing) {\n\t\t\t\tif (existing.transitionStatus === \"ending\") {\n\t\t\t\t\tremoveToast(options.id, { skipOnRemove: true });\n\t\t\t\t} else {\n\t\t\t\t\tconst { id: _ignored, transitionStatus: _ts, ...updates } = options;\n\t\t\t\t\tupdateToastInternal(options.id, updates, {\n\t\t\t\t\t\tresetTimer: true,\n\t\t\t\t\t\tmarkUpdated: true,\n\t\t\t\t\t});\n\t\t\t\t\treturn options.id;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst toastToAdd: ToastObject<object> = {\n\t\t\t...options,\n\t\t\tid,\n\t\t\tupdateKey: 0,\n\t\t\ttransitionStatus: \"starting\",\n\t\t};\n\n\t\tconst withNew = [toastToAdd, ...readListRaw()];\n\t\tconst active = withNew.filter((t) => t.transitionStatus !== \"ending\");\n\n\t\tlet nextList: ToastObject<object>[];\n\t\tif (active.length > currentLimit) {\n\t\t\tconst excess = active.length - currentLimit;\n\t\t\tconst oldestActive = active.slice(-excess);\n\t\t\tconst limitedIds = new Set(oldestActive.map((t) => t.id));\n\t\t\tnextList = withNew.map((t) => {\n\t\t\t\tconst limited = limitedIds.has(t.id);\n\t\t\t\treturn t.limited === limited ? t : { ...t, limited };\n\t\t\t});\n\t\t} else {\n\t\t\tnextList = withNew.map((t) => (t.limited ? { ...t, limited: false } : t));\n\t\t}\n\t\twriteToasts(nextList);\n\n\t\tconst duration = toastToAdd.timeout ?? defaultTimeout;\n\t\tif (toastToAdd.type !== \"loading\" && duration > 0) {\n\t\t\tscheduleTimer(id, duration, () => closeToast(id));\n\t\t}\n\t\tif (untrack(getExpandedOrOutOfFocus)) pauseTimers();\n\n\t\treturn id;\n\t};\n\n\tconst updateToast = (\n\t\tid: string,\n\t\tupdates: ToastManagerUpdateOptions<object>,\n\t): void => {\n\t\tupdateToastInternal(id, updates, { markUpdated: true });\n\t};\n\n\tconst closeToast = (id?: string): void => {\n\t\tconst closeAll = id === undefined;\n\t\tconst current = readListRaw();\n\t\tif (!closeAll && !current.some((t) => t.id === id)) return;\n\n\t\tlet toastsToClose: ToastObject<object>[];\n\t\tif (closeAll) {\n\t\t\ttoastsToClose = current;\n\t\t\tfor (const [, t] of timers) t.timeout?.clear();\n\t\t\ttimers.clear();\n\t\t} else {\n\t\t\ttoastsToClose = current.filter((t) => t.id === id);\n\t\t\tconst t = timers.get(id);\n\t\t\tif (t) {\n\t\t\t\tt.timeout?.clear();\n\t\t\t\ttimers.delete(id);\n\t\t\t}\n\t\t}\n\n\t\tconst currentLimit = untrack(limitOption);\n\t\tlet activeIndex = 0;\n\t\tconst nextList = current.map((item) => {\n\t\t\tif (closeAll || item.id === id) {\n\t\t\t\treturn { ...item, transitionStatus: \"ending\" as const, height: 0 };\n\t\t\t}\n\t\t\tif (item.transitionStatus === \"ending\") return item;\n\t\t\tconst isLimited = activeIndex >= currentLimit;\n\t\t\tactiveIndex += 1;\n\t\t\treturn item.limited === isLimited\n\t\t\t\t? item\n\t\t\t\t: { ...item, limited: isLimited };\n\t\t});\n\n\t\twriteList(nextList);\n\t\tif (closeAll || current.length === 1) {\n\t\t\tsetHoveringSignal(false);\n\t\t\tsetFocusedSignal(false);\n\t\t}\n\n\t\tfor (const toast of toastsToClose) {\n\t\t\tif (toast.transitionStatus !== \"ending\") toast.onClose?.();\n\t\t}\n\n\t\t// Focus recovery — delegate to the provider's current viewport +\n\t\t// prevFocusElement. We keep the check simple: if active element is\n\t\t// inside the viewport, refocus the previous element. No next-toast\n\t\t// focus traversal (tier-3b simplification).\n\t\tconst vp = untrack(viewport);\n\t\tif (vp?.contains(vp.ownerDocument.activeElement)) {\n\t\t\trestoreFocusToPrevElement();\n\t\t}\n\t};\n\n\tconst restoreFocusToPrevElement = (): void => {\n\t\tconst el = untrack(prevFocusElement);\n\t\ttry {\n\t\t\tel?.focus({ preventScroll: true });\n\t\t} catch {\n\t\t\t// happy-dom can throw on .focus() for detached nodes — swallow.\n\t\t}\n\t};\n\n\tconst promiseToast = <Value>(\n\t\tvalue: Promise<Value>,\n\t\toptions: ToastManagerPromiseOptions<Value, object>,\n\t): Promise<Value> => {\n\t\tconst loading = resolvePromiseOption(options.loading);\n\t\tconst id = addToast({ ...loading, type: \"loading\" });\n\n\t\tconst handled = value\n\t\t\t.then((result) => {\n\t\t\t\tconst success = resolvePromiseOption(options.success, result);\n\t\t\t\tupdateToast(id, {\n\t\t\t\t\t...success,\n\t\t\t\t\ttype: \"success\",\n\t\t\t\t\ttimeout: success.timeout,\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tconst err = resolvePromiseOption(options.error, error as Value);\n\t\t\t\tupdateToast(id, { ...err, type: \"error\", timeout: err.timeout });\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\n\t\tconst optionsAsAny =\n\t\t\t\"setPromise\" in options\n\t\t\t\t? options\n\t\t\t\t: ({ setPromise: undefined } satisfies { setPromise?: unknown });\n\t\tif (\n\t\t\tObject.hasOwn(optionsAsAny, \"setPromise\") &&\n\t\t\ttypeof optionsAsAny.setPromise === \"function\"\n\t\t) {\n\t\t\t(optionsAsAny.setPromise as (p: Promise<Value>) => void)(handled);\n\t\t}\n\t\treturn handled;\n\t};\n\n\tconst isEmpty = (): boolean => toasts().length === 0;\n\n\tconst handleDocumentPointerDown = (event: PointerEvent): void => {\n\t\tif (event.pointerType !== \"touch\") return;\n\t\tconst vp = untrack(viewport);\n\t\tif (!vp) return;\n\t\tconst target = event.target as Element | null;\n\t\tif (contains(vp, target)) return;\n\t\tsetHovering(false);\n\t\tsetFocused(false);\n\t};\n\n\treturn {\n\t\ttoasts,\n\t\thovering,\n\t\tfocused,\n\t\texpanded: getExpanded,\n\t\tisEmpty,\n\t\tprevFocusElement,\n\t\tviewport,\n\t\tisWindowFocused,\n\t\ttimeout: timeoutOption,\n\t\tlimit: limitOption,\n\t\taddToast,\n\t\tupdateToast,\n\t\tupdateToastInternal,\n\t\tcloseToast,\n\t\tremoveToast,\n\t\tpromiseToast,\n\t\tsetHovering,\n\t\tsetFocused,\n\t\tsetIsWindowFocused,\n\t\tsetViewport,\n\t\tsetPrevFocusElement,\n\t\trestoreFocusToPrevElement,\n\t\tpauseTimers,\n\t\tresumeTimers,\n\t\tsetTimeoutOption,\n\t\tsetLimitOption,\n\t\thandleDocumentPointerDown,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}