UNPKG

@antv/s2

Version:

effective spreadsheet render core lib

115 lines (114 loc) 4.6 kB
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;