import { getContext, setContext } from "svelte"
import { writable, type Writable } from "svelte/store"

export interface SwitchController {
    set(id: number, state: boolean): void
    getStore(id: number): Writable<boolean>
}


const contextKey = new Object()

export function setSwitchControllerContext(ctx: SwitchController) {
    setContext(contextKey, ctx)
}


export function getSwitchControllerContext(): SwitchController {
    return getContext(contextKey)
}

export function mockSwitchController(count: number): SwitchController {
    const swtichSet: Writable<boolean>[] = [...Array(count).keys()].map(_ => writable<boolean>(false))
    return {
        set(id: number, state: boolean) {
            swtichSet[id].set(state)
        },
        getStore(id: number): Writable<boolean> {
            return swtichSet[id]
        },
    }
}