UNPKG

@sheetxl/models

Version:

Models - A Headless javascript spreadsheet library.

55 lines 2.15 kB
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