@1771technologies/lytenyte-pro
Version:
Blazingly fast headless React data grid with 100s of features.
71 lines (70 loc) • 3.07 kB
TypeScript
import type { DataRequest, DataResponse, DataResponsePinned, RowGroup, RowLeaf, RowNode } from "../+types.js";
import type { LeafOrParent, TreeRootAndApi } from "./async-tree/+types.async-tree.js";
import { RangeTree } from "./range-tree/range-tree.js";
type DataFetcher = (req: DataRequest[], expansions: Record<string, boolean | undefined>, pivotExpansions: Record<string, boolean | undefined>) => Promise<(DataResponse | DataResponsePinned)[]>;
export interface FlatView {
readonly tree: TreeRootAndApi<RowGroup, RowLeaf>;
readonly top: number;
readonly center: number;
readonly bottom: number;
readonly rangeTree: RangeTree;
readonly rowIndexToRow: Map<number, RowNode<any>>;
readonly rowIdToRow: Map<string, RowNode<any>>;
readonly rowIdToRowIndex: Map<string, number>;
readonly rowIdToTreeNode: Map<string, LeafOrParent<RowGroup, RowLeaf>>;
readonly loading: Set<number>;
readonly loadingGroup: Set<number>;
readonly errored: Map<number, {
error: unknown;
request?: DataRequest;
}>;
readonly erroredGroup: Map<number, {
error: unknown;
request: DataRequest;
}>;
readonly seenRequests: Set<string>;
}
export interface ServerDataConstructorParams {
readonly blocksize: number;
readonly pivotMode: boolean;
readonly expansions: Record<string, boolean | undefined>;
readonly pivotExpansions: Record<string, boolean | undefined>;
readonly onResetLoadBegin: () => void;
readonly onResetLoadError: (error: unknown) => void;
readonly onResetLoadEnd: () => void;
readonly onFlatten: (r: FlatView) => void;
readonly onInvalidate: () => void;
readonly defaultExpansion: boolean | number;
}
export declare class ServerData {
#private;
constructor({ blocksize, pivotMode, pivotExpansions, expansions, onResetLoadBegin, onResetLoadEnd, onResetLoadError, onFlatten, onInvalidate, defaultExpansion, }: ServerDataConstructorParams);
set dataFetcher(d: DataFetcher);
set pivotMode(b: boolean);
set expansions(d: Record<string, boolean | undefined>);
set pivotExpansions(d: Record<string, boolean | undefined>);
set defaultExpansion(d: boolean | number);
set rowViewBounds(viewBounds: [start: number, end: number]);
reset: () => Promise<void>;
requestForGroup(i: number): DataRequest | null;
handleRequests: (requests: DataRequest[], opts?: {
onError?: (e: unknown) => void;
onSuccess?: () => void;
skipState?: boolean;
}) => Promise<void>;
handleResponses: (data: (DataResponse | DataResponsePinned)[], beforeOnFlat?: () => void) => void;
requestForNextSlice(req: DataRequest): {
id: string;
path: (string | null)[];
start: number;
end: number;
rowStartIndex: number;
rowEndIndex: number;
} | null;
requestsForView(start?: number, end?: number): DataRequest[];
handleViewBoundsChange(): Promise<void>;
retry(): void;
updateRow(id: string, data: any): void;
flatten: () => void;
}
export {};