import type { SvelteSet } from "svelte/reactivity"; export type Getter = () => T; export type MaybeGetter = T | Getter; export type Setter = (value: T) => void; export type Extracted = T extends MaybeGetter ? U : T extends Getter ? U : T; export type IterableProp = SvelteSet | MaybeGetter | undefined>; export type WithoutGetters> = { [K in keyof Obj]: Obj[K] extends MaybeGetter ? T : Obj[K]; }; export type ComponentProps> = Omit, `on${string}Change`>; /** * If `Multiple` is true, it will be an `IterableProp`, which is a `SvelteSet` or a getter that returns an iterable. * If `Multiple` is false, it will be a `MaybeGetter`, which is a value or a getter that returns a value. * @template T - The type of values that can be selected * @template Multiple - Boolean flag indicating if multiple selection is enabled */ export type MaybeMultiple = Multiple extends true ? IterableProp : MaybeGetter;