toastory 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/angular.cjs +1 -1
  2. package/dist/angular.cjs.map +1 -1
  3. package/dist/angular.d.cts +4 -4
  4. package/dist/angular.d.ts +4 -4
  5. package/dist/angular.js +1 -1
  6. package/dist/angular.js.map +1 -1
  7. package/dist/core.cjs +1 -1
  8. package/dist/core.cjs.map +1 -1
  9. package/dist/core.d.cts +4 -4
  10. package/dist/core.d.ts +4 -4
  11. package/dist/core.js +1 -1
  12. package/dist/core.js.map +1 -1
  13. package/dist/{dialog-mUI__8O3.d.cts → dialog-62ek3rvB.d.cts} +1 -1
  14. package/dist/{dialog-D-y37Xl5.d.ts → dialog-BY2QbodG.d.ts} +1 -1
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +5 -5
  18. package/dist/index.d.ts +5 -5
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/native.cjs +1 -1
  22. package/dist/native.cjs.map +1 -1
  23. package/dist/native.d.cts +1 -1
  24. package/dist/native.d.ts +1 -1
  25. package/dist/native.js +1 -1
  26. package/dist/native.js.map +1 -1
  27. package/dist/react.cjs +1 -1
  28. package/dist/react.cjs.map +1 -1
  29. package/dist/react.d.cts +5 -5
  30. package/dist/react.d.ts +5 -5
  31. package/dist/react.js +1 -1
  32. package/dist/react.js.map +1 -1
  33. package/dist/{sound-DLXnQDzO.d.cts → sound-C-65UUpk.d.cts} +1 -1
  34. package/dist/{sound-UiOhOgA9.d.ts → sound-D8EZ-TVL.d.ts} +1 -1
  35. package/dist/svelte.cjs +1 -1
  36. package/dist/svelte.cjs.map +1 -1
  37. package/dist/svelte.d.cts +3 -3
  38. package/dist/svelte.d.ts +3 -3
  39. package/dist/svelte.js +1 -1
  40. package/dist/svelte.js.map +1 -1
  41. package/dist/themes/_base.css +1 -1
  42. package/dist/themes/_base.toast.css +1 -1
  43. package/dist/themes/all.css +1 -1
  44. package/dist/themes/aurora.css +1 -1
  45. package/dist/themes/aurora.toast.css +1 -1
  46. package/dist/themes/basic.css +1 -1
  47. package/dist/themes/basic.toast.css +1 -1
  48. package/dist/themes/brutal.css +1 -1
  49. package/dist/themes/brutal.toast.css +1 -1
  50. package/dist/themes/classic-bar.css +1 -1
  51. package/dist/themes/classic-bar.toast.css +1 -1
  52. package/dist/themes/classic-stack.css +1 -1
  53. package/dist/themes/classic-stack.toast.css +1 -1
  54. package/dist/themes/dialogs.css +1 -1
  55. package/dist/themes/dialogs.toast.css +1 -1
  56. package/dist/themes/essentials.css +1 -1
  57. package/dist/themes/essentials.toast.css +1 -1
  58. package/dist/themes/flat.css +1 -1
  59. package/dist/themes/flat.toast.css +1 -1
  60. package/dist/themes/gradient-strip.css +1 -1
  61. package/dist/themes/gradient-strip.toast.css +1 -1
  62. package/dist/themes/gradient.css +1 -1
  63. package/dist/themes/gradient.toast.css +1 -1
  64. package/dist/themes/ios-glass.css +1 -1
  65. package/dist/themes/ios-glass.toast.css +1 -1
  66. package/dist/themes/liquid-glass.css +1 -1
  67. package/dist/themes/liquid-glass.toast.css +1 -1
  68. package/dist/themes/material.css +1 -1
  69. package/dist/themes/material.toast.css +1 -1
  70. package/dist/themes/minimal.css +1 -1
  71. package/dist/themes/minimal.toast.css +1 -1
  72. package/dist/themes/neon.css +1 -1
  73. package/dist/themes/neon.toast.css +1 -1
  74. package/dist/themes/outline.css +1 -1
  75. package/dist/themes/outline.toast.css +1 -1
  76. package/dist/themes/pastel.css +1 -1
  77. package/dist/themes/pastel.toast.css +1 -1
  78. package/dist/themes/pill.css +1 -1
  79. package/dist/themes/pill.toast.css +1 -1
  80. package/dist/themes/ripple.css +1 -1
  81. package/dist/themes/ripple.toast.css +1 -1
  82. package/dist/themes/showcase.css +1 -1
  83. package/dist/themes/showcase.toast.css +1 -1
  84. package/dist/themes/sweet.css +1 -1
  85. package/dist/themes/sweet.toast.css +1 -1
  86. package/dist/{toast-api-C5nqvDgA.d.cts → toast-api-C1QdlvIi.d.cts} +12 -3
  87. package/dist/{toast-api-C5nqvDgA.d.ts → toast-api-C1QdlvIi.d.ts} +12 -3
  88. package/dist/{ui-D1WECTSn.d.cts → ui-CrP_26Th.d.cts} +2 -2
  89. package/dist/{ui-C1Zh-Kff.d.ts → ui-D3egn1gT.d.ts} +2 -2
  90. package/dist/vue.cjs +1 -1
  91. package/dist/vue.cjs.map +1 -1
  92. package/dist/vue.d.cts +5 -5
  93. package/dist/vue.d.ts +5 -5
  94. package/dist/vue.js +1 -1
  95. package/dist/vue.js.map +1 -1
  96. package/package.json +1 -1
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/clock.ts","../src/core/ids.ts","../src/core/config.ts","../src/core/timer.ts","../src/core/types-registry.ts","../src/core/toast-manager.ts","../src/core/store.ts","../src/core/a11y-rules.ts","../src/core/promise.ts","../src/core/dialog.ts","../src/core/dialog-manager.ts","../src/core/toast-api.ts","../src/core/spring.ts","../src/core/index.ts"],"names":["last","counter","ui"],"mappings":"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","file":"core.js","sourcesContent":["/**\n * Injectable clock and scheduler interface.\n * Abstracts time and timers so tests and headless engines can run deterministically.\n */\nexport interface Clock {\n /** Returns the current timestamp in milliseconds. */\n now(): number;\n /**\n * Schedules a callback after `ms` milliseconds.\n * @returns A cancellation function.\n */\n setTimeout(fn: () => void, ms: number): () => void;\n /**\n * Schedules a recurring callback every `ms` milliseconds.\n * @returns A cancellation function.\n */\n setInterval(fn: () => void, ms: number): () => void;\n}\n\n/** Default system clock using standard global timer functions. */\nexport const defaultClock: Clock = {\n now: () => Date.now(),\n setTimeout: (fn, ms) => {\n const t = setTimeout(fn, ms);\n return () => clearTimeout(t);\n },\n setInterval: (fn, ms) => {\n const t = setInterval(fn, ms);\n return () => clearInterval(t);\n },\n};\n","import type { ToastId } from './types';\n\nlet counter = 0;\n\n/**\n * Returns a collision-safe, incremental unique identifier.\n * @param prefix Optional prefix for the id (default: 'gk').\n */\nexport function nextId(p = 'gk'): string {\n return `${p}-${++counter}`;\n}\n\n/**\n * Normalizes an optional user-provided id, generating an incremental id if omitted.\n * @param id User-supplied id or undefined.\n * @param prefix Prefix used when generating an id.\n */\nexport function normalizeId(id: ToastId | undefined, p = 'gk'): ToastId {\n return id !== undefined && id !== '' ? id : nextId(p);\n}\n\n/**\n * Resets the internal counter. Useful for deterministic test execution.\n */\nexport function resetIdCounter(): void {\n counter = 0;\n}\n","import type { GlazeConfig, Listener, Unsubscribe } from './types';\n\n/** Library default configuration. */\nexport const DEFAULT_CONFIG: Readonly<GlazeConfig> = Object.freeze({\n theme: 'ios-glass',\n mode: 'auto',\n position: 'top-right',\n duration: 4000,\n maxVisible: 8,\n gap: 12,\n stack: true,\n dir: 'auto',\n hotkey: 'alt+t',\n pauseOn: ['hover', 'focus', 'hidden'],\n shadow: true,\n closeButton: false,\n richColors: false,\n invert: false,\n swipe: true,\n dragThreshold: 45,\n progress: false,\n closeOnClick: false,\n exitDuration: 250,\n historyLimit: 100,\n regionLabel: 'Notifications',\n closeLabel: 'Close notification',\n startPaused: false,\n newestOnTop: true,\n dedupeWindow: 500,\n sound: false,\n soundVolume: 0.5,\n container: undefined,\n} satisfies GlazeConfig);\n\n/** Observable configuration container holding immutable snapshots. */\nexport interface ConfigStore {\n /** Returns the current immutable configuration snapshot. */\n get(): Readonly<GlazeConfig>;\n /** Merges a partial configuration and notifies subscribers. Returns the updated snapshot. */\n set(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;\n /** Restores library defaults. */\n reset(): void;\n /** Subscribes to configuration changes. */\n subscribe(listener: Listener): Unsubscribe;\n}\n\n/**\n * Resolves an option according to precedence:\n * Call option > Theme default > Global config > Library default.\n */\nexport const resolvePrecedence = <T>(\n callVal: T | undefined,\n themeVal: T | undefined,\n globalVal: T | undefined,\n defaultVal: T,\n): T => callVal ?? themeVal ?? globalVal ?? defaultVal;\n\n/** Creates an isolated, immutable configuration store. */\nexport function createConfigStore(initial: Partial<GlazeConfig> = {}): ConfigStore {\n let current: Readonly<GlazeConfig> = Object.freeze({\n ...DEFAULT_CONFIG,\n ...stripUndefined(initial),\n });\n const listeners = new Set<Listener>();\n\n const emit = (): void => {\n listeners.forEach((listener) => listener());\n };\n\n return {\n get: () => current,\n set(patch) {\n const next = { ...current, ...stripUndefined(patch) };\n if ((Object.keys(next) as (keyof GlazeConfig)[]).some((k) => next[k] !== current[k])) {\n current = Object.freeze(next);\n emit();\n }\n return current;\n },\n reset() {\n current = DEFAULT_CONFIG;\n emit();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\nfunction stripUndefined<T extends object>(value: T): Partial<T> {\n const out: Partial<T> = {};\n for (const k in value) if (value[k] !== undefined) out[k] = value[k];\n return out;\n}\n","import type { Clock } from './clock';\nimport { defaultClock } from './clock';\n\nexport interface PausableTimer {\n /** Starts or resumes the countdown. No effect when already running or finished. */\n start(): void;\n /**\n * Pauses the timer for a named reason (reference-counted).\n * @param reason The pause trigger identifier, e.g. 'hover', 'focus', 'hidden', 'manual'.\n */\n pause(reason?: string): void;\n /**\n * Resumes the timer for a named reason (decrements reference count).\n * Restarts the countdown when all pause reasons are cleared.\n */\n resume(reason?: string): void;\n /** Adds milliseconds to the remaining countdown (or subtracts if negative). */\n add(ms: number): void;\n /** Resets the countdown duration and restarts if previously active. */\n reset(ms?: number): void;\n /** Permanently cancels and tears down the timer. */\n cancel(): void;\n /** Current milliseconds remaining on the countdown. */\n remaining(): number;\n /** Current milliseconds elapsed on the countdown. */\n elapsed(): number;\n /** Whether the countdown is actively ticking. */\n isRunning(): boolean;\n /** Whether the countdown is held by one or more pause reasons. */\n isPaused(): boolean;\n /** List of all currently active pause reason names. */\n pausedReasons(): string[];\n /** Clears all pause reasons and resumes if started. */\n clearReasons(): void;\n /** Registers a progress tick listener called while ticking. */\n onTick(callback: (remaining: number, fraction: number) => void): () => void;\n}\n\n/**\n * Creates a pausable countdown timer with reference-counted pause reasons.\n *\n * @param duration Total countdown duration in milliseconds.\n * @param onDone Callback fired when countdown reaches zero.\n * @param clock Injectable clock/scheduler (defaults to defaultClock).\n */\nexport function createTimer(\n duration: number,\n onDone: () => void,\n clock: Clock = defaultClock,\n): PausableTimer {\n let total = duration;\n let remMs = duration;\n let startedAt = 0;\n let cancelT: (() => void) | undefined;\n let cancelI: (() => void) | undefined;\n let started = false;\n let done = false;\n\n const reasons = new Map<string, number>();\n const ticks = new Set<(remaining: number, fraction: number) => void>();\n\n const isLive = (): boolean => Number.isFinite(remMs) && remMs > 0;\n const active = (): boolean => started && !reasons.size;\n\n const getRem = (): number =>\n done ? 0 : active() ? Math.max(0, remMs - (clock.now() - startedAt)) : remMs;\n\n const notifyTick = (): void => {\n if (!ticks.size) return;\n const r = getRem();\n const f = total > 0 ? Math.max(0, Math.min(1, r / total)) : 0;\n for (const cb of ticks) {\n try {\n cb(r, f);\n } catch (err) {\n console.error(err);\n }\n }\n };\n\n const stop = (): void => {\n cancelT?.();\n cancelI?.();\n cancelT = cancelI = undefined;\n };\n\n const arm = (): void => {\n stop();\n if (!isLive() || reasons.size || done) return;\n startedAt = clock.now();\n cancelT = clock.setTimeout(() => {\n stop();\n remMs = 0;\n done = true;\n started = false;\n notifyTick();\n onDone();\n }, remMs);\n if (ticks.size) cancelI = clock.setInterval(notifyTick, 50);\n };\n\n return {\n start() {\n if (done || !isLive()) return;\n started = true;\n reasons.clear();\n arm();\n notifyTick();\n },\n pause(reason = 'manual') {\n if (done) return;\n reasons.set(reason, (reasons.get(reason) ?? 0) + 1);\n if (started && reasons.size === 1) {\n remMs = Math.max(0, remMs - (clock.now() - startedAt));\n stop();\n notifyTick();\n }\n },\n resume(reason = 'manual') {\n const c = !done && reasons.get(reason);\n if (!c) return;\n if (c <= 1) reasons.delete(reason);\n else reasons.set(reason, c - 1);\n if (active() && isLive()) {\n arm();\n notifyTick();\n }\n },\n clearReasons() {\n reasons.clear();\n if (started && isLive()) arm();\n },\n add(ms: number) {\n if (done || !Number.isFinite(remMs)) return;\n const live = active();\n remMs = Math.max(1, getRem() + ms);\n total = Math.max(total, remMs);\n if (live) arm();\n notifyTick();\n },\n reset(ms?: number) {\n done = false;\n remMs = total = ms ?? total;\n if (active()) {\n if (isLive()) arm();\n else stop();\n }\n notifyTick();\n },\n cancel() {\n stop();\n ticks.clear();\n started = false;\n done = true;\n remMs = 0;\n },\n remaining: getRem,\n elapsed: () => Math.max(0, total - getRem()),\n isRunning: () => active() && !done && isLive(),\n isPaused: () => reasons.size > 0,\n pausedReasons: () => [...reasons.keys()],\n onTick(cb) {\n ticks.add(cb);\n if (active() && !cancelI) cancelI = clock.setInterval(notifyTick, 50);\n return () => {\n ticks.delete(cb);\n if (!ticks.size && cancelI) {\n cancelI();\n cancelI = undefined;\n }\n };\n },\n };\n}\n","import type { ToastTypeDefinition } from './types';\n\n/** Registry of custom and built-in toast types. */\nexport interface TypeRegistry {\n /**\n * Registers or replaces a toast type.\n * @param name Non-empty type name.\n * @param definition Defaults, icon, color tokens, default duration, ariaLive.\n */\n add(name: string, definition?: ToastTypeDefinition): void;\n /** Removes a type. Returns whether it existed. */\n remove(name: string): boolean;\n /** Looks a type up. */\n get(name: string): ToastTypeDefinition | undefined;\n /** Lists registered custom type names. */\n list(): string[];\n}\n\nconst tDef = (color: string, ariaLive: 'polite' | 'assertive' = 'polite') => ({\n color: `var(--gk-${color})`,\n ariaLive,\n});\n\nconst BUILT_IN_TYPES: Record<string, ToastTypeDefinition> = {\n success: tDef('success'),\n error: tDef('error', 'assertive'),\n warning: tDef('warning', 'assertive'),\n info: tDef('info'),\n loading: { ...tDef('info'), defaults: { duration: 0, dismissible: false } },\n message: tDef('fg'),\n};\n\n/** Creates a type registry. */\nexport function createTypeRegistry(): TypeRegistry {\n const custom = new Map<string, ToastTypeDefinition>();\n\n return {\n add(name, definition = {}) {\n const k = typeof name === 'string' ? name.trim() : '';\n if (!k) throw new TypeError('toastory: invalid type');\n custom.set(k, definition);\n },\n remove: (name) => custom.delete(name),\n get: (name) => custom.get(name) ?? BUILT_IN_TYPES[name],\n list: () => [...custom.keys()],\n };\n}\n","import type { Clock } from './clock';\nimport { defaultClock } from './clock';\nimport type { ConfigStore } from './config';\nimport { createConfigStore } from './config';\nimport { normalizeId } from './ids';\nimport { createTimer } from './timer';\nimport type { PausableTimer } from './timer';\nimport { createTypeRegistry } from './types-registry';\nimport type { TypeRegistry } from './types-registry';\nimport type {\n CloseReason,\n Listener,\n ToastCustomRenderer,\n ToastId,\n ToastOptions,\n ToastPatch,\n ToastRecord,\n Unsubscribe,\n} from './types';\n\n/** Reasons that originate from a person and are blocked on non-dismissible toasts. */\nconst isUser = (r: CloseReason): boolean => r === 'user' || r === 'swipe' || r === 'click';\n\nconst safeCall = <A, B>(fn?: (a: A, b: B) => void, a?: A, b?: B): void => {\n try {\n fn?.(a as A, b as B);\n } catch (err) {\n console.error(err);\n }\n};\n\n/** Pause reason used by `startPaused`. */\nexport const MANUAL_PAUSE = 'manual';\n\n/** Options for creating a toast manager / store. */\nexport interface ToastManagerOptions {\n config?: ConfigStore;\n clock?: Clock;\n now?: () => number;\n types?: TypeRegistry;\n}\n\nexport type ToastStoreOptions = ToastManagerOptions;\n\n/** Input for adding a toast. */\nexport interface AddToastInput extends ToastOptions {\n custom?: ToastCustomRenderer;\n}\n\ninterface Entry {\n opts: ToastOptions;\n custom: ToastCustomRenderer | undefined;\n record: ToastRecord;\n timer: PausableTimer;\n dedupeKey: string | undefined;\n exitHandle: (() => void) | undefined;\n reason: CloseReason | undefined;\n flags: number;\n}\n\n/** State container for toasts. Pure logic: no DOM, no framework. */\nexport interface ToastManager {\n add(input: AddToastInput): ToastId;\n update(id: ToastId, patch: ToastPatch): boolean;\n dismiss(id?: ToastId, reason?: CloseReason): void;\n dismissAll(reason?: CloseReason): void;\n pause(id: ToastId | undefined, reason: string): void;\n resume(id: ToastId | undefined, reason: string): void;\n extend(id: ToastId, ms: number): void;\n getRemaining(id: ToastId): number;\n getToasts(): readonly ToastRecord[];\n getHistory(): readonly ToastRecord[];\n clear(): void;\n clearHistory(): void;\n subscribe(listener: Listener): Unsubscribe;\n readonly config: ConfigStore;\n readonly types: TypeRegistry;\n}\n\nexport type ToastStore = ToastManager;\n\nexport function createToastManager(options: ToastManagerOptions = {}): ToastManager {\n const config = options.config ?? createConfigStore();\n const clock = options.clock ?? defaultClock;\n const now = options.now ?? clock.now;\n const types = options.types ?? createTypeRegistry();\n\n const entries = new Map<ToastId, Entry>();\n let order: ToastId[] = [];\n let snapshot: readonly ToastRecord[] = [];\n let history: readonly ToastRecord[] = [];\n const listeners = new Set<Listener>();\n\n const emit = (): void => {\n snapshot = order.map((id) => entries.get(id)?.record).filter(Boolean) as ToastRecord[];\n listeners.forEach((listener) => listener());\n };\n\n const build = (\n id: ToastId,\n opts: ToastOptions,\n previous: ToastRecord | undefined,\n custom: ToastCustomRenderer | undefined,\n ): ToastRecord => {\n const cfg = config.get();\n const type = opts.type ?? 'default';\n const merged: ToastOptions = {\n ...types.get(type)?.defaults,\n ...opts,\n };\n merged.title ??= merged.text1;\n merged.description ??= merged.text2;\n merged.onOpen ??= merged.onShow;\n merged.onClose ??= merged.onHide;\n if (!merged.actions && merged.buttons) {\n merged.actions = merged.buttons.map((b) => ({\n label: b.label,\n onClick: (e: MouseEvent) =>\n (b.onClick ?? b.onPress)?.({\n preventDefault: () => e.preventDefault(),\n defaultPrevented: e.defaultPrevented,\n }),\n autoDismiss: b.autoDismiss,\n kind: b.kind,\n }));\n }\n const rawDuration =\n merged.autoHide === false ? 0 : (merged.duration ?? merged.visibilityTime ?? cfg.duration);\n const duration = Number.isFinite(rawDuration) && rawDuration > 0 ? rawDuration : 0;\n const urgent = merged.important || type === 'error';\n const stamp = now();\n\n const record: ToastRecord = {\n ...merged,\n id,\n type,\n duration,\n position: merged.position ?? cfg.position,\n ariaLive: merged.ariaLive ?? (urgent ? 'assertive' : 'polite'),\n role: merged.role ?? (urgent ? 'alert' : 'status'),\n createdAt: previous?.createdAt ?? stamp,\n updatedAt: stamp,\n revision: (previous?.revision ?? -1) + 1,\n timerEpoch: previous?.timerEpoch ?? 0,\n count: previous?.count ?? 1,\n visible: previous?.visible ?? false,\n dismissed: false,\n pausedBy: previous?.pausedBy ?? (cfg.startPaused ? [MANUAL_PAUSE] : []),\n remaining: previous?.remaining ?? (duration || Infinity),\n custom,\n };\n return record;\n };\n\n const remainingOf = (entry: Entry): number => {\n return entry.record.duration === 0 ? Infinity : entry.timer.remaining();\n };\n\n const dedupeKeyOf = (opts: ToastOptions): string | undefined => {\n if (opts.dedupe === false) return;\n if (typeof opts.dedupe === 'string') return opts.dedupe;\n const titleVal = opts.title ?? opts.text1;\n const descVal = opts.description ?? opts.text2;\n const t = typeof titleVal === 'string' ? titleVal : '';\n const d = typeof descVal === 'string' ? descVal : '';\n return t || d ? `${opts.type ?? 'default'}|${t}|${d}` : undefined;\n };\n\n const promote = (): void => {\n const cfg = config.get();\n const counts = new Map<string, number>();\n for (const id of order) {\n const entry = entries.get(id);\n if (!entry || entry.record.dismissed) continue;\n const key = `${entry.record.container ?? ''}|${entry.record.position}`;\n const used = counts.get(key) ?? 0;\n const isImportant = !!entry.record.important;\n if (used < cfg.maxVisible || isImportant) {\n if (!entry.record.visible) {\n entry.record = { ...entry.record, visible: true };\n if (!entry.record.pausedBy.length && entry.record.duration > 0) {\n entry.timer.start();\n }\n }\n if (!isImportant) counts.set(key, used + 1);\n } else if (entry.record.visible) {\n entry.record = { ...entry.record, visible: false };\n entry.timer.pause();\n }\n }\n };\n\n const finalize = (entry: Entry): void => {\n entry.exitHandle?.();\n entry.timer.cancel();\n entries.delete(entry.record.id);\n order = order.filter((id) => id !== entry.record.id);\n history = [{ ...entry.record, dismissed: true }, ...history].slice(\n 0,\n config.get().historyLimit,\n );\n promote();\n flushOpened();\n emit();\n if (!(entry.flags & 2)) {\n entry.flags |= 2;\n safeCall(entry.record.onClose, entry.record, entry.reason ?? 'api');\n }\n };\n\n const dismissEntry = (entry: Entry, reason: CloseReason): void => {\n if (entry.record.dismissed) return;\n if (entry.record.dismissible === false && isUser(reason)) return;\n entry.reason = reason;\n entry.record = {\n ...entry.record,\n dismissed: true,\n remaining: 0,\n revision: entry.record.revision + 1,\n };\n entry.timer.cancel();\n\n if (!(entry.flags & 4) && reason !== 'auto') {\n entry.flags |= 4;\n safeCall(entry.record.onDismiss, entry.record, reason);\n }\n\n promote();\n flushOpened();\n emit();\n\n const exit = config.get().exitDuration;\n if (exit <= 0 || !entry.record.visible) {\n finalize(entry);\n } else {\n entry.exitHandle = clock.setTimeout(() => finalize(entry), exit);\n }\n };\n\n const makeEntry = (id: ToastId, input: AddToastInput): Entry => {\n const { custom, ...opts } = input;\n const record = build(id, opts, undefined, custom);\n const entry: Entry = {\n opts,\n custom,\n record,\n timer: undefined as unknown as PausableTimer,\n dedupeKey: dedupeKeyOf(opts),\n exitHandle: undefined,\n reason: undefined,\n flags: 0,\n };\n entry.timer = createTimer(\n record.duration,\n () => {\n if (!(entry.flags & 8)) {\n entry.flags |= 8;\n safeCall(entry.record.onAutoClose, entry.record);\n }\n dismissEntry(entry, 'auto');\n },\n clock,\n );\n if (record.pausedBy.length) entry.timer.pause();\n return entry;\n };\n\n const restartTimer = (entry: Entry): void => {\n entry.timer.cancel();\n if (entry.record.duration > 0) {\n entry.timer.reset(entry.record.duration);\n if (entry.record.visible && !entry.record.pausedBy.length) entry.timer.start();\n }\n entry.record = {\n ...entry.record,\n timerEpoch: entry.record.timerEpoch + 1,\n remaining: remainingOf(entry),\n };\n };\n\n const flushOpened = (): void => {\n for (const id of order) {\n const entry = entries.get(id);\n if (entry && entry.record.visible && !(entry.flags & 1) && !entry.record.dismissed) {\n entry.flags |= 1;\n safeCall(entry.record.onOpen, entry.record);\n }\n }\n };\n\n const store: ToastManager = {\n config,\n types,\n\n add(input: AddToastInput): ToastId {\n const id = normalizeId(input.id);\n const existing = entries.get(id);\n if (existing && !existing.record.dismissed) {\n const { custom, ...patch } = input;\n store.update(id, patch);\n if (custom) {\n existing.custom = custom;\n existing.record = { ...existing.record, custom };\n emit();\n }\n return id;\n }\n if (existing) finalize(existing);\n\n const key = dedupeKeyOf(input);\n if (key !== undefined) {\n for (const other of entries.values()) {\n if (other.dedupeKey === key && !other.record.dismissed) {\n other.record = {\n ...other.record,\n count: other.record.count + 1,\n revision: other.record.revision + 1,\n updatedAt: now(),\n };\n restartTimer(other);\n emit();\n return other.record.id;\n }\n }\n }\n\n const entry = makeEntry(id, input);\n entries.set(id, entry);\n order = [...order, id];\n promote();\n emit();\n flushOpened();\n return id;\n },\n\n update(id, patch) {\n const entry = entries.get(id);\n if (!entry || entry.record.dismissed) return false;\n const { resetTimer = true, ...rest } = patch;\n const next: ToastOptions = { ...entry.opts };\n if (rest.type !== undefined && rest.type !== entry.record.type) {\n delete next.duration;\n delete next.ariaLive;\n delete next.role;\n delete next.icon;\n }\n let changed = false;\n for (const key in rest) {\n const value = (rest as Record<string, unknown>)[key];\n if (value !== undefined) {\n if ((entry.opts as Record<string, unknown>)[key] !== value) changed = true;\n (next as Record<string, unknown>)[key] = value;\n }\n }\n if (!changed && rest.type === undefined && rest.position === undefined) return true;\n entry.opts = next;\n entry.dedupeKey = dedupeKeyOf(next);\n const rebuilt = build(id, next, entry.record, entry.custom);\n const positionChanged = rebuilt.position !== entry.record.position;\n entry.record = rebuilt;\n if (positionChanged) {\n entry.record = { ...entry.record, visible: false };\n promote();\n }\n if (resetTimer || positionChanged) restartTimer(entry);\n else {\n entry.record = {\n ...entry.record,\n remaining: remainingOf(entry),\n };\n }\n emit();\n flushOpened();\n return true;\n },\n\n dismiss(id, reason = 'api') {\n if (id === undefined) return store.dismissAll(reason);\n const entry = entries.get(id);\n if (entry) dismissEntry(entry, reason);\n },\n\n dismissAll(reason = 'api') {\n for (const entry of entries.values()) dismissEntry(entry, reason);\n },\n\n pause(id, reason) {\n const targets = id !== undefined ? [entries.get(id)] : entries.values();\n for (const entry of targets) {\n if (!entry || entry.record.pausedBy.includes(reason)) continue;\n entry.timer.pause(reason);\n entry.record = {\n ...entry.record,\n pausedBy: [...entry.record.pausedBy, reason],\n remaining: remainingOf(entry),\n };\n }\n emit();\n },\n\n resume(id, reason) {\n const targets = id !== undefined ? [entries.get(id)] : entries.values();\n for (const entry of targets) {\n if (!entry || !entry.record.pausedBy.includes(reason)) continue;\n entry.timer.resume(reason);\n const nextPausedBy = entry.record.pausedBy.filter((value) => value !== reason);\n entry.record = {\n ...entry.record,\n pausedBy: nextPausedBy,\n remaining: remainingOf(entry),\n };\n if (!nextPausedBy.length && entry.record.visible && entry.record.duration > 0) {\n entry.timer.start();\n }\n }\n emit();\n },\n\n extend(id, ms) {\n const entry = entries.get(id);\n if (!entry || entry.record.dismissed) return;\n entry.timer.add(ms);\n entry.record = {\n ...entry.record,\n remaining: remainingOf(entry),\n timerEpoch: entry.record.timerEpoch + 1,\n revision: entry.record.revision + 1,\n };\n emit();\n },\n\n getRemaining(id) {\n const entry = entries.get(id);\n return entry ? remainingOf(entry) : 0;\n },\n\n getToasts: () => snapshot,\n getHistory: () => history,\n\n clear() {\n for (const entry of entries.values()) {\n entry.exitHandle?.();\n entry.timer.cancel();\n }\n entries.clear();\n order = [];\n snapshot = [];\n emit();\n },\n\n clearHistory() {\n history = [];\n emit();\n },\n\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n\n return store;\n}\n\nexport const createToastStore = createToastManager;\n","import type { Store } from './types';\n\n/**\n * Creates a tiny observable store with batched microtask updates.\n * Compatible with React `useSyncExternalStore`, Svelte store contract,\n * Vue reactivity, and Angular signals/observables.\n *\n * @param initialValue Initial state value.\n */\nexport function createStore<T>(initialValue: T): Store<T> {\n let state = initialValue;\n const listeners = new Set<((state: T) => void) | (() => void)>();\n let batchScheduled = false;\n\n const notify = (): void => {\n batchScheduled = false;\n const current = state;\n listeners.forEach((fn) => {\n try {\n (fn as (val: T) => void)(current);\n } catch (err) {\n console.error(err);\n }\n });\n };\n\n const scheduleNotify = (immediate: boolean): void => {\n if (immediate) {\n notify();\n return;\n }\n if (batchScheduled) return;\n batchScheduled = true;\n if (typeof queueMicrotask === 'function') queueMicrotask(notify);\n else void Promise.resolve().then(notify);\n };\n\n return {\n getSnapshot: () => state,\n setState: (updater, immediate = false) => {\n const next = typeof updater === 'function' ? (updater as (prev: T) => T)(state) : updater;\n if (Object.is(next, state)) return;\n state = next;\n scheduleNotify(immediate);\n },\n subscribe: (listener) => {\n listeners.add(listener);\n // Svelte store contract: if callback accepts an argument, invoke it synchronously with the snapshot\n if (listener.length > 0) {\n try {\n (listener as (val: T) => void)(state);\n } catch (err) {\n console.error(err);\n }\n }\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\n// Re-exports for backward-compatibility with tests and adapters\nexport { createToastManager, createToastStore, MANUAL_PAUSE } from './toast-manager';\nexport type {\n AddToastInput,\n ToastManager,\n ToastManagerOptions,\n ToastStore,\n ToastStoreOptions,\n} from './toast-manager';\n","import type { DialogOptions, ToastType } from './types';\n\n/** Decides ARIA live politeness level. */\nexport const decideAriaLive = (\n type?: ToastType,\n important?: boolean,\n custom?: 'polite' | 'assertive' | 'off',\n): 'polite' | 'assertive' | 'off' =>\n custom ?? (important || type === 'error' || type === 'warning' ? 'assertive' : 'polite');\n\n/** Decides ARIA role for a toast. */\nexport const decideToastRole = (\n type?: ToastType,\n important?: boolean,\n custom?: 'status' | 'alert' | 'log',\n): 'status' | 'alert' | 'log' => custom ?? (important || type === 'error' ? 'alert' : 'status');\n\n/** Decides ARIA dialog role. */\nexport const decideDialogRole = (o: DialogOptions): 'dialog' | 'alertdialog' =>\n !o.input && (o.tone === 'danger' || o.tone === 'warning') ? 'alertdialog' : 'dialog';\n\n/** Decides which element receives initial focus when a dialog opens. */\nexport const decideFocusTarget = (\n o: DialogOptions,\n): 'confirm' | 'deny' | 'cancel' | 'input' | 'close' | 'none' =>\n o.focusOn ??\n (o.input !== undefined\n ? 'input'\n : o.tone === 'danger' && o.cancelButton?.show !== false\n ? 'cancel'\n : 'confirm');\n\n/** Computes accessible labels and button text with default fallbacks. */\nexport const decideDialogLabels = (\n o: DialogOptions,\n): { confirmLabel: string; denyLabel: string; cancelLabel: string } => ({\n confirmLabel: o.confirmButton?.label ?? 'OK',\n denyLabel: o.denyButton?.label ?? 'No',\n cancelLabel: o.cancelButton?.label ?? 'Cancel',\n});\n","import type { PromiseHandle, PromiseMessages, ToastId, ToastOptions, ToastPatch } from './types';\nimport type { ToastStore } from './toast-manager';\n\nconst toPatch = (m: string | ToastPatch): ToastPatch => (typeof m === 'string' ? { title: m } : m);\n\nconst errorText = (e: unknown): string => (e instanceof Error ? e.message : String(e));\n\n/**\n * Handles async promise toasts: displays loading state, resolves to success or error,\n * calls lifecycle hooks, and provides `unwrap()` returning the raw promise result.\n */\nexport function runPromiseToast<T>(\n store: ToastStore,\n input: Promise<T> | (() => Promise<T>),\n messages: PromiseMessages<T>,\n options: ToastOptions = {},\n): PromiseHandle<T> {\n let promise: Promise<T>;\n try {\n promise = typeof input === 'function' ? input() : input;\n } catch (error) {\n promise = Promise.reject(error);\n }\n\n const { id: requestedId, ...base } = options;\n const loadingPatch = toPatch(messages.loading);\n\n const id: ToastId = store.add({\n ...base,\n id: requestedId,\n ...loadingPatch,\n type: 'loading',\n duration: 0,\n });\n\n const settle = (type: 'success' | 'error', raw: unknown, payload: unknown): void => {\n const desc =\n typeof messages.description === 'function'\n ? messages.description(\n type === 'success'\n ? { status: type, value: payload as T }\n : { status: type, error: payload },\n )\n : messages.description;\n store.update(id, {\n duration: base.duration ?? store.config.get().duration,\n ...toPatch(raw as string | ToastPatch),\n type,\n ...(desc !== undefined ? { description: desc } : {}),\n resetTimer: true,\n });\n };\n\n promise\n .then((value) => {\n if (messages.success === undefined) {\n store.dismiss(id);\n } else {\n settle(\n 'success',\n typeof messages.success === 'function' ? messages.success(value) : messages.success,\n value,\n );\n }\n })\n .catch((error: unknown) => {\n settle(\n 'error',\n messages.error === undefined\n ? errorText(error)\n : typeof messages.error === 'function'\n ? messages.error(error)\n : messages.error,\n error,\n );\n })\n .finally(() => {\n try {\n void messages.finally?.();\n } catch (err) {\n console.error(err);\n }\n });\n\n return {\n id,\n unwrap: () => promise,\n };\n}\n","import { createTimer } from './timer';\nimport type { PausableTimer } from './timer';\nimport type { Listener, Unsubscribe } from './types';\n\nexport type {\n DialogBackdrop,\n DialogButton,\n DialogChoice,\n DialogColumn,\n DialogHandle,\n DialogIcon,\n DialogInputType,\n DialogOptions,\n DialogPosition,\n DialogResult,\n DialogRow,\n DialogTone,\n DismissReason,\n ValidateResult,\n} from './types';\nimport type {\n DialogHandle,\n DialogOptions,\n DialogResult,\n DismissReason,\n ValidateResult,\n} from './types';\n\n/** Observable view of a running dialog. */\nexport interface DialogState {\n /** Current merged options. */\n options: DialogOptions;\n /** Which button is busy. */\n loading: 'confirm' | 'deny' | null;\n /** Inline error. */\n error: string | undefined;\n /** `true` until the dialog resolves. */\n open: boolean;\n /** Increments on every change. */\n revision: number;\n}\n\n/** Drives validation, async hooks, timer and result of one dialog. No DOM. */\nexport interface DialogController {\n /** Control surface shared with user callbacks. */\n readonly handle: DialogHandle;\n /** Current state. */\n getState(): DialogState;\n /** Subscribes to state changes. */\n subscribe(listener: Listener): Unsubscribe;\n /** Renderer supplies the function that reads the current input value. */\n setValueReader(reader: () => unknown): void;\n /** Renderer calls this once mounted. Starts the timer and fires `didOpen`. */\n opened(): void;\n /** Runs confirm or deny. Resolves after hooks have run. */\n submit(kind: 'confirm' | 'deny'): Promise<void>;\n /** Dismisses when allowed. Returns whether the dialog closed. */\n dismiss(reason: DismissReason): boolean;\n}\n\nconst messageOf = (err: unknown): string => (err instanceof Error ? err.message : String(err));\n\n/** Creates the controller for a dialog. */\nexport function createDialogController(initial: DialogOptions): DialogController {\n let options: DialogOptions = { ...initial };\n let loading: DialogState['loading'] = null;\n let error: string | undefined;\n let open = true;\n let revision = 0;\n let timer: PausableTimer | undefined;\n let readValue: () => unknown = () => options.inputValue;\n let resolveResult: (result: DialogResult) => void = () => undefined;\n const listeners = new Set<Listener>();\n const result = new Promise<DialogResult>((resolve) => {\n resolveResult = resolve;\n });\n let state: DialogState = { options, loading, error, open, revision };\n\n const emit = (): void => {\n revision += 1;\n state = { options, loading, error, open, revision };\n for (const listener of [...listeners]) {\n try {\n listener();\n } catch (err) {\n console.error(err);\n }\n }\n };\n\n const finish = (partial: Partial<DialogResult>): void => {\n if (!open) return;\n const final: DialogResult = {\n isConfirmed: false,\n isDenied: false,\n isDismissed: false,\n value: undefined,\n dismiss: undefined,\n ...partial,\n };\n try {\n options.willClose?.(handle, final);\n } catch (err) {\n console.error(err);\n }\n open = false;\n timer?.cancel();\n emit();\n listeners.clear();\n resolveResult(final);\n };\n\n const startTimer = (ms: number): void => {\n timer?.cancel();\n timer = undefined;\n if (ms > 0 && Number.isFinite(ms)) {\n timer = createTimer(ms, () => {\n finish({ isDismissed: true, dismiss: 'timer' });\n });\n timer.start();\n }\n };\n\n const handle: DialogHandle = {\n result,\n close(partial) {\n finish(partial ?? { isDismissed: true, dismiss: 'close' });\n },\n update(patch) {\n if (!open) return;\n options = { ...options, ...patch };\n if (patch.timer !== undefined) startTimer(patch.timer);\n emit();\n },\n setLoading(value) {\n if (!open) return;\n loading = value === true ? 'confirm' : value === false ? null : value;\n emit();\n },\n showError(message) {\n if (!open) return;\n error = message ?? undefined;\n emit();\n },\n timer: {\n pause: () => {\n timer?.pause();\n emit();\n },\n resume: () => {\n timer?.resume();\n emit();\n },\n add: (ms) => {\n if (timer) timer.add(ms);\n else startTimer(Math.max(1, ms));\n emit();\n },\n remaining: () => timer?.remaining() ?? 0,\n paused: () => (timer ? !timer.isRunning() && timer.remaining() > 0 : false),\n },\n };\n\n const controller: DialogController = {\n handle,\n getState: () => state,\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n setValueReader(reader) {\n readValue = reader;\n },\n opened() {\n if (!open) return;\n if (options.timer !== undefined) startTimer(options.timer);\n emit();\n try {\n options.didOpen?.(handle);\n } catch (err) {\n console.error(err);\n }\n },\n async submit(kind) {\n if (!open || loading) return;\n let value = readValue();\n if (error !== undefined) {\n error = undefined;\n emit();\n }\n if (kind === 'confirm' && options.validate) {\n loading = 'confirm';\n emit();\n let msg: ValidateResult;\n try {\n msg = await options.validate(value, handle);\n } catch (t) {\n msg = messageOf(t);\n }\n loading = null;\n if (!open) return;\n if (typeof msg === 'string' && msg) {\n error = msg;\n emit();\n return;\n }\n emit();\n }\n const hook = kind === 'confirm' ? options.preConfirm : options.preDeny;\n if (hook) {\n loading = kind;\n emit();\n let out: unknown;\n try {\n out = await hook(value, handle);\n } catch (t) {\n loading = null;\n if (open) {\n error = messageOf(t);\n emit();\n }\n return;\n }\n loading = null;\n if (!open) return;\n if (out === false) {\n emit();\n return;\n }\n if (out !== undefined) value = out;\n }\n finish({ isConfirmed: kind === 'confirm', isDenied: kind === 'deny', value });\n },\n dismiss(reason) {\n if (!open || (loading && reason !== 'timer')) return false;\n if (reason === 'backdrop' && options.allowOutsideClick === false) return false;\n if (reason === 'esc' && options.allowEscape === false) return false;\n finish({ isDismissed: true, dismiss: reason });\n return true;\n },\n };\n\n return controller;\n}\n\n/** Promise returned by dialog helpers, with the live handle attached. */\nexport type DialogPromise<R = DialogResult> = Promise<R> & { handle: DialogHandle };\n\n/** Result of `ui.steps`. */\nexport interface StepsResult extends DialogResult {\n /** Confirmed values of every completed step. */\n values: unknown[];\n /** Zero based index of the step the flow ended on. */\n step: number;\n}\n\n/**\n * Runs dialogs one after another. From the second step on, the deny button becomes a \"back\"\n * button using `backLabel`, and activating it returns to the previous step.\n * @param steps Options of each step.\n * @param openOrManager Opens one dialog, or a DialogManager instance.\n * @param backLabel Label for the back button.\n */\nexport async function runSteps(\n steps: readonly DialogOptions[],\n open: (options: DialogOptions) => Promise<DialogResult>,\n backLabel = 'Back',\n): Promise<StepsResult> {\n const values: unknown[] = [];\n let index = 0;\n let last: DialogResult = {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true,\n value: undefined,\n dismiss: 'close',\n };\n while (index < steps.length) {\n const base = steps[index];\n if (!base) {\n index += 1;\n continue;\n }\n const options: DialogOptions =\n index > 0\n ? { ...base, denyButton: { show: true, label: backLabel, ...base.denyButton } }\n : base;\n const previous = values[index];\n const restored =\n typeof previous === 'string' || typeof previous === 'number' || typeof previous === 'boolean'\n ? previous\n : options.inputValue;\n last = await open({ ...options, inputValue: restored });\n if (last.isConfirmed) {\n values[index] = last.value;\n index += 1;\n } else if (last.isDenied && index > 0) {\n index -= 1;\n } else {\n return { ...last, values: values.slice(0, index), step: index };\n }\n }\n return { ...last, values, step: Math.max(0, steps.length - 1) };\n}\n","import type { Clock } from './clock';\nimport { defaultClock } from './clock';\nimport { createDialogController } from './dialog';\nimport { createStore } from './store';\nimport type {\n DialogHandle,\n DialogOptions,\n DialogResult,\n DialogState,\n DismissReason,\n Listener,\n Store,\n Unsubscribe,\n} from './types';\n\nexport interface DialogQueueItem {\n id: number;\n options: DialogOptions;\n priority: number;\n resolve: (result: DialogResult) => void;\n controller: HeadlessDialogController;\n}\n\nexport interface HeadlessDialogController {\n readonly handle: DialogHandle;\n getState(): Readonly<DialogState>;\n subscribe(listener: Listener): Unsubscribe;\n setValueReader(reader: () => unknown): void;\n opened(): void;\n submit(action: 'confirm' | 'deny'): Promise<void>;\n dismiss(reason: DismissReason): Promise<void>;\n}\n\nexport interface DialogManager {\n readonly clock: Clock;\n open<T = unknown>(options: DialogOptions): DialogHandle<T>;\n getActive(): HeadlessDialogController | undefined;\n getQueue(): readonly DialogOptions[];\n clear(): void;\n subscribe(listener: Listener): Unsubscribe;\n}\n\nexport function createDialogManager(clock: Clock = defaultClock): DialogManager {\n let counter = 0;\n let activeItem: DialogQueueItem | undefined;\n const queue: DialogQueueItem[] = [];\n const observable: Store<number> = createStore(0);\n\n const notifyChange = (): void => {\n observable.setState((prev) => prev + 1, true);\n };\n\n const processQueue = (): void => {\n if (activeItem || !queue.length) return;\n queue.sort((a, b) => (b.priority !== a.priority ? b.priority - a.priority : a.id - b.id));\n activeItem = queue.shift();\n if (activeItem) {\n notifyChange();\n activeItem.controller.opened();\n }\n };\n\n const openDialog = <T = unknown>(options: DialogOptions): DialogHandle<T> => {\n counter += 1;\n const itemId = counter;\n const priority = options.priority ?? 0;\n\n const base = createDialogController(options);\n const controller: HeadlessDialogController = {\n handle: base.handle,\n getState: base.getState,\n subscribe: base.subscribe,\n setValueReader: base.setValueReader,\n opened: base.opened,\n submit: base.submit,\n dismiss: async (reason: DismissReason) => {\n base.dismiss(reason);\n },\n };\n\n const cleanup = (): void => {\n if (activeItem?.id === itemId) {\n activeItem = undefined;\n notifyChange();\n processQueue();\n }\n };\n base.subscribe(() => {\n if (!base.getState().open) cleanup();\n });\n\n const item: DialogQueueItem = {\n id: itemId,\n options,\n priority,\n resolve: () => undefined,\n controller,\n };\n\n if (!activeItem) {\n activeItem = item;\n controller.opened();\n } else {\n queue.push(item);\n }\n\n return base.handle as DialogHandle<T>;\n };\n\n return {\n clock,\n open: openDialog,\n getActive: () => activeItem?.controller,\n getQueue: () => queue.map((i) => i.options),\n clear() {\n if (activeItem) {\n const current = activeItem;\n activeItem = undefined;\n current.controller.handle.close({ isDismissed: true, dismiss: 'close' });\n }\n for (const item of queue) {\n item.controller.handle.close({ isDismissed: true, dismiss: 'close' });\n }\n queue.length = 0;\n notifyChange();\n },\n subscribe: observable.subscribe,\n };\n}\n\n/**\n * Executes a sequence of dialog steps until completion or dismissal.\n */\nexport async function runSteps(\n steps: readonly DialogOptions[],\n manager: DialogManager,\n): Promise<DialogResult<unknown[]>> {\n const values: unknown[] = [];\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n if (!step) continue;\n const res = await manager.open({\n ...step,\n reverseButtons: step.reverseButtons ?? i > 0,\n confirmButton: { label: i === steps.length - 1 ? 'Finish' : 'Next', ...step.confirmButton },\n cancelButton: { label: 'Cancel', ...step.cancelButton },\n }).result;\n if (!res.isConfirmed) return { ...res, isConfirmed: false, value: values };\n values.push(res.value);\n }\n return {\n isConfirmed: true,\n isDenied: false,\n isDismissed: false,\n value: values,\n dismiss: undefined,\n };\n}\n","import { runPromiseToast } from './promise';\nimport type { ToastStore } from './toast-manager';\nimport type {\n PromiseHandle,\n PromiseMessage,\n PromiseMessages,\n PromiseOutcome,\n Renderable,\n ToastCustomRenderer,\n ToastId,\n ToastOptions,\n ToastPatch,\n ToastRecord,\n} from './types';\nimport type { TypeRegistry } from './types-registry';\n\nexport type { PromiseHandle, PromiseMessage, PromiseMessages, PromiseOutcome };\n\n/** Callable toast function shape shared by all entry points. */\nexport type ToastFn = (message?: Renderable, options?: ToastOptions) => ToastId;\n\n/** The `ui.toast` API. */\nexport interface ToastApi extends ToastFn {\n /** Success toast. */\n success: ToastFn;\n /** Error toast. Uses an assertive live region. */\n error: ToastFn;\n /** Informational toast. */\n info: ToastFn;\n /** Warning toast. */\n warning: ToastFn;\n /** Loading toast with indefinite duration. */\n loading: ToastFn;\n /** Neutral message toast. */\n message: ToastFn;\n /** Custom renderer. */\n custom: (renderer: ToastCustomRenderer, options?: ToastOptions) => ToastId;\n /** Updates an existing toast. */\n update: (id: ToastId, patch: ToastPatch) => boolean;\n /** Dismisses one toast, or all when id is omitted. */\n dismiss: (id?: ToastId) => void;\n /** Dismisses every toast in every region. */\n dismissAll: () => void;\n /** Tracks a promise with loading, success and error states. */\n promise: <T>(\n input: Promise<T> | (() => Promise<T>),\n messages: PromiseMessages<T>,\n options?: ToastOptions,\n ) => PromiseHandle<T>;\n /** Returns a snapshot of active and queued toasts. */\n getToasts: () => readonly ToastRecord[];\n /** Returns closed toasts up to `config.historyLimit`. */\n getHistory: () => readonly ToastRecord[];\n /** Registry of custom toast types. */\n readonly types: TypeRegistry;\n}\n\n/** Builds the `ui.toast` API on top of a store/manager. */\nexport function createToastApi(store: ToastStore): ToastApi {\n const make =\n (type?: ToastOptions['type']): ToastFn =>\n (message, options = {}) => {\n const input: ToastOptions = { type, ...options };\n if (options.type !== undefined) input.type = options.type;\n if (message !== undefined) {\n if (options.title === undefined) input.title = message;\n else if (options.description === undefined) input.description = message;\n }\n return store.add(input);\n };\n\n return Object.assign(make() as ToastApi, {\n success: make('success'),\n error: make('error'),\n info: make('info'),\n warning: make('warning'),\n loading: make('loading'),\n message: make('message'),\n custom: (renderer: ToastCustomRenderer, options?: ToastOptions) =>\n store.add({ ...options, custom: renderer }),\n update: store.update,\n dismiss: store.dismiss,\n dismissAll: store.dismissAll,\n getToasts: store.getToasts,\n getHistory: store.getHistory,\n types: store.types,\n promise: <T>(\n input: Promise<T> | (() => Promise<T>),\n messages: PromiseMessages<T>,\n options?: ToastOptions,\n ) => runPromiseToast(store, input, messages, options),\n });\n}\n","export interface SpringConfig {\n stiffness?: number;\n damping?: number;\n mass?: number;\n}\n\n/** Closed-form damped harmonic oscillator, 0 to 1, zero initial velocity. t in seconds. */\nexport function springPosition(t: number, k: number, c: number, m: number): number {\n const w0 = Math.sqrt(k / m);\n const z = c / (2 * Math.sqrt(k * m));\n if (z < 1) {\n const wd = w0 * Math.sqrt(1 - z * z);\n return 1 - Math.exp(-z * w0 * t) * (Math.cos(wd * t) + ((z * w0) / wd) * Math.sin(wd * t));\n }\n if (z === 1) return 1 - Math.exp(-w0 * t) * (1 + w0 * t);\n const s = w0 * Math.sqrt(z * z - 1);\n const r1 = -z * w0 + s;\n const r2 = -z * w0 - s;\n return 1 - (r2 * Math.exp(r1 * t) - r1 * Math.exp(r2 * t)) / (r2 - r1);\n}\n\n/**\n * Bakes a physics-accurate spring curve into a CSS linear() easing function.\n * Enables 100% native GPU-accelerated spring animations without per-frame JS.\n */\nexport function springEasing(config: SpringConfig = {}): { easing: string; duration: number } {\n const { stiffness = 170, damping = 18, mass = 1 } = config;\n const f = (t: number) => springPosition(t, stiffness, damping, mass);\n const dt = 1 / 120;\n const maxT = 5;\n let settle = 0;\n for (let t = 0; t <= maxT; t += dt) {\n if (Math.abs(1 - f(t)) > 0.001) settle = t;\n }\n settle = Math.max(settle + dt, 0.05);\n const steps = Math.max(2, Math.ceil(settle * 60));\n const pts: string[] = [];\n for (let i = 0; i <= steps; i++) pts.push(String(+f((i / steps) * settle).toFixed(4)));\n pts[steps] = '1';\n return { easing: `linear(${pts.join(',')})`, duration: Math.round(settle * 1000) };\n}\n\n/**\n * Numerical Mass-spring-damper on a scalar value.\n * Retains instantaneous velocity when the target changes, ensuring fluid uninterrupted retargeting.\n */\nexport class Spring {\n v = 0;\n to: number;\n cfg: Required<SpringConfig>;\n\n constructor(\n public x: number,\n cfg: SpringConfig = {},\n ) {\n this.to = x;\n this.cfg = { stiffness: 170, damping: 18, mass: 1, ...cfg };\n }\n\n tune(c: SpringConfig): void {\n Object.assign(this.cfg, c);\n }\n\n /**\n * Advance dt seconds using numerical sub-stepping (h = 1/240) for high stability.\n * Returns true while the spring is still in motion, false when settled at rest.\n */\n step(dt: number): boolean {\n const { stiffness: k, damping: c, mass: m } = this.cfg;\n const h = 1 / 240;\n for (let t = 0; t < dt; t += h) {\n this.v += ((-k * (this.x - this.to) - c * this.v) / m) * h;\n this.x += this.v * h;\n }\n if (Math.abs(this.v) < 0.05 && Math.abs(this.x - this.to) < 0.05) {\n this.x = this.to;\n this.v = 0;\n return false;\n }\n return true;\n }\n}\n\nlet tasks: Set<(dt: number) => boolean> | undefined;\nlet raf = 0;\nlet last = 0;\n\nfunction getRaf(): ((cb: (time: number) => void) => number) | undefined {\n return typeof globalThis !== 'undefined' && 'requestAnimationFrame' in globalThis\n ? (globalThis as unknown as { requestAnimationFrame: (cb: (time: number) => void) => number })\n .requestAnimationFrame\n : undefined;\n}\n\nfunction tick(now: number): void {\n const dt = Math.min(0.1, (now - last) / 1000);\n last = now;\n if (tasks) {\n for (const t of tasks) if (!t(dt)) tasks.delete(t);\n const r = getRaf();\n raf = tasks.size && r ? r(tick) : 0;\n } else raf = 0;\n}\n\n/** Runs a spring task every frame until it returns false. Fully safe in Node and SSR environments. */\nexport function runSpringTask(task: (dt: number) => boolean): void {\n const r = getRaf();\n if (!r) return;\n (tasks ??= new Set()).add(task);\n if (!raf) {\n last = typeof performance !== 'undefined' ? performance.now() : Date.now();\n raf = r(tick);\n }\n}\n","export { defaultClock } from './clock';\nexport type { Clock } from './clock';\n\nexport { nextId, normalizeId, resetIdCounter } from './ids';\n\nexport { createStore } from './store';\nexport type { Store } from './types';\n\nexport { createTimer } from './timer';\nexport type { PausableTimer } from './timer';\n\nexport { createTypeRegistry } from './types-registry';\nexport type { TypeRegistry } from './types-registry';\n\nexport {\n decideAriaLive,\n decideDialogLabels,\n decideDialogRole,\n decideFocusTarget,\n decideToastRole,\n} from './a11y-rules';\n\nexport { createConfigStore, DEFAULT_CONFIG, resolvePrecedence } from './config';\nexport type { ConfigStore } from './config';\n\nexport { createToastManager, createToastStore, MANUAL_PAUSE } from './toast-manager';\nexport type { AddToastInput, ToastManager, ToastManagerOptions, ToastStore } from './toast-manager';\n\nexport { runPromiseToast } from './promise';\n\nexport { createDialogManager } from './dialog-manager';\nexport type { DialogManager, DialogQueueItem, HeadlessDialogController } from './dialog-manager';\n\nexport { createDialogController, runSteps } from './dialog';\nexport type { DialogController, DialogPromise, StepsResult } from './dialog';\n\nexport { createToastApi } from './toast-api';\nexport type {\n PromiseHandle,\n PromiseMessage,\n PromiseMessages,\n PromiseOutcome,\n ToastApi,\n ToastFn,\n} from './toast-api';\n\nexport { springEasing, Spring, springPosition, runSpringTask } from './spring';\nexport type { SpringConfig } from './spring';\n\nexport type * from './types';\n\nimport type { Clock } from './clock';\nimport { defaultClock } from './clock';\nimport type { ConfigStore } from './config';\nimport { createConfigStore } from './config';\nimport { runSteps } from './dialog';\nimport type { StepsResult } from './dialog';\nimport { createDialogManager } from './dialog-manager';\nimport type { DialogManager } from './dialog-manager';\nimport { createToastManager } from './toast-manager';\nimport type { ToastStore } from './toast-manager';\nimport { createToastApi } from './toast-api';\nimport type { ToastApi } from './toast-api';\nimport type {\n BottomSheetHandle,\n BottomSheetOptions,\n DialogHandle,\n DialogOptions,\n DialogResult,\n GlazeConfig,\n LoadingHandle,\n LoadingOptions,\n SheetOptions,\n ToastRecord,\n} from './types';\n\n/**\n * Renderer interface for bridging the framework-agnostic core to UI adapters.\n * If a call happens before a renderer is registered, it queues and replays upon registration.\n */\nexport interface Renderer {\n openDialog?(options: DialogOptions, handle: DialogHandle): Promise<DialogResult> | undefined;\n openSheet?(options: SheetOptions): Promise<DialogResult>;\n openBottomSheet?(options: BottomSheetOptions): BottomSheetHandle;\n openLoading?(options: LoadingOptions): LoadingHandle;\n mountToast?(record: ToastRecord): void;\n}\n\n/** Complete framework-agnostic UI feedback toolkit. */\nexport interface CoreUI {\n /** Toast notifications API. */\n readonly toast: ToastApi;\n /** Global configuration store. */\n readonly config: ConfigStore;\n /** Toast state manager. */\n readonly toastStore: ToastStore;\n /** Headless dialog manager. */\n readonly dialogManager: DialogManager;\n\n /** Opens a confirm dialog. */\n confirm(options: DialogOptions | string): Promise<DialogResult>;\n /** Opens an informational alert dialog. */\n alert(options: DialogOptions | string): Promise<DialogResult>;\n /** Opens a prompt dialog for user text/value input. */\n prompt(options: DialogOptions | string): Promise<DialogResult>;\n /** Runs a multi-step dialog sequence. */\n steps(steps: readonly DialogOptions[], backLabel?: string): Promise<StepsResult>;\n /** Opens an action sheet. */\n sheet(options: SheetOptions): Promise<DialogResult>;\n /** Opens a bottom sheet. */\n bottomSheet(options: BottomSheetOptions): BottomSheetHandle;\n /** Opens a loading overlay. */\n loading(options?: LoadingOptions | string): LoadingHandle;\n\n /** Merges global configuration. */\n configure(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;\n /** Returns the current configuration snapshot. */\n getConfig(): Readonly<GlazeConfig>;\n /** Clears all active toasts and dialogs. */\n clear(): void;\n\n /** Registers a concrete UI renderer, replaying any calls queued during hydration. */\n registerRenderer(renderer: Renderer): void;\n /** Returns the active renderer if registered. */\n getRenderer(): Renderer | undefined;\n}\n\nexport interface CreateUIOptions {\n config?: ConfigStore;\n clock?: Clock;\n}\n\n/**\n * Creates an isolated, framework-agnostic CoreUI instance.\n * Useful for multi-tenant applications, microfrontends, and isolated tests.\n */\nexport function createUI(options: CreateUIOptions = {}): CoreUI {\n const clock = options.clock ?? defaultClock;\n const config = options.config ?? createConfigStore();\n const toastStore = createToastManager({ config, clock });\n const toast = createToastApi(toastStore);\n const dialogManager = createDialogManager(clock);\n\n let renderer: Renderer | undefined;\n const q: (() => void)[] = [];\n const toOpts = (o: DialogOptions | string): DialogOptions =>\n typeof o === 'string' ? { title: o } : { ...o };\n\n const runDlg = (m: DialogOptions): Promise<DialogResult> => {\n const h = dialogManager.open(m);\n if (renderer?.openDialog) void renderer.openDialog(m, h);\n else q.push(() => void renderer?.openDialog?.(m, h));\n return h.result;\n };\n\n const DISMISSED: DialogResult = {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true,\n value: undefined,\n dismiss: 'close',\n };\n\n const ui: CoreUI = {\n toast,\n config,\n toastStore,\n dialogManager,\n confirm: (o) =>\n runDlg({ confirmButton: { show: true }, cancelButton: { show: true }, ...toOpts(o) }),\n alert: (o) =>\n runDlg({\n confirmButton: { show: true },\n cancelButton: { show: false },\n denyButton: { show: false },\n ...toOpts(o),\n }),\n prompt: (o) =>\n runDlg({\n input: 'text',\n confirmButton: { show: true },\n cancelButton: { show: true },\n ...toOpts(o),\n }),\n steps: (list, back = 'Back') => runSteps(list, (s) => ui.confirm(s), back),\n sheet: (o) =>\n renderer?.openSheet\n ? renderer.openSheet(o)\n : new Promise((res) => {\n q.push(() =>\n renderer?.openSheet ? void renderer.openSheet(o).then(res) : res(DISMISSED),\n );\n }),\n bottomSheet(o) {\n if (renderer?.openBottomSheet) return renderer.openBottomSheet(o);\n let live: BottomSheetHandle | undefined;\n return {\n body: undefined,\n close: (r) => live?.close(r),\n snapTo: (i) => live?.snapTo(i),\n update: (p) => live?.update(p),\n result: new Promise((res) => {\n q.push(() =>\n renderer?.openBottomSheet\n ? void (live = renderer.openBottomSheet(o)).result.then(res)\n : res(DISMISSED),\n );\n }),\n };\n },\n loading(loadingOpts = {}) {\n const o = typeof loadingOpts === 'string' ? { text: loadingOpts } : loadingOpts;\n if (renderer?.openLoading) return renderer.openLoading(o);\n let live: LoadingHandle | undefined, done: () => void;\n const closed = new Promise<void>((res) => {\n done = res;\n });\n q.push(() =>\n renderer?.openLoading ? void (live = renderer.openLoading(o)).closed.then(done) : done(),\n );\n return {\n update: (p) => live?.update(p),\n close: () => {\n live?.close();\n done();\n },\n closed,\n };\n },\n configure: (p) => config.set(p),\n getConfig: () => config.get(),\n clear() {\n toastStore.clear();\n dialogManager.clear();\n q.length = 0;\n },\n registerRenderer(r) {\n renderer = r;\n while (q.length) q.shift()?.();\n },\n getRenderer: () => renderer,\n };\n\n return ui;\n}\n\nlet defaultUI: CoreUI | undefined;\nconst def = (): CoreUI => (defaultUI ??= createUI());\n\n/** Default singleton instance of the CoreUI toolkit. */\nexport const ui: CoreUI = {\n get toast() {\n return def().toast;\n },\n get config() {\n return def().config;\n },\n get toastStore() {\n return def().toastStore;\n },\n get dialogManager() {\n return def().dialogManager;\n },\n confirm: (o) => def().confirm(o),\n alert: (o) => def().alert(o),\n prompt: (o) => def().prompt(o),\n steps: (s, b) => def().steps(s, b),\n sheet: (o) => def().sheet(o),\n bottomSheet: (o) => def().bottomSheet(o),\n loading: (o) => def().loading(o),\n configure: (p) => def().configure(p),\n getConfig: () => def().getConfig(),\n clear: () => def().clear(),\n registerRenderer: (r) => def().registerRenderer(r),\n getRenderer: () => def().getRenderer(),\n};\n\n/** Registers the renderer with the default UI instance. */\nexport function registerRenderer(renderer: Renderer): void {\n def().registerRenderer(renderer);\n}\n\n/** Backward-compatible ToastEngine interface. */\nexport interface ToastEngine {\n store: ToastStore;\n toast: ToastApi;\n}\n\n/** Backward-compatible factory for ToastEngine. */\nexport function createToastEngine(options: { config?: ConfigStore } = {}): ToastEngine {\n const store = createToastManager({ config: options.config });\n return { store, toast: createToastApi(store) };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/clock.ts","../src/core/ids.ts","../src/core/config.ts","../src/core/timer.ts","../src/core/types-registry.ts","../src/core/toast-manager.ts","../src/core/store.ts","../src/core/a11y-rules.ts","../src/core/promise.ts","../src/core/dialog.ts","../src/core/dialog-manager.ts","../src/core/toast-api.ts","../src/core/spring.ts","../src/core/index.ts"],"names":["last","counter","ui"],"mappings":"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","file":"core.js","sourcesContent":["/**\n * Injectable clock and scheduler interface.\n * Abstracts time and timers so tests and headless engines can run deterministically.\n */\nexport interface Clock {\n /** Returns the current timestamp in milliseconds. */\n now(): number;\n /**\n * Schedules a callback after `ms` milliseconds.\n * @returns A cancellation function.\n */\n setTimeout(fn: () => void, ms: number): () => void;\n /**\n * Schedules a recurring callback every `ms` milliseconds.\n * @returns A cancellation function.\n */\n setInterval(fn: () => void, ms: number): () => void;\n}\n\n/** Default system clock using standard global timer functions. */\nexport const defaultClock: Clock = {\n now: () => Date.now(),\n setTimeout: (fn, ms) => {\n const t = setTimeout(fn, ms);\n return () => clearTimeout(t);\n },\n setInterval: (fn, ms) => {\n const t = setInterval(fn, ms);\n return () => clearInterval(t);\n },\n};\n","import type { ToastId } from './types';\n\nlet counter = 0;\n\n/**\n * Returns a collision-safe, incremental unique identifier.\n * @param prefix Optional prefix for the id (default: 'gk').\n */\nexport function nextId(p = 'gk'): string {\n return `${p}-${++counter}`;\n}\n\n/**\n * Normalizes an optional user-provided id, generating an incremental id if omitted.\n * @param id User-supplied id or undefined.\n * @param prefix Prefix used when generating an id.\n */\nexport function normalizeId(id: ToastId | undefined, p = 'gk'): ToastId {\n return id !== undefined && id !== '' ? id : nextId(p);\n}\n\n/**\n * Resets the internal counter. Useful for deterministic test execution.\n */\nexport function resetIdCounter(): void {\n counter = 0;\n}\n","import type { GlazeConfig, Listener, Unsubscribe } from './types';\n\n/** Library default configuration. */\nexport const DEFAULT_CONFIG: Readonly<GlazeConfig> = Object.freeze({\n theme: 'ios-glass',\n mode: 'auto',\n position: 'top-right',\n duration: 4000,\n maxVisible: 8,\n gap: 12,\n stack: true,\n dir: 'auto',\n hotkey: 'alt+t',\n pauseOn: ['hover', 'focus', 'hidden'],\n shadow: true,\n closeButton: false,\n richColors: false,\n invert: false,\n swipe: true,\n dragThreshold: 45,\n progress: false,\n closeOnClick: false,\n exitDuration: 250,\n historyLimit: 100,\n regionLabel: 'Notifications',\n closeLabel: 'Close notification',\n startPaused: false,\n newestOnTop: true,\n dedupeWindow: 500,\n sound: false,\n soundVolume: 0.5,\n container: undefined,\n} satisfies GlazeConfig);\n\n/** Observable configuration container holding immutable snapshots. */\nexport interface ConfigStore {\n /** Returns the current immutable configuration snapshot. */\n get(): Readonly<GlazeConfig>;\n /** Merges a partial configuration and notifies subscribers. Returns the updated snapshot. */\n set(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;\n /** Restores library defaults. */\n reset(): void;\n /** Subscribes to configuration changes. */\n subscribe(listener: Listener): Unsubscribe;\n}\n\n/**\n * Resolves an option according to precedence:\n * Call option > Theme default > Global config > Library default.\n */\nexport const resolvePrecedence = <T>(\n callVal: T | undefined,\n themeVal: T | undefined,\n globalVal: T | undefined,\n defaultVal: T,\n): T => callVal ?? themeVal ?? globalVal ?? defaultVal;\n\n/** Creates an isolated, immutable configuration store. */\nexport function createConfigStore(initial: Partial<GlazeConfig> = {}): ConfigStore {\n let current: Readonly<GlazeConfig> = Object.freeze({\n ...DEFAULT_CONFIG,\n ...stripUndefined(initial),\n });\n const listeners = new Set<Listener>();\n\n const emit = (): void => {\n listeners.forEach((listener) => listener());\n };\n\n return {\n get: () => current,\n set(patch) {\n const next = { ...current, ...stripUndefined(patch) };\n if ((Object.keys(next) as (keyof GlazeConfig)[]).some((k) => next[k] !== current[k])) {\n current = Object.freeze(next);\n emit();\n }\n return current;\n },\n reset() {\n current = DEFAULT_CONFIG;\n emit();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\nfunction stripUndefined<T extends object>(value: T): Partial<T> {\n const out: Partial<T> = {};\n for (const k in value) if (value[k] !== undefined) out[k] = value[k];\n return out;\n}\n","import type { Clock } from './clock';\nimport { defaultClock } from './clock';\n\nexport interface PausableTimer {\n /** Starts or resumes the countdown. No effect when already running or finished. */\n start(): void;\n /**\n * Pauses the timer for a named reason (reference-counted).\n * @param reason The pause trigger identifier, e.g. 'hover', 'focus', 'hidden', 'manual'.\n */\n pause(reason?: string): void;\n /**\n * Resumes the timer for a named reason (decrements reference count).\n * Restarts the countdown when all pause reasons are cleared.\n */\n resume(reason?: string): void;\n /** Adds milliseconds to the remaining countdown (or subtracts if negative). */\n add(ms: number): void;\n /** Resets the countdown duration and restarts if previously active. */\n reset(ms?: number): void;\n /** Permanently cancels and tears down the timer. */\n cancel(): void;\n /** Current milliseconds remaining on the countdown. */\n remaining(): number;\n /** Current milliseconds elapsed on the countdown. */\n elapsed(): number;\n /** Whether the countdown is actively ticking. */\n isRunning(): boolean;\n /** Whether the countdown is held by one or more pause reasons. */\n isPaused(): boolean;\n /** List of all currently active pause reason names. */\n pausedReasons(): string[];\n /** Clears all pause reasons and resumes if started. */\n clearReasons(): void;\n /** Registers a progress tick listener called while ticking. */\n onTick(callback: (remaining: number, fraction: number) => void): () => void;\n}\n\n/**\n * Creates a pausable countdown timer with reference-counted pause reasons.\n *\n * @param duration Total countdown duration in milliseconds.\n * @param onDone Callback fired when countdown reaches zero.\n * @param clock Injectable clock/scheduler (defaults to defaultClock).\n */\nexport function createTimer(\n duration: number,\n onDone: () => void,\n clock: Clock = defaultClock,\n): PausableTimer {\n let total = duration;\n let remMs = duration;\n let startedAt = 0;\n let cancelT: (() => void) | undefined;\n let cancelI: (() => void) | undefined;\n let started = false;\n let done = false;\n\n const reasons = new Map<string, number>();\n const ticks = new Set<(remaining: number, fraction: number) => void>();\n\n const isLive = (): boolean => Number.isFinite(remMs) && remMs > 0;\n const active = (): boolean => started && !reasons.size;\n\n const getRem = (): number =>\n done ? 0 : active() ? Math.max(0, remMs - (clock.now() - startedAt)) : remMs;\n\n const notifyTick = (): void => {\n if (!ticks.size) return;\n const r = getRem();\n const f = total > 0 ? Math.max(0, Math.min(1, r / total)) : 0;\n for (const cb of ticks) {\n try {\n cb(r, f);\n } catch (err) {\n console.error(err);\n }\n }\n };\n\n const stop = (): void => {\n cancelT?.();\n cancelI?.();\n cancelT = cancelI = undefined;\n };\n\n const arm = (): void => {\n stop();\n if (!isLive() || reasons.size || done) return;\n startedAt = clock.now();\n cancelT = clock.setTimeout(() => {\n stop();\n remMs = 0;\n done = true;\n started = false;\n notifyTick();\n onDone();\n }, remMs);\n if (ticks.size) cancelI = clock.setInterval(notifyTick, 50);\n };\n\n return {\n start() {\n if (done || !isLive()) return;\n started = true;\n reasons.clear();\n arm();\n notifyTick();\n },\n pause(reason = 'manual') {\n if (done) return;\n reasons.set(reason, (reasons.get(reason) ?? 0) + 1);\n if (started && reasons.size === 1) {\n remMs = Math.max(0, remMs - (clock.now() - startedAt));\n stop();\n notifyTick();\n }\n },\n resume(reason = 'manual') {\n const c = !done && reasons.get(reason);\n if (!c) return;\n if (c <= 1) reasons.delete(reason);\n else reasons.set(reason, c - 1);\n if (active() && isLive()) {\n arm();\n notifyTick();\n }\n },\n clearReasons() {\n reasons.clear();\n if (started && isLive()) arm();\n },\n add(ms: number) {\n if (done || !Number.isFinite(remMs)) return;\n const live = active();\n remMs = Math.max(1, getRem() + ms);\n total = Math.max(total, remMs);\n if (live) arm();\n notifyTick();\n },\n reset(ms?: number) {\n done = false;\n remMs = total = ms ?? total;\n if (active()) {\n if (isLive()) arm();\n else stop();\n }\n notifyTick();\n },\n cancel() {\n stop();\n ticks.clear();\n started = false;\n done = true;\n remMs = 0;\n },\n remaining: getRem,\n elapsed: () => Math.max(0, total - getRem()),\n isRunning: () => active() && !done && isLive(),\n isPaused: () => reasons.size > 0,\n pausedReasons: () => [...reasons.keys()],\n onTick(cb) {\n ticks.add(cb);\n if (active() && !cancelI) cancelI = clock.setInterval(notifyTick, 50);\n return () => {\n ticks.delete(cb);\n if (!ticks.size && cancelI) {\n cancelI();\n cancelI = undefined;\n }\n };\n },\n };\n}\n","import type { ToastTypeDefinition } from './types';\n\n/** Registry of custom and built-in toast types. */\nexport interface TypeRegistry {\n /**\n * Registers or replaces a toast type.\n * @param name Non-empty type name.\n * @param definition Defaults, icon, color tokens, default duration, ariaLive.\n */\n add(name: string, definition?: ToastTypeDefinition): void;\n /** Removes a type. Returns whether it existed. */\n remove(name: string): boolean;\n /** Looks a type up. */\n get(name: string): ToastTypeDefinition | undefined;\n /** Lists registered custom type names. */\n list(): string[];\n}\n\nconst tDef = (color: string, ariaLive: 'polite' | 'assertive' = 'polite') => ({\n color: `var(--gk-${color})`,\n ariaLive,\n});\n\nconst BUILT_IN_TYPES: Record<string, ToastTypeDefinition> = {\n success: tDef('success'),\n error: tDef('error', 'assertive'),\n warning: tDef('warning', 'assertive'),\n info: tDef('info'),\n loading: { ...tDef('info'), defaults: { duration: 0, dismissible: false } },\n message: tDef('fg'),\n};\n\n/** Creates a type registry. */\nexport function createTypeRegistry(): TypeRegistry {\n const custom = new Map<string, ToastTypeDefinition>();\n\n return {\n add(name, definition = {}) {\n const k = typeof name === 'string' ? name.trim() : '';\n if (!k) throw new TypeError('toastory: invalid type');\n custom.set(k, definition);\n },\n remove: (name) => custom.delete(name),\n get: (name) => custom.get(name) ?? BUILT_IN_TYPES[name],\n list: () => [...custom.keys()],\n };\n}\n","import type { Clock } from './clock';\nimport { defaultClock } from './clock';\nimport type { ConfigStore } from './config';\nimport { createConfigStore } from './config';\nimport { normalizeId } from './ids';\nimport { createTimer } from './timer';\nimport type { PausableTimer } from './timer';\nimport { createTypeRegistry } from './types-registry';\nimport type { TypeRegistry } from './types-registry';\nimport type {\n CloseReason,\n Listener,\n ToastCustomRenderer,\n ToastId,\n ToastOptions,\n ToastPatch,\n ToastRecord,\n Unsubscribe,\n} from './types';\n\nconst safeCall = <A, B>(fn?: (a: A, b: B) => void, a?: A, b?: B): void => {\n try {\n fn?.(a as A, b as B);\n } catch (err) {\n console.error(err);\n }\n};\n\n/** Pause reason used by `startPaused`. */\nexport const MANUAL_PAUSE = 'manual';\n\n/** Options for creating a toast manager / store. */\nexport interface ToastManagerOptions {\n config?: ConfigStore;\n clock?: Clock;\n now?: () => number;\n types?: TypeRegistry;\n}\n\nexport type ToastStoreOptions = ToastManagerOptions;\n\n/** Input for adding a toast. */\nexport interface AddToastInput extends ToastOptions {\n custom?: ToastCustomRenderer;\n}\n\ninterface Entry {\n opts: ToastOptions;\n custom: ToastCustomRenderer | undefined;\n record: ToastRecord;\n timer: PausableTimer;\n dedupeKey: string | undefined;\n exitHandle: (() => void) | undefined;\n reason: CloseReason | undefined;\n flags: number;\n}\n\n/** State container for toasts. Pure logic: no DOM, no framework. */\nexport interface ToastManager {\n add(input: AddToastInput): ToastId;\n update(id: ToastId, patch: ToastPatch): boolean;\n dismiss(id?: ToastId, reason?: CloseReason): void;\n dismissAll(reason?: CloseReason): void;\n pause(id: ToastId | undefined, reason: string): void;\n resume(id: ToastId | undefined, reason: string): void;\n extend(id: ToastId, ms: number): void;\n getRemaining(id: ToastId): number;\n getToasts(): readonly ToastRecord[];\n getHistory(): readonly ToastRecord[];\n clear(): void;\n clearHistory(): void;\n subscribe(listener: Listener): Unsubscribe;\n readonly config: ConfigStore;\n readonly types: TypeRegistry;\n}\n\nexport type ToastStore = ToastManager;\n\nexport function createToastManager(options: ToastManagerOptions = {}): ToastManager {\n const config = options.config ?? createConfigStore();\n const clock = options.clock ?? defaultClock;\n const now = options.now ?? clock.now;\n const types = options.types ?? createTypeRegistry();\n\n const entries = new Map<ToastId, Entry>();\n let order: ToastId[] = [];\n let snapshot: readonly ToastRecord[] = [];\n let history: readonly ToastRecord[] = [];\n const listeners = new Set<Listener>();\n\n const emit = (): void => {\n snapshot = order.map((id) => entries.get(id)?.record).filter(Boolean) as ToastRecord[];\n listeners.forEach((listener) => listener());\n };\n\n const build = (\n id: ToastId,\n opts: ToastOptions,\n previous: ToastRecord | undefined,\n custom: ToastCustomRenderer | undefined,\n ): ToastRecord => {\n const cfg = config.get();\n const type = opts.type ?? 'default';\n const merged: ToastOptions = {\n ...types.get(type)?.defaults,\n ...opts,\n };\n merged.title ??= merged.text1;\n merged.description ??= merged.text2;\n merged.onOpen ??= merged.onShow;\n merged.onClose ??= merged.onHide;\n if (!merged.actions && merged.buttons) {\n merged.actions = merged.buttons.map((b) => ({\n label: b.label,\n onClick: (e: { preventDefault(): void; defaultPrevented: boolean }) =>\n (b.onClick ?? b.onPress)?.(e),\n autoDismiss: b.autoDismiss,\n kind: b.kind,\n }));\n }\n const rawDuration =\n merged.autoHide === false ? 0 : (merged.duration ?? merged.visibilityTime ?? cfg.duration);\n const duration = Number.isFinite(rawDuration) && rawDuration > 0 ? rawDuration : 0;\n const urgent = merged.important || type === 'error';\n const stamp = now();\n\n const record: ToastRecord = {\n ...merged,\n id,\n type,\n duration,\n position: merged.position ?? cfg.position,\n ariaLive: merged.ariaLive ?? (urgent ? 'assertive' : 'polite'),\n role: merged.role ?? (urgent ? 'alert' : 'status'),\n createdAt: previous?.createdAt ?? stamp,\n updatedAt: stamp,\n revision: (previous?.revision ?? -1) + 1,\n timerEpoch: previous?.timerEpoch ?? 0,\n count: previous?.count ?? 1,\n visible: previous?.visible ?? false,\n dismissed: false,\n pausedBy: previous?.pausedBy ?? (cfg.startPaused ? [MANUAL_PAUSE] : []),\n remaining: previous?.remaining ?? (duration || Infinity),\n custom,\n };\n return record;\n };\n\n const remainingOf = (entry: Entry): number => {\n return entry.record.duration === 0 ? Infinity : entry.timer.remaining();\n };\n\n const dedupeKeyOf = (o: ToastOptions): string | undefined => {\n if (o.dedupe === false) return;\n if (typeof o.dedupe === 'string') return o.dedupe;\n const t = o.title ?? o.text1;\n const d = o.description ?? o.text2;\n return typeof t === 'string' || typeof d === 'string'\n ? `${o.type ?? 'default'}|${t ?? ''}|${d ?? ''}`\n : undefined;\n };\n\n const promote = (): void => {\n const { maxVisible } = config.get();\n const counts = new Map<string, number>();\n for (const id of order) {\n const entry = entries.get(id);\n if (!entry || entry.record.dismissed) continue;\n const key = `${entry.record.container ?? ''}|${entry.record.position}`;\n const used = counts.get(key) ?? 0;\n const imp = !!entry.record.important;\n if (used < maxVisible || imp) {\n if (!entry.record.visible) {\n entry.record = { ...entry.record, visible: true };\n if (!entry.record.pausedBy.length && entry.record.duration > 0) entry.timer.start();\n }\n if (!imp) counts.set(key, used + 1);\n } else if (entry.record.visible) {\n entry.record = { ...entry.record, visible: false };\n entry.timer.pause();\n }\n }\n };\n\n const finalize = (entry: Entry): void => {\n entry.exitHandle?.();\n entry.timer.cancel();\n entries.delete(entry.record.id);\n order = order.filter((id) => id !== entry.record.id);\n history = [{ ...entry.record, dismissed: true }, ...history].slice(\n 0,\n config.get().historyLimit,\n );\n promote();\n flushOpened();\n emit();\n if (!(entry.flags & 2)) {\n entry.flags |= 2;\n safeCall(entry.record.onClose, entry.record, entry.reason ?? 'api');\n }\n };\n\n const dismissEntry = (entry: Entry, reason: CloseReason): void => {\n if (entry.record.dismissed) return;\n if (\n entry.record.dismissible === false &&\n (reason === 'user' || reason === 'swipe' || reason === 'click')\n )\n return;\n entry.reason = reason;\n entry.record = {\n ...entry.record,\n dismissed: true,\n remaining: 0,\n revision: entry.record.revision + 1,\n };\n entry.timer.cancel();\n\n if (!(entry.flags & 4) && reason !== 'auto') {\n entry.flags |= 4;\n safeCall(entry.record.onDismiss, entry.record, reason);\n }\n\n promote();\n flushOpened();\n emit();\n\n const exit = config.get().exitDuration;\n if (exit <= 0 || !entry.record.visible) {\n finalize(entry);\n } else {\n entry.exitHandle = clock.setTimeout(() => finalize(entry), exit);\n }\n };\n\n const makeEntry = (id: ToastId, input: AddToastInput): Entry => {\n const { custom, ...opts } = input;\n const record = build(id, opts, undefined, custom);\n const entry: Entry = {\n opts,\n custom,\n record,\n timer: undefined as unknown as PausableTimer,\n dedupeKey: dedupeKeyOf(opts),\n exitHandle: undefined,\n reason: undefined,\n flags: 0,\n };\n entry.timer = createTimer(\n record.duration,\n () => {\n if (!(entry.flags & 8)) {\n entry.flags |= 8;\n safeCall(entry.record.onAutoClose, entry.record);\n }\n dismissEntry(entry, 'auto');\n },\n clock,\n );\n if (record.pausedBy.length) entry.timer.pause();\n return entry;\n };\n\n const restartTimer = (entry: Entry): void => {\n entry.timer.cancel();\n if (entry.record.duration > 0) {\n entry.timer.reset(entry.record.duration);\n if (entry.record.visible && !entry.record.pausedBy.length) entry.timer.start();\n }\n entry.record = {\n ...entry.record,\n timerEpoch: entry.record.timerEpoch + 1,\n remaining: remainingOf(entry),\n };\n };\n\n const flushOpened = (): void => {\n for (const id of order) {\n const entry = entries.get(id);\n if (entry && entry.record.visible && !(entry.flags & 1) && !entry.record.dismissed) {\n entry.flags |= 1;\n safeCall(entry.record.onOpen, entry.record);\n }\n }\n };\n\n const store: ToastManager = {\n config,\n types,\n\n add(input: AddToastInput): ToastId {\n const id = normalizeId(input.id);\n const existing = entries.get(id);\n if (existing && !existing.record.dismissed) {\n const { custom, ...patch } = input;\n store.update(id, patch);\n if (custom) {\n existing.custom = custom;\n existing.record = { ...existing.record, custom };\n emit();\n }\n return id;\n }\n if (existing) finalize(existing);\n\n const key = dedupeKeyOf(input);\n if (key !== undefined) {\n for (const other of entries.values()) {\n if (other.dedupeKey === key && !other.record.dismissed) {\n other.record = {\n ...other.record,\n count: other.record.count + 1,\n revision: other.record.revision + 1,\n updatedAt: now(),\n };\n restartTimer(other);\n emit();\n return other.record.id;\n }\n }\n }\n\n const entry = makeEntry(id, input);\n entries.set(id, entry);\n order = [...order, id];\n promote();\n emit();\n flushOpened();\n return id;\n },\n\n update(id, patch) {\n const entry = entries.get(id);\n if (!entry || entry.record.dismissed) return false;\n const { resetTimer = true, ...rest } = patch;\n const next: ToastOptions = { ...entry.opts };\n if (rest.type !== undefined && rest.type !== entry.record.type) {\n delete next.duration;\n delete next.ariaLive;\n delete next.role;\n delete next.icon;\n }\n let changed = false;\n for (const key in rest) {\n const value = (rest as Record<string, unknown>)[key];\n if (value !== undefined) {\n if ((entry.opts as Record<string, unknown>)[key] !== value) changed = true;\n (next as Record<string, unknown>)[key] = value;\n }\n }\n if (!changed && rest.type === undefined && rest.position === undefined) return true;\n entry.opts = next;\n entry.dedupeKey = dedupeKeyOf(next);\n const rebuilt = build(id, next, entry.record, entry.custom);\n const positionChanged = rebuilt.position !== entry.record.position;\n entry.record = rebuilt;\n if (positionChanged) {\n entry.record = { ...entry.record, visible: false };\n promote();\n }\n if (resetTimer || positionChanged) restartTimer(entry);\n else {\n entry.record = {\n ...entry.record,\n remaining: remainingOf(entry),\n };\n }\n emit();\n flushOpened();\n return true;\n },\n\n dismiss(id, reason = 'api') {\n if (id === undefined) return store.dismissAll(reason);\n const entry = entries.get(id);\n if (entry) dismissEntry(entry, reason);\n },\n\n dismissAll(reason = 'api') {\n for (const entry of entries.values()) dismissEntry(entry, reason);\n },\n\n pause(id, reason) {\n for (const e of id !== undefined ? [entries.get(id)] : entries.values()) {\n if (!e || e.record.pausedBy.includes(reason)) continue;\n e.timer.pause(reason);\n e.record = {\n ...e.record,\n pausedBy: [...e.record.pausedBy, reason],\n remaining: remainingOf(e),\n };\n }\n emit();\n },\n\n resume(id, reason) {\n for (const e of id !== undefined ? [entries.get(id)] : entries.values()) {\n if (!e || !e.record.pausedBy.includes(reason)) continue;\n e.timer.resume(reason);\n const pausedBy = e.record.pausedBy.filter((v) => v !== reason);\n e.record = { ...e.record, pausedBy, remaining: remainingOf(e) };\n if (!pausedBy.length && e.record.visible && e.record.duration > 0) e.timer.start();\n }\n emit();\n },\n\n extend(id, ms) {\n const entry = entries.get(id);\n if (!entry || entry.record.dismissed) return;\n entry.timer.add(ms);\n entry.record = {\n ...entry.record,\n remaining: remainingOf(entry),\n timerEpoch: entry.record.timerEpoch + 1,\n revision: entry.record.revision + 1,\n };\n emit();\n },\n\n getRemaining(id) {\n const entry = entries.get(id);\n return entry ? remainingOf(entry) : 0;\n },\n\n getToasts: () => snapshot,\n getHistory: () => history,\n\n clear() {\n for (const entry of entries.values()) {\n entry.exitHandle?.();\n entry.timer.cancel();\n }\n entries.clear();\n order = [];\n snapshot = [];\n emit();\n },\n\n clearHistory() {\n history = [];\n emit();\n },\n\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n\n return store;\n}\n\nexport const createToastStore = createToastManager;\n","import type { Store } from './types';\n\n/**\n * Creates a tiny observable store with batched microtask updates.\n * Compatible with React `useSyncExternalStore`, Svelte store contract,\n * Vue reactivity, and Angular signals/observables.\n *\n * @param initialValue Initial state value.\n */\nexport function createStore<T>(initialValue: T): Store<T> {\n let state = initialValue;\n const listeners = new Set<((state: T) => void) | (() => void)>();\n let batchScheduled = false;\n\n const notify = (): void => {\n batchScheduled = false;\n const current = state;\n listeners.forEach((fn) => {\n try {\n (fn as (val: T) => void)(current);\n } catch (err) {\n console.error(err);\n }\n });\n };\n\n const scheduleNotify = (immediate: boolean): void => {\n if (immediate) {\n notify();\n return;\n }\n if (batchScheduled) return;\n batchScheduled = true;\n if (typeof queueMicrotask === 'function') queueMicrotask(notify);\n else void Promise.resolve().then(notify);\n };\n\n return {\n getSnapshot: () => state,\n setState: (updater, immediate = false) => {\n const next = typeof updater === 'function' ? (updater as (prev: T) => T)(state) : updater;\n if (Object.is(next, state)) return;\n state = next;\n scheduleNotify(immediate);\n },\n subscribe: (listener) => {\n listeners.add(listener);\n // Svelte store contract: if callback accepts an argument, invoke it synchronously with the snapshot\n if (listener.length > 0) {\n try {\n (listener as (val: T) => void)(state);\n } catch (err) {\n console.error(err);\n }\n }\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\n// Re-exports for backward-compatibility with tests and adapters\nexport { createToastManager, createToastStore, MANUAL_PAUSE } from './toast-manager';\nexport type {\n AddToastInput,\n ToastManager,\n ToastManagerOptions,\n ToastStore,\n ToastStoreOptions,\n} from './toast-manager';\n","import type { DialogOptions, ToastType } from './types';\n\n/** Decides ARIA live politeness level. */\nexport const decideAriaLive = (\n type?: ToastType,\n important?: boolean,\n custom?: 'polite' | 'assertive' | 'off',\n): 'polite' | 'assertive' | 'off' =>\n custom ?? (important || type === 'error' || type === 'warning' ? 'assertive' : 'polite');\n\n/** Decides ARIA role for a toast. */\nexport const decideToastRole = (\n type?: ToastType,\n important?: boolean,\n custom?: 'status' | 'alert' | 'log',\n): 'status' | 'alert' | 'log' => custom ?? (important || type === 'error' ? 'alert' : 'status');\n\n/** Decides ARIA dialog role. */\nexport const decideDialogRole = (o: DialogOptions): 'dialog' | 'alertdialog' =>\n !o.input && (o.tone === 'danger' || o.tone === 'warning') ? 'alertdialog' : 'dialog';\n\n/** Decides which element receives initial focus when a dialog opens. */\nexport const decideFocusTarget = (\n o: DialogOptions,\n): 'confirm' | 'deny' | 'cancel' | 'input' | 'close' | 'none' =>\n o.focusOn ??\n (o.input !== undefined\n ? 'input'\n : o.tone === 'danger' && o.cancelButton?.show !== false\n ? 'cancel'\n : 'confirm');\n\n/** Computes accessible labels and button text with default fallbacks. */\nexport const decideDialogLabels = (\n o: DialogOptions,\n): { confirmLabel: string; denyLabel: string; cancelLabel: string } => ({\n confirmLabel: o.confirmButton?.label ?? 'OK',\n denyLabel: o.denyButton?.label ?? 'No',\n cancelLabel: o.cancelButton?.label ?? 'Cancel',\n});\n","import type { PromiseHandle, PromiseMessages, ToastId, ToastOptions, ToastPatch } from './types';\nimport type { ToastStore } from './toast-manager';\n\nconst toPatch = (m: string | ToastPatch): ToastPatch => (typeof m === 'string' ? { title: m } : m);\n\nconst errorText = (e: unknown): string => (e instanceof Error ? e.message : String(e));\n\n/**\n * Handles async promise toasts: displays loading state, resolves to success or error,\n * calls lifecycle hooks, and provides `unwrap()` returning the raw promise result.\n */\nexport function runPromiseToast<T>(\n store: ToastStore,\n input: Promise<T> | (() => Promise<T>),\n messages: PromiseMessages<T>,\n options: ToastOptions = {},\n): PromiseHandle<T> {\n let promise: Promise<T>;\n try {\n promise = typeof input === 'function' ? input() : input;\n } catch (error) {\n promise = Promise.reject(error);\n }\n\n const { id: requestedId, ...base } = options;\n const loadingPatch = toPatch(messages.loading);\n\n const id: ToastId = store.add({\n ...base,\n id: requestedId,\n ...loadingPatch,\n type: 'loading',\n duration: 0,\n });\n\n const settle = (type: 'success' | 'error', raw: unknown, payload: unknown): void => {\n const desc =\n typeof messages.description === 'function'\n ? messages.description(\n type === 'success'\n ? { status: type, value: payload as T }\n : { status: type, error: payload },\n )\n : messages.description;\n store.update(id, {\n duration: base.duration ?? store.config.get().duration,\n ...toPatch(raw as string | ToastPatch),\n type,\n ...(desc !== undefined ? { description: desc } : {}),\n resetTimer: true,\n });\n };\n\n promise\n .then((value) => {\n if (messages.success === undefined) {\n store.dismiss(id);\n } else {\n settle(\n 'success',\n typeof messages.success === 'function' ? messages.success(value) : messages.success,\n value,\n );\n }\n })\n .catch((error: unknown) => {\n settle(\n 'error',\n messages.error === undefined\n ? errorText(error)\n : typeof messages.error === 'function'\n ? messages.error(error)\n : messages.error,\n error,\n );\n })\n .finally(() => {\n try {\n void messages.finally?.();\n } catch (err) {\n console.error(err);\n }\n });\n\n return {\n id,\n unwrap: () => promise,\n };\n}\n","import { createTimer } from './timer';\nimport type { PausableTimer } from './timer';\nimport type { Listener, Unsubscribe } from './types';\n\nexport type {\n DialogBackdrop,\n DialogButton,\n DialogChoice,\n DialogColumn,\n DialogHandle,\n DialogIcon,\n DialogInputType,\n DialogOptions,\n DialogPosition,\n DialogResult,\n DialogRow,\n DialogTone,\n DismissReason,\n ValidateResult,\n} from './types';\nimport type {\n DialogHandle,\n DialogOptions,\n DialogResult,\n DismissReason,\n ValidateResult,\n} from './types';\n\n/** Observable view of a running dialog. */\nexport interface DialogState {\n /** Current merged options. */\n options: DialogOptions;\n /** Which button is busy. */\n loading: 'confirm' | 'deny' | null;\n /** Inline error. */\n error: string | undefined;\n /** `true` until the dialog resolves. */\n open: boolean;\n /** Increments on every change. */\n revision: number;\n}\n\n/** Drives validation, async hooks, timer and result of one dialog. No DOM. */\nexport interface DialogController {\n /** Control surface shared with user callbacks. */\n readonly handle: DialogHandle;\n /** Current state. */\n getState(): DialogState;\n /** Subscribes to state changes. */\n subscribe(listener: Listener): Unsubscribe;\n /** Renderer supplies the function that reads the current input value. */\n setValueReader(reader: () => unknown): void;\n /** Renderer calls this once mounted. Starts the timer and fires `didOpen`. */\n opened(): void;\n /** Runs confirm or deny. Resolves after hooks have run. */\n submit(kind: 'confirm' | 'deny'): Promise<void>;\n /** Dismisses when allowed. Returns whether the dialog closed. */\n dismiss(reason: DismissReason): boolean;\n}\n\nconst messageOf = (err: unknown): string => (err instanceof Error ? err.message : String(err));\n\n/** Creates the controller for a dialog. */\nexport function createDialogController(initial: DialogOptions): DialogController {\n let options: DialogOptions = { ...initial };\n let loading: DialogState['loading'] = null;\n let error: string | undefined;\n let open = true;\n let revision = 0;\n let timer: PausableTimer | undefined;\n let readValue: () => unknown = () => options.inputValue;\n let resolveResult: (result: DialogResult) => void = () => undefined;\n const listeners = new Set<Listener>();\n const result = new Promise<DialogResult>((resolve) => {\n resolveResult = resolve;\n });\n let state: DialogState = { options, loading, error, open, revision };\n\n const emit = (): void => {\n revision += 1;\n state = { options, loading, error, open, revision };\n for (const listener of [...listeners]) {\n try {\n listener();\n } catch (err) {\n console.error(err);\n }\n }\n };\n\n const finish = (partial: Partial<DialogResult>): void => {\n if (!open) return;\n const final: DialogResult = {\n isConfirmed: false,\n isDenied: false,\n isDismissed: false,\n value: undefined,\n dismiss: undefined,\n ...partial,\n };\n try {\n options.willClose?.(handle, final);\n } catch (err) {\n console.error(err);\n }\n open = false;\n timer?.cancel();\n emit();\n listeners.clear();\n resolveResult(final);\n };\n\n const startTimer = (ms: number): void => {\n timer?.cancel();\n timer = undefined;\n if (ms > 0 && Number.isFinite(ms)) {\n timer = createTimer(ms, () => {\n finish({ isDismissed: true, dismiss: 'timer' });\n });\n timer.start();\n }\n };\n\n const handle: DialogHandle = {\n result,\n close(partial) {\n finish(partial ?? { isDismissed: true, dismiss: 'close' });\n },\n update(patch) {\n if (!open) return;\n options = { ...options, ...patch };\n if (patch.timer !== undefined) startTimer(patch.timer);\n emit();\n },\n setLoading(value) {\n if (!open) return;\n loading = value === true ? 'confirm' : value === false ? null : value;\n emit();\n },\n showError(message) {\n if (!open) return;\n error = message ?? undefined;\n emit();\n },\n timer: {\n pause: () => {\n timer?.pause();\n emit();\n },\n resume: () => {\n timer?.resume();\n emit();\n },\n add: (ms) => {\n if (timer) timer.add(ms);\n else startTimer(Math.max(1, ms));\n emit();\n },\n remaining: () => timer?.remaining() ?? 0,\n paused: () => (timer ? !timer.isRunning() && timer.remaining() > 0 : false),\n },\n };\n\n const controller: DialogController = {\n handle,\n getState: () => state,\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n setValueReader(reader) {\n readValue = reader;\n },\n opened() {\n if (!open) return;\n if (options.timer !== undefined) startTimer(options.timer);\n emit();\n try {\n options.didOpen?.(handle);\n } catch (err) {\n console.error(err);\n }\n },\n async submit(kind) {\n if (!open || loading) return;\n let value = readValue();\n if (error !== undefined) {\n error = undefined;\n emit();\n }\n if (kind === 'confirm' && options.validate) {\n loading = 'confirm';\n emit();\n let msg: ValidateResult;\n try {\n msg = await options.validate(value, handle);\n } catch (t) {\n msg = messageOf(t);\n }\n loading = null;\n if (!open) return;\n if (typeof msg === 'string' && msg) {\n error = msg;\n emit();\n return;\n }\n emit();\n }\n const hook = kind === 'confirm' ? options.preConfirm : options.preDeny;\n if (hook) {\n loading = kind;\n emit();\n let out: unknown;\n try {\n out = await hook(value, handle);\n } catch (t) {\n loading = null;\n if (open) {\n error = messageOf(t);\n emit();\n }\n return;\n }\n loading = null;\n if (!open) return;\n if (out === false) {\n emit();\n return;\n }\n if (out !== undefined) value = out;\n }\n finish({ isConfirmed: kind === 'confirm', isDenied: kind === 'deny', value });\n },\n dismiss(reason) {\n if (!open || (loading && reason !== 'timer')) return false;\n if (reason === 'backdrop' && options.allowOutsideClick === false) return false;\n if (reason === 'esc' && options.allowEscape === false) return false;\n finish({ isDismissed: true, dismiss: reason });\n return true;\n },\n };\n\n return controller;\n}\n\n/** Promise returned by dialog helpers, with the live handle attached. */\nexport type DialogPromise<R = DialogResult> = Promise<R> & { handle: DialogHandle };\n\n/** Result of `ui.steps`. */\nexport interface StepsResult extends DialogResult {\n /** Confirmed values of every completed step. */\n values: unknown[];\n /** Zero based index of the step the flow ended on. */\n step: number;\n}\n\n/**\n * Runs dialogs one after another. From the second step on, the deny button becomes a \"back\"\n * button using `backLabel`, and activating it returns to the previous step.\n * @param steps Options of each step.\n * @param openOrManager Opens one dialog, or a DialogManager instance.\n * @param backLabel Label for the back button.\n */\nexport async function runSteps(\n steps: readonly DialogOptions[],\n open: (options: DialogOptions) => Promise<DialogResult>,\n backLabel = 'Back',\n): Promise<StepsResult> {\n const values: unknown[] = [];\n let index = 0;\n let last: DialogResult = {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true,\n value: undefined,\n dismiss: 'close',\n };\n while (index < steps.length) {\n const base = steps[index];\n if (!base) {\n index += 1;\n continue;\n }\n const options: DialogOptions =\n index > 0\n ? { ...base, denyButton: { show: true, label: backLabel, ...base.denyButton } }\n : base;\n const previous = values[index];\n const restored =\n typeof previous === 'string' || typeof previous === 'number' || typeof previous === 'boolean'\n ? previous\n : options.inputValue;\n last = await open({ ...options, inputValue: restored });\n if (last.isConfirmed) {\n values[index] = last.value;\n index += 1;\n } else if (last.isDenied && index > 0) {\n index -= 1;\n } else {\n return { ...last, values: values.slice(0, index), step: index };\n }\n }\n return { ...last, values, step: Math.max(0, steps.length - 1) };\n}\n","import type { Clock } from './clock';\nimport { defaultClock } from './clock';\nimport { createDialogController } from './dialog';\nimport { createStore } from './store';\nimport type {\n DialogHandle,\n DialogOptions,\n DialogResult,\n DialogState,\n DismissReason,\n Listener,\n Store,\n Unsubscribe,\n} from './types';\n\nexport interface DialogQueueItem {\n id: number;\n options: DialogOptions;\n priority: number;\n resolve: (result: DialogResult) => void;\n controller: HeadlessDialogController;\n}\n\nexport interface HeadlessDialogController {\n readonly handle: DialogHandle;\n getState(): Readonly<DialogState>;\n subscribe(listener: Listener): Unsubscribe;\n setValueReader(reader: () => unknown): void;\n opened(): void;\n submit(action: 'confirm' | 'deny'): Promise<void>;\n dismiss(reason: DismissReason): Promise<void>;\n}\n\nexport interface DialogManager {\n readonly clock: Clock;\n open<T = unknown>(options: DialogOptions): DialogHandle<T>;\n getActive(): HeadlessDialogController | undefined;\n getQueue(): readonly DialogOptions[];\n clear(): void;\n subscribe(listener: Listener): Unsubscribe;\n}\n\nexport function createDialogManager(clock: Clock = defaultClock): DialogManager {\n let counter = 0;\n let activeItem: DialogQueueItem | undefined;\n const queue: DialogQueueItem[] = [];\n const observable: Store<number> = createStore(0);\n\n const notifyChange = (): void => {\n observable.setState((prev) => prev + 1, true);\n };\n\n const processQueue = (): void => {\n if (activeItem || !queue.length) return;\n queue.sort((a, b) => (b.priority !== a.priority ? b.priority - a.priority : a.id - b.id));\n activeItem = queue.shift();\n if (activeItem) {\n notifyChange();\n activeItem.controller.opened();\n }\n };\n\n const openDialog = <T = unknown>(options: DialogOptions): DialogHandle<T> => {\n counter += 1;\n const itemId = counter;\n const priority = options.priority ?? 0;\n\n const base = createDialogController(options);\n const controller: HeadlessDialogController = {\n handle: base.handle,\n getState: base.getState,\n subscribe: base.subscribe,\n setValueReader: base.setValueReader,\n opened: base.opened,\n submit: base.submit,\n dismiss: async (reason: DismissReason) => {\n base.dismiss(reason);\n },\n };\n\n const cleanup = (): void => {\n if (activeItem?.id === itemId) {\n activeItem = undefined;\n notifyChange();\n processQueue();\n }\n };\n base.subscribe(() => {\n if (!base.getState().open) cleanup();\n });\n\n const item: DialogQueueItem = {\n id: itemId,\n options,\n priority,\n resolve: () => undefined,\n controller,\n };\n\n if (!activeItem) {\n activeItem = item;\n controller.opened();\n } else {\n queue.push(item);\n }\n\n return base.handle as DialogHandle<T>;\n };\n\n return {\n clock,\n open: openDialog,\n getActive: () => activeItem?.controller,\n getQueue: () => queue.map((i) => i.options),\n clear() {\n if (activeItem) {\n const current = activeItem;\n activeItem = undefined;\n current.controller.handle.close({ isDismissed: true, dismiss: 'close' });\n }\n for (const item of queue) {\n item.controller.handle.close({ isDismissed: true, dismiss: 'close' });\n }\n queue.length = 0;\n notifyChange();\n },\n subscribe: observable.subscribe,\n };\n}\n\n/**\n * Executes a sequence of dialog steps until completion or dismissal.\n */\nexport async function runSteps(\n steps: readonly DialogOptions[],\n manager: DialogManager,\n): Promise<DialogResult<unknown[]>> {\n const values: unknown[] = [];\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n if (!step) continue;\n const res = await manager.open({\n ...step,\n reverseButtons: step.reverseButtons ?? i > 0,\n confirmButton: { label: i === steps.length - 1 ? 'Finish' : 'Next', ...step.confirmButton },\n cancelButton: { label: 'Cancel', ...step.cancelButton },\n }).result;\n if (!res.isConfirmed) return { ...res, isConfirmed: false, value: values };\n values.push(res.value);\n }\n return {\n isConfirmed: true,\n isDenied: false,\n isDismissed: false,\n value: values,\n dismiss: undefined,\n };\n}\n","import { runPromiseToast } from './promise';\nimport type { ToastStore } from './toast-manager';\nimport type {\n PromiseHandle,\n PromiseMessage,\n PromiseMessages,\n PromiseOutcome,\n Renderable,\n ToastCustomRenderer,\n ToastId,\n ToastOptions,\n ToastPatch,\n ToastRecord,\n} from './types';\nimport type { TypeRegistry } from './types-registry';\n\nexport type { PromiseHandle, PromiseMessage, PromiseMessages, PromiseOutcome };\n\n/** Callable toast function shape shared by all entry points. */\nexport type ToastFn = (message?: Renderable, options?: ToastOptions) => ToastId;\n\n/** The `ui.toast` API. */\nexport interface ToastApi extends ToastFn {\n /** Success toast. */\n success: ToastFn;\n /** Error toast. Uses an assertive live region. */\n error: ToastFn;\n /** Informational toast. */\n info: ToastFn;\n /** Warning toast. */\n warning: ToastFn;\n /** Loading toast with indefinite duration. */\n loading: ToastFn;\n /** Neutral message toast. */\n message: ToastFn;\n /** Custom renderer. */\n custom: (renderer: ToastCustomRenderer, options?: ToastOptions) => ToastId;\n /** Updates an existing toast. */\n update: (id: ToastId, patch: ToastPatch) => boolean;\n /** Dismisses one toast, or all when id is omitted. */\n dismiss: (id?: ToastId) => void;\n /** Dismisses every toast in every region. */\n dismissAll: () => void;\n /** Tracks a promise with loading, success and error states. */\n promise: <T>(\n input: Promise<T> | (() => Promise<T>),\n messages: PromiseMessages<T>,\n options?: ToastOptions,\n ) => PromiseHandle<T>;\n /** Returns a snapshot of active and queued toasts. */\n getToasts: () => readonly ToastRecord[];\n /** Returns closed toasts up to `config.historyLimit`. */\n getHistory: () => readonly ToastRecord[];\n /** Registry of custom toast types. */\n readonly types: TypeRegistry;\n}\n\n/** Builds the `ui.toast` API on top of a store/manager. */\nexport function createToastApi(store: ToastStore): ToastApi {\n const make =\n (type?: ToastOptions['type']): ToastFn =>\n (message, options = {}) => {\n const input: ToastOptions = { type, ...options };\n if (options.type !== undefined) input.type = options.type;\n if (message !== undefined) {\n if (options.title === undefined) input.title = message;\n else if (options.description === undefined) input.description = message;\n }\n return store.add(input);\n };\n\n return Object.assign(make() as ToastApi, {\n success: make('success'),\n error: make('error'),\n info: make('info'),\n warning: make('warning'),\n loading: make('loading'),\n message: make('message'),\n custom: (renderer: ToastCustomRenderer, options?: ToastOptions) =>\n store.add({ ...options, custom: renderer }),\n update: store.update,\n dismiss: store.dismiss,\n dismissAll: store.dismissAll,\n getToasts: store.getToasts,\n getHistory: store.getHistory,\n types: store.types,\n promise: <T>(\n input: Promise<T> | (() => Promise<T>),\n messages: PromiseMessages<T>,\n options?: ToastOptions,\n ) => runPromiseToast(store, input, messages, options),\n });\n}\n","export interface SpringConfig {\n stiffness?: number;\n damping?: number;\n mass?: number;\n}\n\n/** Closed-form damped harmonic oscillator, 0 to 1, zero initial velocity. t in seconds. */\nexport function springPosition(t: number, k: number, c: number, m: number): number {\n const w0 = Math.sqrt(k / m);\n const z = c / (2 * Math.sqrt(k * m));\n if (z < 1) {\n const wd = w0 * Math.sqrt(1 - z * z);\n return 1 - Math.exp(-z * w0 * t) * (Math.cos(wd * t) + ((z * w0) / wd) * Math.sin(wd * t));\n }\n if (z === 1) return 1 - Math.exp(-w0 * t) * (1 + w0 * t);\n const s = w0 * Math.sqrt(z * z - 1);\n const r1 = -z * w0 + s;\n const r2 = -z * w0 - s;\n return 1 - (r2 * Math.exp(r1 * t) - r1 * Math.exp(r2 * t)) / (r2 - r1);\n}\n\n/**\n * Bakes a physics-accurate spring curve into a CSS linear() easing function.\n * Enables 100% native GPU-accelerated spring animations without per-frame JS.\n */\nexport function springEasing(config: SpringConfig = {}): { easing: string; duration: number } {\n const { stiffness = 170, damping = 18, mass = 1 } = config;\n const f = (t: number) => springPosition(t, stiffness, damping, mass);\n const dt = 1 / 120;\n const maxT = 5;\n let settle = 0;\n for (let t = 0; t <= maxT; t += dt) {\n if (Math.abs(1 - f(t)) > 0.001) settle = t;\n }\n settle = Math.max(settle + dt, 0.05);\n const steps = Math.max(2, Math.ceil(settle * 60));\n const pts: string[] = [];\n for (let i = 0; i <= steps; i++) pts.push(String(+f((i / steps) * settle).toFixed(4)));\n pts[steps] = '1';\n return { easing: `linear(${pts.join(',')})`, duration: Math.round(settle * 1000) };\n}\n\n/**\n * Numerical Mass-spring-damper on a scalar value.\n * Retains instantaneous velocity when the target changes, ensuring fluid uninterrupted retargeting.\n */\nexport class Spring {\n v = 0;\n to: number;\n cfg: Required<SpringConfig>;\n\n constructor(\n public x: number,\n cfg: SpringConfig = {},\n ) {\n this.to = x;\n this.cfg = { stiffness: 170, damping: 18, mass: 1, ...cfg };\n }\n\n tune(c: SpringConfig): void {\n Object.assign(this.cfg, c);\n }\n\n /**\n * Advance dt seconds using numerical sub-stepping (h = 1/240) for high stability.\n * Returns true while the spring is still in motion, false when settled at rest.\n */\n step(dt: number): boolean {\n const { stiffness: k, damping: c, mass: m } = this.cfg;\n const h = 1 / 240;\n for (let t = 0; t < dt; t += h) {\n this.v += ((-k * (this.x - this.to) - c * this.v) / m) * h;\n this.x += this.v * h;\n }\n if (Math.abs(this.v) < 0.05 && Math.abs(this.x - this.to) < 0.05) {\n this.x = this.to;\n this.v = 0;\n return false;\n }\n return true;\n }\n}\n\nlet tasks: Set<(dt: number) => boolean> | undefined;\nlet raf = 0;\nlet last = 0;\n\nfunction getRaf(): ((cb: (time: number) => void) => number) | undefined {\n return typeof globalThis !== 'undefined' && 'requestAnimationFrame' in globalThis\n ? (globalThis as unknown as { requestAnimationFrame: (cb: (time: number) => void) => number })\n .requestAnimationFrame\n : undefined;\n}\n\nfunction tick(now: number): void {\n const dt = Math.min(0.1, (now - last) / 1000);\n last = now;\n if (tasks) {\n for (const t of tasks) if (!t(dt)) tasks.delete(t);\n const r = getRaf();\n raf = tasks.size && r ? r(tick) : 0;\n } else raf = 0;\n}\n\n/** Runs a spring task every frame until it returns false. Fully safe in Node and SSR environments. */\nexport function runSpringTask(task: (dt: number) => boolean): void {\n const r = getRaf();\n if (!r) return;\n (tasks ??= new Set()).add(task);\n if (!raf) {\n last = typeof performance !== 'undefined' ? performance.now() : Date.now();\n raf = r(tick);\n }\n}\n","export { defaultClock } from './clock';\nexport type { Clock } from './clock';\n\nexport { nextId, normalizeId, resetIdCounter } from './ids';\n\nexport { createStore } from './store';\nexport type { Store } from './types';\n\nexport { createTimer } from './timer';\nexport type { PausableTimer } from './timer';\n\nexport { createTypeRegistry } from './types-registry';\nexport type { TypeRegistry } from './types-registry';\n\nexport {\n decideAriaLive,\n decideDialogLabels,\n decideDialogRole,\n decideFocusTarget,\n decideToastRole,\n} from './a11y-rules';\n\nexport { createConfigStore, DEFAULT_CONFIG, resolvePrecedence } from './config';\nexport type { ConfigStore } from './config';\n\nexport { createToastManager, createToastStore, MANUAL_PAUSE } from './toast-manager';\nexport type { AddToastInput, ToastManager, ToastManagerOptions, ToastStore } from './toast-manager';\n\nexport { runPromiseToast } from './promise';\n\nexport { createDialogManager } from './dialog-manager';\nexport type { DialogManager, DialogQueueItem, HeadlessDialogController } from './dialog-manager';\n\nexport { createDialogController, runSteps } from './dialog';\nexport type { DialogController, DialogPromise, StepsResult } from './dialog';\n\nexport { createToastApi } from './toast-api';\nexport type {\n PromiseHandle,\n PromiseMessage,\n PromiseMessages,\n PromiseOutcome,\n ToastApi,\n ToastFn,\n} from './toast-api';\n\nexport { springEasing, Spring, springPosition, runSpringTask } from './spring';\nexport type { SpringConfig } from './spring';\n\nexport type * from './types';\n\nimport type { Clock } from './clock';\nimport { defaultClock } from './clock';\nimport type { ConfigStore } from './config';\nimport { createConfigStore } from './config';\nimport { runSteps } from './dialog';\nimport type { StepsResult } from './dialog';\nimport { createDialogManager } from './dialog-manager';\nimport type { DialogManager } from './dialog-manager';\nimport { createToastManager } from './toast-manager';\nimport type { ToastStore } from './toast-manager';\nimport { createToastApi } from './toast-api';\nimport type { ToastApi } from './toast-api';\nimport type {\n BottomSheetHandle,\n BottomSheetOptions,\n DialogHandle,\n DialogOptions,\n DialogResult,\n GlazeConfig,\n LoadingHandle,\n LoadingOptions,\n SheetOptions,\n ToastRecord,\n} from './types';\n\n/**\n * Renderer interface for bridging the framework-agnostic core to UI adapters.\n * If a call happens before a renderer is registered, it queues and replays upon registration.\n */\nexport interface Renderer {\n openDialog?(options: DialogOptions, handle: DialogHandle): Promise<DialogResult> | undefined;\n openSheet?(options: SheetOptions): Promise<DialogResult>;\n openBottomSheet?(options: BottomSheetOptions): BottomSheetHandle;\n openLoading?(options: LoadingOptions): LoadingHandle;\n mountToast?(record: ToastRecord): void;\n}\n\n/** Complete framework-agnostic UI feedback toolkit. */\nexport interface CoreUI {\n /** Toast notifications API. */\n readonly toast: ToastApi;\n /** Global configuration store. */\n readonly config: ConfigStore;\n /** Toast state manager. */\n readonly toastStore: ToastStore;\n /** Headless dialog manager. */\n readonly dialogManager: DialogManager;\n\n /** Opens a confirm dialog. */\n confirm(options: DialogOptions | string): Promise<DialogResult>;\n /** Opens an informational alert dialog. */\n alert(options: DialogOptions | string): Promise<DialogResult>;\n /** Opens a prompt dialog for user text/value input. */\n prompt(options: DialogOptions | string): Promise<DialogResult>;\n /** Runs a multi-step dialog sequence. */\n steps(steps: readonly DialogOptions[], backLabel?: string): Promise<StepsResult>;\n /** Opens an action sheet. */\n sheet(options: SheetOptions): Promise<DialogResult>;\n /** Opens a bottom sheet. */\n bottomSheet(options: BottomSheetOptions): BottomSheetHandle;\n /** Opens a loading overlay. */\n loading(options?: LoadingOptions | string): LoadingHandle;\n\n /** Merges global configuration. */\n configure(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;\n /** Returns the current configuration snapshot. */\n getConfig(): Readonly<GlazeConfig>;\n /** Clears all active toasts and dialogs. */\n clear(): void;\n\n /** Registers a concrete UI renderer, replaying any calls queued during hydration. */\n registerRenderer(renderer: Renderer): void;\n /** Returns the active renderer if registered. */\n getRenderer(): Renderer | undefined;\n}\n\nexport interface CreateUIOptions {\n config?: ConfigStore;\n clock?: Clock;\n}\n\n/**\n * Creates an isolated, framework-agnostic CoreUI instance.\n * Useful for multi-tenant applications, microfrontends, and isolated tests.\n */\nexport function createUI(options: CreateUIOptions = {}): CoreUI {\n const clock = options.clock ?? defaultClock;\n const config = options.config ?? createConfigStore();\n const toastStore = createToastManager({ config, clock });\n const toast = createToastApi(toastStore);\n const dialogManager = createDialogManager(clock);\n\n let renderer: Renderer | undefined;\n const q: (() => void)[] = [];\n const toOpts = (o: DialogOptions | string): DialogOptions =>\n typeof o === 'string' ? { title: o } : { ...o };\n\n const runDlg = (m: DialogOptions): Promise<DialogResult> => {\n const h = dialogManager.open(m);\n if (renderer?.openDialog) void renderer.openDialog(m, h);\n else q.push(() => void renderer?.openDialog?.(m, h));\n return h.result;\n };\n\n const DISMISSED: DialogResult = {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true,\n value: undefined,\n dismiss: 'close',\n };\n\n const ui: CoreUI = {\n toast,\n config,\n toastStore,\n dialogManager,\n confirm: (o) =>\n runDlg({ confirmButton: { show: true }, cancelButton: { show: true }, ...toOpts(o) }),\n alert: (o) =>\n runDlg({\n confirmButton: { show: true },\n cancelButton: { show: false },\n denyButton: { show: false },\n ...toOpts(o),\n }),\n prompt: (o) =>\n runDlg({\n input: 'text',\n confirmButton: { show: true },\n cancelButton: { show: true },\n ...toOpts(o),\n }),\n steps: (list, back = 'Back') => runSteps(list, (s) => ui.confirm(s), back),\n sheet: (o) =>\n renderer?.openSheet\n ? renderer.openSheet(o)\n : new Promise((res) => {\n q.push(() =>\n renderer?.openSheet ? void renderer.openSheet(o).then(res) : res(DISMISSED),\n );\n }),\n bottomSheet(o) {\n if (renderer?.openBottomSheet) return renderer.openBottomSheet(o);\n let live: BottomSheetHandle | undefined;\n return {\n body: undefined,\n close: (r) => live?.close(r),\n snapTo: (i) => live?.snapTo(i),\n update: (p) => live?.update(p),\n result: new Promise((res) => {\n q.push(() =>\n renderer?.openBottomSheet\n ? void (live = renderer.openBottomSheet(o)).result.then(res)\n : res(DISMISSED),\n );\n }),\n };\n },\n loading(loadingOpts = {}) {\n const o = typeof loadingOpts === 'string' ? { text: loadingOpts } : loadingOpts;\n if (renderer?.openLoading) return renderer.openLoading(o);\n let live: LoadingHandle | undefined, done: () => void;\n const closed = new Promise<void>((res) => {\n done = res;\n });\n q.push(() =>\n renderer?.openLoading ? void (live = renderer.openLoading(o)).closed.then(done) : done(),\n );\n return {\n update: (p) => live?.update(p),\n close: () => {\n live?.close();\n done();\n },\n closed,\n };\n },\n configure: (p) => config.set(p),\n getConfig: () => config.get(),\n clear() {\n toastStore.clear();\n dialogManager.clear();\n q.length = 0;\n },\n registerRenderer(r) {\n renderer = r;\n while (q.length) q.shift()?.();\n },\n getRenderer: () => renderer,\n };\n\n return ui;\n}\n\nlet defaultUI: CoreUI | undefined;\nconst def = (): CoreUI => (defaultUI ??= createUI());\n\n/** Default singleton instance of the CoreUI toolkit. */\nexport const ui: CoreUI = {\n get toast() {\n return def().toast;\n },\n get config() {\n return def().config;\n },\n get toastStore() {\n return def().toastStore;\n },\n get dialogManager() {\n return def().dialogManager;\n },\n confirm: (o) => def().confirm(o),\n alert: (o) => def().alert(o),\n prompt: (o) => def().prompt(o),\n steps: (s, b) => def().steps(s, b),\n sheet: (o) => def().sheet(o),\n bottomSheet: (o) => def().bottomSheet(o),\n loading: (o) => def().loading(o),\n configure: (p) => def().configure(p),\n getConfig: () => def().getConfig(),\n clear: () => def().clear(),\n registerRenderer: (r) => def().registerRenderer(r),\n getRenderer: () => def().getRenderer(),\n};\n\n/** Registers the renderer with the default UI instance. */\nexport function registerRenderer(renderer: Renderer): void {\n def().registerRenderer(renderer);\n}\n\n/** Backward-compatible ToastEngine interface. */\nexport interface ToastEngine {\n store: ToastStore;\n toast: ToastApi;\n}\n\n/** Backward-compatible factory for ToastEngine. */\nexport function createToastEngine(options: { config?: ConfigStore } = {}): ToastEngine {\n const store = createToastManager({ config: options.config });\n return { store, toast: createToastApi(store) };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { t as DialogResult, o as DialogHandle, r as DialogOptions, L as Listener, ar as Unsubscribe, z as DismissReason } from './toast-api-C5nqvDgA.cjs';
1
+ import { t as DialogResult, o as DialogHandle, r as DialogOptions, L as Listener, as as Unsubscribe, z as DismissReason } from './toast-api-C1QdlvIi.cjs';
2
2
 
3
3
  /** Observable view of a running dialog. */
4
4
  interface DialogState {
@@ -1,4 +1,4 @@
1
- import { t as DialogResult, o as DialogHandle, r as DialogOptions, L as Listener, ar as Unsubscribe, z as DismissReason } from './toast-api-C5nqvDgA.js';
1
+ import { t as DialogResult, o as DialogHandle, r as DialogOptions, L as Listener, as as Unsubscribe, z as DismissReason } from './toast-api-C1QdlvIi.js';
2
2
 
3
3
  /** Observable view of a running dialog. */
4
4
  interface DialogState {