@1771technologies/lytenyte-pro
Version:
Blazingly fast headless React data grid with 100s of features.
74 lines (73 loc) • 3.03 kB
TypeScript
import { type RowNode } from "@1771technologies/lytenyte-shared";
import type { LeafOrParent, TreeLeaf, TreeRootAndApi } from "./async-tree/types.js";
import { RangeTree } from "./range-tree/range-tree.js";
import type { DataRequest, DataResponse, DataResponsePinned } from "./types.js";
export type DataFetcher = (req: DataRequest[], expansions: Record<string, boolean | undefined>) => Promise<(DataResponse | DataResponsePinned)[]>;
export interface FlatView {
readonly tree: TreeRootAndApi;
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>;
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 maxDepth: number;
readonly seenRequests: Set<string>;
}
export interface ServerDataConstructorParams {
readonly blocksize: number;
readonly expansions: 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;
tree: TreeRootAndApi;
flat: FlatView;
constructor({ blocksize, expansions, onResetLoadBegin, onResetLoadEnd, onResetLoadError, onFlatten, onInvalidate, defaultExpansion, }: ServerDataConstructorParams);
set dataFetcher(d: DataFetcher);
set expansions(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;
addBefore(leafs: TreeLeaf[]): void;
addAfter(leafs: TreeLeaf[]): void;
deleteBefore(leafs: string[]): void;
deleteAfter(leafs: string[]): void;
updateRow(id: string, data: any, asOf?: number): void;
flatten: () => void;
}