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