@antv/s2
Version:
effective spreadsheet render core lib
115 lines (114 loc) • 4.6 kB
TypeScript
import type { Group } from '@antv/g';
import type { FrozenCellIndex } from '../common/constant/frozen';
import { FrozenGroupType } from '../common/constant/frozen';
import type { CustomHeaderFields, Fields, Pagination, S2BaseFrozenOptions, ScrollSpeedRatio } from '../common/interface';
import type { SimpleBBox } from '../engine';
import type { Indexes } from '../utils/indexes';
import type { ViewCellHeights } from './layout/interface';
import type { Node } from './layout/node';
export declare const isFrozenCol: (colIndex: number, frozenCount: number) => boolean;
export declare const isFrozenTrailingCol: (colIndex: number, frozenCount: number, colLength: number) => boolean;
export declare const isFrozenRow: (rowIndex: number, minRowIndex: number, frozenCount: number) => boolean;
export declare const isFrozenTrailingRow: (rowIndex: number, maxRowIndex: number, frozenCount: number) => boolean;
/**
* 计算偏移 scrollX、scrollY 的时候,在视窗中的节点索引
*/
export declare const calculateInViewIndexes: (options: {
scrollX: number;
scrollY: number;
widths: number[];
heights: ViewCellHeights;
viewport: SimpleBBox;
rowRemainWidth?: number;
}) => Indexes;
/**
* 优化滚动方向,对于小角度的滚动,固定为一个方向
* @param x
* @param y
* @param ratio
*/
export declare const optimizeScrollXY: (x: number, y: number, ratio: ScrollSpeedRatio) => [number, number];
export declare const translateGroup: (group: Group, scrollX: number, scrollY: number) => void;
export declare const translateGroupX: (group: Group, scrollX: number) => void;
export declare const translateGroupY: (group: Group, scrollY: number) => void;
/**
* frozen frozenTrailing
* ColCount ColCount
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* | | frozenRow | | frozenRowCount
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* | fro | | fro |
* | zen | panel | zen |
* | col | scroll | trailing |
* | | | col |
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* | | frozenTrailingRow | | frozenTrailingRowCount
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* @description returns which group data cell belongs in frozen mode
*/
export declare const getFrozenGroupTypeByCell: (meta: {
colIndex: number;
rowIndex: number;
}, frozenOptions: S2BaseFrozenOptions, colLength: number, cellRange: {
start: number;
end: number;
}) => FrozenGroupType.Row | FrozenGroupType.Col | FrozenGroupType.TrailingCol | FrozenGroupType.TrailingRow | FrozenGroupType.Scroll;
/**
* @description calculate all cells in frozen group's intersection region
*/
export declare const calculateFrozenCornerCells: (frozenOptions: S2BaseFrozenOptions, colLength: number, cellRange: {
start: number;
end: number;
}) => {
frozenTopLeftGroup: FrozenCellIndex[];
frozenTopRightGroup: FrozenCellIndex[];
frozenBottomLeftGroup: FrozenCellIndex[];
frozenBottomRightGroup: FrozenCellIndex[];
};
/**
* @description split all cells in current panel with five child group
*/
export declare const splitInViewIndexesWithFrozen: (indexes: Indexes, frozenOptions: S2BaseFrozenOptions, colLength: number, cellRange: {
start: number;
end: number;
}) => {
center: Indexes;
frozenRow: Indexes;
frozenCol: Indexes;
frozenTrailingCol: Indexes;
frozenTrailingRow: Indexes;
};
export declare const getCellRange: (viewCellHeights: ViewCellHeights, pagination?: Pagination) => {
start: number;
end: number;
};
/**
* 明细表多级表头根据一个 node 返回其所属顶层节点
* @param node
* @returns {Node}
*/
export declare const getNodeRoot: (node: Node) => Node;
/**
* 获取 columns 的所有叶子节点
* @param columns 列配置
* @returns {Array} 叶子节点列组成的数组
*/
export declare const getLeafColumns: (columns: CustomHeaderFields) => CustomHeaderFields;
/**
* 获取 columns 的所有叶子节点的 key
* @param columns 列配置
* @returns {Array<string>} 叶子节点列的key组成的数组
*/
export declare const getLeafColumnsWithKey: (columns?: CustomHeaderFields) => string[];
/**
* 获取一个 node 的最左叶子节点,找不到则返回自身
* @param node
* @returns {Node}
*/
export declare const getLeftLeafNode: (node: Node) => Node;
/**
* fields 的 rows、columns、values 值都为空时,返回 true
* @param {Fields} fields
* @return {boolean}
*/
export declare const areAllFieldsEmpty: (fields: Fields) => boolean;