@antv/s2
Version:
effective spreadsheet render core lib
212 lines (211 loc) • 8.18 kB
TypeScript
import EE from '@antv/event-emitter';
import { Canvas, FederatedPointerEvent as CanvasEvent, type CanvasConfig } from '@antv/g';
import type { BaseTooltipOperatorMenuOptions, CellEventTarget, EmitterType, Fields, InternalFullyTheme, Pagination, S2CellType, S2DataConfig, S2MountContainer, S2Options, S2RenderOptions, S2Theme, SimpleData, SimplePalette, SortMethod, ThemeCfg, ThemeName, TooltipContentType, TooltipData, TooltipOptions, TooltipShowOptions, Total } from '../common/interface';
import { Store } from '../common/store';
import type { BaseDataSet } from '../data-set';
import type { BaseFacet } from '../facet';
import type { Node } from '../facet/layout/node';
import { RootInteraction } from '../interaction/root';
import { HdAdapter } from '../ui/hd-adapter';
import { BaseTooltip } from '../ui/tooltip';
import type { PivotSheet } from './pivot-sheet';
import type { TableSheet } from './table-sheet';
export declare abstract class SpreadSheet extends EE {
themeName: ThemeName;
theme: InternalFullyTheme;
store: Store;
dataCfg: S2DataConfig;
options: S2Options;
dataSet: BaseDataSet;
facet: BaseFacet;
tooltip: BaseTooltip;
container: Canvas;
interaction: RootInteraction;
hdAdapter: HdAdapter;
/**
* 表格是否已销毁
*/
destroyed: boolean;
protected abstract bindEvents(): void;
abstract getDataSet(): BaseDataSet;
abstract isPivotMode(): this is PivotSheet;
abstract isTableMode(): this is TableSheet;
abstract isCustomRowFields(): boolean;
abstract isHierarchyTreeType(): boolean;
abstract isFrozenRowHeader(): boolean;
abstract isValueInCols(): boolean;
protected abstract buildFacet(): void;
abstract clearDrillDownData(rowNodeId?: string, preventRender?: boolean): Promise<void>;
abstract groupSortByMethod(sortMethod: SortMethod, meta: Node): Promise<void> | void;
constructor(dom: S2MountContainer, dataCfg: S2DataConfig, options: S2Options | null);
protected setupDataConfig(dataCfg: S2DataConfig): void;
protected setupOptions(options: S2Options | null | undefined): void;
isCustomHeaderFields(fieldType?: keyof Pick<Fields, 'columns' | 'rows'>): boolean;
isCustomColumnFields(): boolean;
private setOverscrollBehavior;
private restoreOverscrollBehavior;
private setDebug;
protected initTheme(): void;
private getMountContainer;
private initHdAdapter;
protected initInteraction(): void;
private initTooltip;
private renderTooltip;
private getTargetCell;
/**
* 展示 Tooltip 提示
* @alias s2.tooltip.show()
* @example
s2.showTooltip({
position: {
x: event.clientX,
y: event.clientY,
},
content: '<div>xxx</div>',
options: {}
})
*/
showTooltip<T = TooltipContentType, Menu = BaseTooltipOperatorMenuOptions>(showOptions: TooltipShowOptions<T, Menu>): Promise<void>;
showTooltipWithInfo(event: CanvasEvent | MouseEvent, cellInfos: TooltipData[], options?: TooltipOptions): Promise<void> | void;
hideTooltip(): void;
destroyTooltip(): void;
registerIcons(): void;
/**
* 更新表格数据
* @param dataCfg 数据源配置
* @param reset 是否重置数据源配置, 直接使用传入的 dataCfg,不再与之前的配置进行合并
* @example s2.setDataCfg(dataCfg)
* @example s2.setDataCfg(dataCfg, true)
*/
setDataCfg<T extends boolean = false>(dataCfg: T extends true ? S2DataConfig | undefined | null : Partial<S2DataConfig>, reset?: T): void;
/**
* 更新表格配置
* @param options 配置
* @param reset 是否重置配置, 直接使用传入的 options,不再与之前的配置进行合并
* @example s2.setOptions(dataCfg)
* @example s2.setOptions(dataCfg, true)
*/
setOptions<T extends boolean = false>(options: T extends true ? S2Options | undefined | null : Partial<S2Options>, reset?: T): void;
/**
* 重置表格数据
* @example s2.resetDataCfg()
*/
resetDataCfg(): void;
/**
* 重置表格配置
* @example s2.resetOptions()
*/
resetOptions(): void;
private resetHiddenColumnsDetailInfoIfNeeded;
private doRender;
/**
* 渲染表格
* @param reloadData
* @param options
* @example
s2.render(true)
s2.render(false)
s2.render({
reloadData: true;
rebuildDataSet: true;
rebuildHiddenColumnsDetail: true;
})
*/
render(options?: S2RenderOptions | boolean): Promise<void>;
private mountSheetInstance;
private unmountSheetInstance;
/**
* 卸载表格
* @example s2.destroy()
*/
destroy(): void;
protected setThemeName(name: ThemeName): void;
setThemeCfg(themeCfg?: ThemeCfg, getCustomTheme?: (palette: SimplePalette, spreadsheet?: SpreadSheet) => S2Theme): void;
setTheme(theme: S2Theme): void;
getTheme(): InternalFullyTheme;
getThemeName(): "default" | "colorful" | "gray" | "dark";
/**
* 更新分页配置
*/
updatePagination(pagination: Pagination): void;
/**
* 修改表格画布大小,不用重新加载数据
* @param width
* @param height
*/
changeSheetSize(width?: number, height?: number): void;
on<K extends keyof EmitterType>(event: `${K}`, listener: EmitterType[K]): this;
emit<K extends keyof EmitterType>(event: `${K}`, ...args: Parameters<EmitterType[K]>): void;
/**
* 获取 G Canvas 实例
* @see https://g.antv.antgroup.com/api/renderer/canvas
*/
getCanvas(): Canvas;
/**
* 获取 G Canvas 配置
* @see https://g.antv.antgroup.com/api/canvas/options
*/
getCanvasConfig(): Partial<CanvasConfig & {
supportsCSSTransform?: boolean;
}>;
/**
* 获取 <canvas/> HTML 元素
*/
getCanvasElement(): HTMLCanvasElement & {
__s2_instance__: SpreadSheet;
};
getLayoutWidthType(): "adaptive" | "colAdaptive" | "compact";
protected isCellType(cell?: CellEventTarget): boolean;
getCell<T extends S2CellType = S2CellType>(target: CellEventTarget): T | null;
getCellType(target: CellEventTarget): import("../common/constant").CellType | undefined;
/**
* 获取当前维度对应的汇总配置
*/
getTotalsConfig(dimension: string): Total;
/**
* Create all related groups, contains:
* 1. container -- base canvas group
* 2. backgroundGroup
* 3. panelGroup -- main facet group belongs to
* 4. foregroundGroup
* @param dom
* @private
*/
protected initContainer(dom: S2MountContainer): void;
protected setupContainerStyle(): void;
private initHiddenColumnsDetail;
private clearCanvasEvent;
/**
* 获取文本在画布中的测量信息
* @param text 待计算的文本
* @param font 文本 css 样式
* @returns 文本测量信息 TextMetrics
*/
measureText: ((text: SimpleData, font: unknown) => TextMetrics | null) & import("lodash").MemoizedFunction;
/**
* 计算文本在画布中的宽度
* @param text 待计算的文本
* @param font 文本 css 样式
* @returns 文本宽度
*/
measureTextWidth: (text: SimpleData, font: unknown) => number;
/**
* 计算文本在画布中的宽度 https://developer.mozilla.org/zh-CN/docs/Web/API/TextMetrics
* @param text 待计算的文本
* @param font 文本 css 样式
* @returns 文本高度
*/
measureTextHeight: (text: SimpleData, font: unknown) => number;
/**
* 粗略计算文本在画布中的宽度
* @param text 待计算的文本
* @param font 文本 css 样式
* @returns 文本宽度
*/
measureTextWidthRoughly: (text: SimpleData, font: unknown) => number;
updateSortMethodMap(nodeId: string, sortMethod: SortMethod, replace?: boolean): void;
getMenuDefaultSelectedKeys(nodeId: string): string[];
handleGroupSort(event: CanvasEvent, meta: Node): void;
getSeriesNumberText(): string;
enableAsyncExport(): Error | true;
}