@antv/s2
Version:
effective spreadsheet render core lib
54 lines (53 loc) • 1.92 kB
TypeScript
import { Group } from '@antv/g';
import type { S2CellType } from '../../common';
import type { Node } from '../layout/node';
import type { BaseHeaderConfig } from './interface';
/**
* New Base Header for all headers(cornerHeader, rowHeader, colHeader)
* NOTE: Do not use this.cfg(which lays in group) to get header config,
* use @see headerConfig instead
*/
export declare abstract class BaseHeader<T extends BaseHeaderConfig> extends Group {
protected scrollGroup: Group;
protected frozenGroup: Group;
protected frozenTrailingGroup: Group;
protected extraFrozenNodes: Node[];
protected abstract initGroups(): void;
protected abstract layout(): void;
protected abstract offset(): void;
protected abstract clip(): void;
protected abstract getCellInstance(node: Node): S2CellType;
protected headerConfig: T;
constructor(config: T);
getHeaderConfig(): T;
render(type?: string): void;
/**
* Scroll header group's x,y
* @param scrollX hScrollBar horizontal offset
* @param scrollY hScrollBar vertical offset
* @param type
*/
onScrollXY(scrollX: number, scrollY: number, type?: string): void;
/**
* Only call when hRowScrollBar scrolls
* @param rowHeaderScrollX hRowScrollbar horizontal offset
* @param type
*/
onRowScrollX(rowHeaderScrollX: number, type?: string): void;
/**
* 清空热区,为重绘做准备,防止热区重复渲染
* @param type 当前重绘的header类型
*/
protected clearResizeAreaGroup(type?: string): void;
clear(): void;
/**
* Check whether header cell in viewPort
*/
protected isHeaderCellInViewport: ({ cellPosition, cellSize, viewportPosition, viewportSize, }: {
cellPosition: number;
cellSize: number;
viewportPosition: number;
viewportSize: number;
}) => boolean;
getNodes(): Node[];
}