UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

52 lines (51 loc) 2.7 kB
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>;