import { createContext, createSelector, createSignal, useContext, type Accessor, } from "solid-js"; export type ItemSelectionState<T> = [(value: T) => boolean, (value: T) => void]; const ItemSelectionContext = /* @__PURE__ */ createContext< ItemSelectionState<any> >([() => false, () => undefined]); export function createSingluarItemSelection<T extends {}>( intial?: T, ): readonly [Accessor<T | undefined>, ItemSelectionState<T | undefined>] { const [value, setValue] = createSignal<T | undefined>(intial); const select = createSelector(value, (a, b) => typeof b !== "undefined" ? a === b : false, ); const toggle = (v: T | undefined) => { setValue((o) => (o ? undefined : v)); }; return [value, [select, toggle]]; } export function useItemSelection() { return useContext(ItemSelectionContext); } export default ItemSelectionContext.Provider;