diff --git a/src/svelte-interface/components/Switch.svelte b/src/svelte-interface/components/Switch.svelte index a053fbb0..645c63ff 100644 --- a/src/svelte-interface/components/Switch.svelte +++ b/src/svelte-interface/components/Switch.svelte @@ -1,10 +1,9 @@ diff --git a/src/svelte-interface/utils/standalone.svelte.ts b/src/svelte-interface/utils/standalone.svelte.ts index 163bb8d7..b5274a7e 100644 --- a/src/svelte-interface/utils/standalone.svelte.ts +++ b/src/svelte-interface/utils/standalone.svelte.ts @@ -1,16 +1,36 @@ -export function createStandalone() { - let standalone = $state(false); +import type { Subscriber, Unsubscriber } from "svelte/store"; - function setStandalone(value: boolean) { - standalone = value; +export class Standalone { + private static instance: Standalone; + private _standalone = $state(false); + private subscribers = new Set>(); + + private constructor() {} + + public static getInstance(): Standalone { + if (!Standalone.instance) { + Standalone.instance = new Standalone(); + } + return Standalone.instance; } - return { - get standalone() { - return standalone; - }, - setStandalone - }; + public setStandalone(value: boolean) { + this._standalone = value; + this.subscribers.forEach(subscriber => subscriber(value)); + } + + public get standalone() { + return this._standalone; + } + + public subscribe(run: Subscriber): Unsubscriber { + this.subscribers.add(run); + run(this._standalone); + + return () => { + this.subscribers.delete(run); + }; + } } -export const standalone = createStandalone(); \ No newline at end of file +export const standalone = Standalone.getInstance(); \ No newline at end of file