@antv/s2
Version:
effective spreadsheet render core lib
77 lines (76 loc) • 2.74 kB
TypeScript
import type { S2Event } from '../../common/constant/events/basic';
import type { ResizeAreaEffect, ResizeDirectionType, ResizeType } from '../../common/constant/resize';
import type { Node } from '../../facet/layout/node';
import type { ViewMeta } from './basic';
import type { S2CellType } from './interaction';
import type { S2Style } from './style';
import type { ResizeArea } from './theme';
export type ResizeGuideLinePath = [operation: 'M' | 'L', x: number, y: number];
export type ResizeEvent = S2Event.LAYOUT_RESIZE | S2Event.LAYOUT_RESIZE_SERIES_WIDTH | S2Event.LAYOUT_RESIZE_ROW_WIDTH | S2Event.LAYOUT_RESIZE_COL_WIDTH | S2Event.LAYOUT_RESIZE_ROW_HEIGHT | S2Event.LAYOUT_RESIZE_COL_HEIGHT | S2Event.LAYOUT_RESIZE_TREE_WIDTH;
export interface ResizeGuideLinePosition {
start: {
x: number;
y: number;
};
end: {
x: number;
y: number;
};
}
export interface ResizePosition {
offsetX?: number;
offsetY?: number;
clientX?: number;
clientY?: number;
}
export interface ResizeDetail {
eventType: ResizeEvent;
style?: S2Style;
seriesNumberWidth?: number;
}
export interface ResizeParams {
info: ResizeInfo;
style: S2Style | undefined;
}
export interface ResizeInfo {
theme: ResizeArea;
type: `${ResizeDirectionType}`;
offsetX: number;
offsetY: number;
width: number;
height: number;
size: number;
/** 改动影响区域 */
effect: ResizeAreaEffect;
isResizeArea?: boolean;
isResizeMask?: boolean;
/** 当前拖拽热区对应的单元格/节点信息 */
meta: Node | ViewMeta;
cell: S2CellType;
/** 拖拽后的宽度 */
resizedWidth?: number;
/** 拖拽后的高度 */
resizedHeight?: number;
}
export interface ResizeInteractionOptions {
/** 行头垂直方向 resize -> 针对行头叶子节点 */
rowCellVertical?: boolean;
/** 角头水平方向 resize -> 针对角头 CornerNodeType 为 Series 和 Row */
cornerCellHorizontal?: boolean;
/** 列头水平方向 resize -> 针对列头叶子节点 */
colCellHorizontal?: boolean;
/** 列头垂直方向 resize -> 针对列头各层级节点 */
colCellVertical?: boolean;
/** 行高调整时,影响当前行还是全部行 */
rowResizeType?: `${ResizeType}`;
/** 列高调整时,影响当前列还是全部列 */
colResizeType?: `${ResizeType}`;
/** 是否允许调整, 返回 false 时拖拽的宽高无效 */
disable?: (resizeInfo: ResizeInfo) => boolean;
/** 是否显示热区 */
visible?: (cell: S2CellType) => boolean;
/** 单元格可拖拽最小宽度 */
minCellWidth?: number;
/** 单元格可拖拽最小高度 */
minCellHeight?: number;
}