@sheetxl/models
Version:
Models - A Headless javascript spreadsheet library.
37 lines • 1.37 kB
TypeScript
import { CellCoords, CellRangeCoords } from '@sheetxl/common';
/**
* Compares a coords to a range.
* Note - This doesn't follow a traditional comparator pattern because it's compare different types.
*/
export declare const coordsRangeComparator: (isColScan: boolean, coords: CellCoords, range: CellRangeCoords) => number;
/**
* This class is used for scanning a set of ranges in an efficient way.
* The most important aspect of this algo is that the rectangles do not
* overlap.
*
* 1. This will scan ranges along an axis.
* 2. If a range spans multiple rows or columns it can be returned multiple times.
* 3. This uses cursors to track locations
* This uses cursors to track locations
*/
export declare class CellRangeScanner {
private ranges;
private isColScan;
private currentRangeIndex;
private currentRange;
private currentScanIndex;
private currentValueIndex;
private spanRanges;
private spanRangeIndex;
private currentSpanRange;
private nextSpanEnd;
constructor(ranges: CellRangeCoords[], isColScan?: boolean);
/**
* Returns the range that intersect the coords or null if none.
* @param coords
* @returns CellRangeCoords if found
*/
nextIntersectRange(coords: CellCoords): CellRangeCoords | null;
}
export default CellRangeScanner;
//# sourceMappingURL=CellRangeScanner.d.ts.map