UNPKG

@channel-state/svelte

Version:

Svelte stores for channel-state, providing seamless integration with Svelte applications for cross-context state management.

145 lines (137 loc) 4.12 kB
var ChannelState = (function (exports) { 'use strict'; var noop = () => { }; function safe_not_equal(a, b) { return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function"; } // ../../node_modules/.pnpm/esm-env@1.2.2/node_modules/esm-env/dev-fallback.js var node_env = globalThis.process?.env?.NODE_ENV; var dev_fallback_default = node_env && !node_env.toLowerCase().startsWith("prod"); function rune_outside_svelte(rune) { if (dev_fallback_default) { const error = new Error(`rune_outside_svelte The \`${rune}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files https://svelte.dev/e/rune_outside_svelte`); error.name = "Svelte error"; throw error; } else { throw new Error(`https://svelte.dev/e/rune_outside_svelte`); } } // ../../node_modules/.pnpm/svelte@5.34.8/node_modules/svelte/src/index-client.js if (dev_fallback_default) { let throw_rune_error = function(rune) { if (!(rune in globalThis)) { let value; Object.defineProperty(globalThis, rune, { configurable: true, // eslint-disable-next-line getter-return get: () => { if (value !== void 0) { return value; } rune_outside_svelte(rune); }, set: (v) => { value = v; } }); } }; throw_rune_error("$state"); throw_rune_error("$effect"); throw_rune_error("$derived"); throw_rune_error("$inspect"); throw_rune_error("$props"); throw_rune_error("$bindable"); } // ../../node_modules/.pnpm/svelte@5.34.8/node_modules/svelte/src/store/shared/index.js var subscriber_queue = []; function readable(value, start) { return { subscribe: writable(value, start).subscribe }; } function writable(value, start = noop) { let stop = null; const subscribers = /* @__PURE__ */ new Set(); function set2(new_value) { if (safe_not_equal(value, new_value)) { value = new_value; if (stop) { const run_queue = !subscriber_queue.length; for (const subscriber of subscribers) { subscriber[1](); subscriber_queue.push(subscriber, value); } if (run_queue) { for (let i = 0; i < subscriber_queue.length; i += 2) { subscriber_queue[i][0](subscriber_queue[i + 1]); } subscriber_queue.length = 0; } } } } function update2(fn) { set2(fn( /** @type {T} */ value )); } function subscribe(run2, invalidate = noop) { const subscriber = [run2, invalidate]; subscribers.add(subscriber); if (subscribers.size === 1) { stop = start(set2, update2) || noop; } run2( /** @type {T} */ value ); return () => { subscribers.delete(subscriber); if (subscribers.size === 0 && stop) { stop(); stop = null; } }; } return { set: set2, update: update2, subscribe }; } // src/index.ts function useChannelState(channelStore) { const svelteStore = writable(channelStore.get(), (set2) => { const unsubscribeChannelStore = channelStore.subscribe((value) => { set2(value); }); return () => { unsubscribeChannelStore(); }; }); return { subscribe: svelteStore.subscribe, set: (value) => { channelStore.set(value); }, update: svelteStore.update }; } function useChannelStatus(channelStore) { const status = readable(channelStore.status, (set2) => { const unsubscribe = channelStore.subscribeStatus((newStatus) => { set2(newStatus); }); return () => { unsubscribe(); }; }); return status; } exports.useChannelState = useChannelState; exports.useChannelStatus = useChannelStatus; return exports; })({}); //# sourceMappingURL=index.global.js.map //# sourceMappingURL=index.global.js.map