@sheetxl/models
Version:
Models - A Headless javascript spreadsheet library.
88 lines • 3.88 kB
TypeScript
import { RemoveListener } from "@sheetxl/common";
import { TransactionStore, ITransaction } from "../transaction";
import { ListenerEmitter, Listener, ListenerOptions } from "../listener";
import { Run, RunCoords } from "../run/RunUtils";
import { ICellHeader, CellHeaderCreator, CellHeaderJSON, CellsHeaderAddressValuePair, CellHeaderUpdate, ISheetStyle, AutoFitOptions, CellHeaderRangeAddress, HeaderOrientation } from "../cell";
import { ISheetModel } from "./ISheetModel";
import { ISheetHeadersModel, SheetHeadersEvent, SheetHeaderJSON, SetHeaderOptions, ISheetHeaderRange } from "./ISheetHeadersModel";
export interface SheetHeadersModelOptions<T extends ICellHeader, P extends CellHeaderJSON> {
createCellHeader: CellHeaderCreator<T>;
orientation: HeaderOrientation;
sheetModel: ISheetModel;
transactionStore?: TransactionStore;
/**
* Takes a list of runs and returns the best sizes for each.
*/
findBestFits?: (runs: RunCoords[], options: AutoFitOptions) => Run<number>[];
getUpdateId?: () => number;
isProtected?: () => boolean;
defaultAutoFitOptions?: AutoFitOptions;
getHeaderText?(index: number): string;
/**
* A number that represents a scaling factor.
*/
scaleFactor?: () => number;
defaultSize?: () => number;
minSize?: number;
maxSize?: number;
maxIndex?: number;
initialJSON?: SheetHeaderJSON<P>;
}
/**
* For updating and working with headers (rows/columns)
*/
export default class SheetHeadersModel<T extends ICellHeader, P extends CellHeaderJSON, U extends CellHeaderUpdate> implements ISheetHeadersModel<T, P, U> {
protected _emitter: ListenerEmitter;
private _options;
private _sheetModelListenerRemove;
private _transactionStore;
private _transactionStoreRemoveListener;
private _emptyHeader;
private _scaleFactor;
private _indexedHeaderLocations;
private _headerBounds;
private _hasCustomFormats;
private _hasCustomStyles;
private _lastHeaderRead;
private _lastHeaders;
constructor(options: SheetHeadersModelOptions<T, P>);
addEventListener(type: string, listener: Listener<SheetHeadersEvent>, options?: ListenerOptions): RemoveListener;
private _onHeaderChange;
sheetStyle(): ISheetStyle;
sheet(): ISheetModel;
orientation(): HeaderOrientation;
getHeaderText(index: number): string;
private _scanHeaders;
getRange(address?: CellHeaderRangeAddress): ISheetHeaderRange<U>;
getHeader(offset: number): T;
setHeaderPairs(pairs: CellsHeaderAddressValuePair<U>[], options?: SetHeaderOptions): RunCoords[] | null;
private _parseHeaderRangeAddress;
update(address: CellHeaderRangeAddress, update: ICellHeader | U | null, options?: SetHeaderOptions): void;
isProtected(): boolean;
scaleFactor(): number;
private get _headers();
private _setHeaderPairsInternal;
getHeaderBounds(): RunCoords;
getMaxHeaderBounds(): RunCoords;
hasCustomFormats(): boolean;
hasCustomStyles(): boolean;
autoFit(addresses: CellHeaderRangeAddress[] | CellHeaderRangeAddress, options?: AutoFitOptions): void;
getDefaultHeaderSize(): number;
getMaxHeaderSize(): number;
getMinHeaderSize(): number;
findOffset(index: number): number;
findIndex(offset: number): number;
getHeaderSize(indexFrom: number, indexTo?: number): number;
hiddenHeadersAt(index: number, forward?: boolean): number;
insertHeaders(index: number, amount: number): void;
removeHeaders(index: number, amount: number): void;
pushTransaction(description?: string): ITransaction;
private _getTransactionState;
private _pushTransaction;
private _updateTransactionState;
close(): void;
fromJSON(json: SheetHeaderJSON<P>): void;
toJSON(): SheetHeaderJSON<P>;
}
export { SheetHeadersModel };
//# sourceMappingURL=SheetHeadersModel.d.ts.map