@humanspeak/svelte-headless-table
Version:
A powerful, headless table library for Svelte that provides complete control over table UI while handling complex data operations like sorting, filtering, pagination, grouping, and row expansion. Build custom, accessible data tables with zero styling opin
38 lines (37 loc) • 1.63 kB
TypeScript
import { type Readable, type Writable } from 'svelte/store';
export type ReadOrWritable<T> = Readable<T> | Writable<T>;
export declare const isReadable: <T>(value: any) => value is Readable<T>;
export declare const isWritable: <T>(store: any) => store is Writable<T>;
export type WritableKeys<T> = {
[K in keyof T]: T[K] extends undefined ? Writable<T[K] | undefined> : Writable<T[K]>;
};
export type ReadableKeys<T> = {
[K in keyof T]: T[K] extends undefined ? Readable<T[K] | undefined> : Readable<T[K]>;
};
export type ReadOrWritableKeys<T> = {
[K in keyof T]: T[K] extends undefined ? ReadOrWritable<T[K] | undefined> : ReadOrWritable<T[K]>;
};
export declare const Undefined: Readable<undefined>;
export declare const UndefinedAs: <T>() => Readable<T>;
export interface ToggleOptions {
clearOthers?: boolean;
}
export interface ArraySetStoreOptions<T> {
isEqual?: (a: T, b: T) => boolean;
}
export interface ArraySetStore<T> extends Writable<T[]> {
toggle: (item: T, options?: ToggleOptions) => void;
add: (item: T) => void;
remove: (item: T) => void;
clear: () => void;
}
export declare const arraySetStore: <T>(initial?: T[], { isEqual }?: ArraySetStoreOptions<T>) => ArraySetStore<T>;
export interface RecordSetStore<T extends string | number> extends Writable<Record<T, boolean>> {
toggle: (item: T) => void;
add: (item: T) => void;
addAll: (items: T[]) => void;
remove: (item: T) => void;
removeAll: (items: T[]) => void;
clear: () => void;
}
export declare const recordSetStore: <T extends string | number>(initial?: Record<T, boolean>) => RecordSetStore<T>;