const require_rolldown_runtime = require('../rolldown-runtime.cjs'); const __vueuse_shared = require_rolldown_runtime.__toESM(require("@vueuse/shared")); //#region src/Toast/createToastManager.ts const TOAST_MANAGER_SUBSCRIBE = Symbol("ToastManagerSubscribe"); let count = 0; function generateToastId() { count = (count + 1) % Number.MAX_SAFE_INTEGER; return `reka-toast-${count}`; } function resolvePromiseState(state, value) { const resolved = typeof state === "function" ? state(value) : state; return typeof resolved === "string" ? { description: resolved } : resolved; } function runToastPromise(promise, options, add, update) { const loading = typeof options.loading === "string" ? { description: options.loading } : options.loading; const id = add({ ...loading, status: "loading" }); return promise.then((value) => { update(id, { ...resolvePromiseState(options.success, value), status: "success" }); return value; }, (error) => { update(id, { ...resolvePromiseState(options.error, error), status: "error" }); throw error; }); } /** * Creates a toast manager that can add toasts from anywhere, including outside components. * Pass it to the `toastManager` prop of `ToastProvider`. */ function createToastManager() { const listeners = /* @__PURE__ */ new Set(); let pending = []; function emit(event) { if (listeners.size === 0) { if (__vueuse_shared.isClient) pending.push(event); return; } listeners.forEach((listener) => listener(event)); } const manager = { add(options) { const id = options.id ?? generateToastId(); emit({ action: "add", options: { ...options, id } }); return id; }, close(id) { emit({ action: "close", id }); }, update(id, updates) { emit({ action: "update", id, updates }); }, promise(promise, options) { return runToastPromise(promise, options, manager.add, manager.update); } }; return { ...manager, [TOAST_MANAGER_SUBSCRIBE](listener) { listeners.add(listener); const queued = pending; pending = []; queued.forEach(listener); return () => { listeners.delete(listener); }; } }; } //#endregion Object.defineProperty(exports, 'TOAST_MANAGER_SUBSCRIBE', { enumerable: true, get: function () { return TOAST_MANAGER_SUBSCRIBE; } }); Object.defineProperty(exports, 'createToastManager', { enumerable: true, get: function () { return createToastManager; } }); Object.defineProperty(exports, 'generateToastId', { enumerable: true, get: function () { return generateToastId; } }); Object.defineProperty(exports, 'runToastPromise', { enumerable: true, get: function () { return runToastPromise; } }); //# sourceMappingURL=createToastManager.cjs.map