@sheetxl/models
Version:
Models - A Headless javascript spreadsheet library.
55 lines • 2.15 kB
TypeScript
import { BBox } from 'rbush';
import { CellRangeCoords, CartesianDirection } from "@sheetxl/common";
/**
* A value is not required
*/
export interface RangeCoordsRTreeNode<V = any> extends CellRangeCoords {
value?: V;
}
export type RangeVisitorResults<V = any> = {
update?: RangeCoordsRTreeNode<V>;
delete?: boolean;
break?: boolean;
} | void;
export type RangeVisitor<V = any> = (range: RangeCoordsRTreeNode<V>) => RangeVisitorResults<V>;
/** handler for shifting ranges */
export type RangeShiftProcessor<T> = (after: RangeCoordsRTreeNode<T>, before: RangeCoordsRTreeNode<T>, intersect: CellRangeCoords, isPartial: boolean, isColShift: boolean, shiftAmount: number) => RangeCoordsRTreeNode<T> | void;
/**
* A sharable RTree that used CellRangeCoords
*/
export default class RangeCoordsRTree<V = any> {
private _shared;
private _isolated;
private _defaultEntries;
constructor(defaultEntries?: number);
/**
* Visits all ranges with options mutations from visitor.
*/
visitRanges(range: CellRangeCoords, visitor: RangeVisitor<V>, sort?: CartesianDirection): void;
isEmpty(): boolean;
size(): number;
/**
* Returns a set of ranges that intersect with the given range.
* @param range The range to intersect
* @param enclosed
* @returns
*/
search(range: CellRangeCoords, enclosed?: boolean): RangeCoordsRTreeNode<V>[];
all(): RangeCoordsRTreeNode<V>[];
collides(box: BBox): boolean;
toJSON(): any;
clone(): RangeCoordsRTree<V>;
private _copyTree;
private _getReadTree;
/**
* items is a special performance optimization to allow a single bulk load
*/
private _getWritableTree;
remove(item: RangeCoordsRTreeNode<V>, equals?: (a: RangeCoordsRTreeNode<V>, b: RangeCoordsRTreeNode<V>) => boolean): RangeCoordsRTree<V>;
insert(item: RangeCoordsRTreeNode<V>): RangeCoordsRTree<V>;
load(items: ReadonlyArray<RangeCoordsRTreeNode<V>>): RangeCoordsRTree<V>;
clear(): RangeCoordsRTree<V>;
fromJSON(data: any): RangeCoordsRTree<V>;
}
export { RangeCoordsRTree };
//# sourceMappingURL=RangeCoordsRTree.d.ts.map