@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
JavaScript
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