@1771technologies/lytenyte-pro
Version:
Blazingly fast headless React data grid with 100s of features.
52 lines (51 loc) • 2.7 kB
TypeScript
import type { DataRequest, DataResponse, DataResponsePinned, QueryFnParams } from "./types";
import { type Piece } from "@1771technologies/lytenyte-core/internal";
import { type RowGroup, type RowLeaf, type RowNode, type RowSelectionState, type RowSource } from "@1771technologies/lytenyte-shared";
export interface RowSourceServer<T> extends RowSource<T> {
readonly isLoading: Piece<boolean>;
readonly loadingError: Piece<unknown>;
readonly requestsForView: Piece<DataRequest[]>;
readonly seenRequests: Set<string>;
readonly retry: () => void;
readonly requestForGroup: (row: RowGroup | number) => DataRequest | null;
readonly requestForNextSlice: (currentRequest: DataRequest) => DataRequest | null;
readonly refresh: (onSuccess?: () => void, onError?: (e: unknown) => void) => void;
readonly pushResponses: (req: (DataResponse | DataResponsePinned)[]) => void;
readonly pushRequests: (req: DataRequest[], onSuccess?: () => void, onError?: (e: unknown) => void) => void;
readonly reset: () => void;
readonly rowAdd: (rows: RowLeaf<T>[], placement?: "start" | "end") => void;
readonly rowDelete: (rows: RowNode<T>[]) => void;
readonly rowUpdate: (rows: Map<RowNode<T>, T>) => void;
}
export interface UseServerDataSourceParams<T = any, K extends unknown[] = any[]> {
readonly queryFn: (params: QueryFnParams<K>) => Promise<(DataResponse | DataResponsePinned)[]>;
readonly queryKey: K;
readonly blockSize?: number;
readonly rowGroupExpansions?: {
[rowId: string]: boolean | undefined;
};
readonly rowGroupDefaultExpansion?: boolean | number;
readonly onRowGroupExpansionChange?: (state: Record<string, boolean | undefined>) => void;
readonly rowsIsolatedSelection?: boolean;
readonly rowSelection?: RowSelectionState;
readonly rowSelectionIdUniverseAdditions?: {
readonly id: string;
readonly root: boolean;
}[];
readonly rowSelectionIdUniverseSubtractions?: Set<string>;
readonly onRowSelectionChange?: (state: RowSelectionState) => void;
readonly rowSelectKey?: unknown[];
readonly hasRowBranches?: "infer" | boolean;
readonly rowUpdateOptimistically?: boolean;
readonly onRowDataChange?: (params: {
readonly rows: Map<RowNode<T>, T>;
}) => Promise<void>;
readonly onRowsDeleted?: (params: {
readonly rows: RowNode<T>[];
}) => Promise<void>;
readonly onRowsAdded?: (params: {
readonly rows: RowLeaf<T>[];
placement: "start" | "end";
}) => Promise<void>;
}
export declare function useServerDataSource<T, K extends unknown[] = unknown[]>(props: UseServerDataSourceParams<T, K>): RowSourceServer<T>;