@antv/s2
Version:
effective spreadsheet render core lib
82 lines (81 loc) • 2.38 kB
TypeScript
import type { SpreadSheet } from '../../sheet-type';
import { EXTRA_FIELD } from '../constant';
import type { CellMeta } from '../interface/interaction';
import type { DataItem } from '../interface/s2DataConfig';
export type MatrixPlainTransformer = (data: DataItem[][], separator?: string) => CopyablePlain;
export type MatrixHTMLTransformer = (data: DataItem[][]) => CopyableHTML;
export declare enum CopyMIMEType {
PLAIN = "text/plain",
HTML = "text/html"
}
export type CopyableItem = {
type: `${CopyMIMEType}`;
content: string;
};
export type CopyablePlain = {
type: `${CopyMIMEType.PLAIN}`;
content: string;
};
export type CopyableHTML = {
type: `${CopyMIMEType.HTML}`;
content: string;
};
export type CopyableList = [CopyablePlain, CopyableHTML];
export type Copyable = CopyableItem | CopyableItem[];
export type FormatOptions = boolean | {
formatHeader?: boolean;
formatData?: boolean;
};
export interface Transformer {
[CopyMIMEType.PLAIN]: MatrixPlainTransformer;
[CopyMIMEType.HTML]: MatrixHTMLTransformer;
}
export interface CopyOrExportConfig {
selectedCells?: CellMeta[];
formatOptions?: FormatOptions;
separator?: string;
customTransformer?: (transformer: Transformer) => Partial<Transformer>;
async?: boolean;
}
export interface CopyAndExportUnifyConfig {
separator: string;
formatHeader: boolean;
formatData: boolean;
selectedCells: CellMeta[];
transformers: Transformer;
async: boolean;
}
export interface CopyAllDataParams {
/**
* 表格实例
*/
sheetInstance: SpreadSheet;
/**
* 数据分割符
* @example "\t"
*/
split?: string;
/**
* 格式化配置
* @example { formatHeader: true, formatData: true }
*/
formatOptions?: FormatOptions;
/**
* 自定义数据转换器
* @see https://s2.antv.antgroup.com/manual/advanced/interaction/copy
* @example https://s2.antv.antgroup.com/examples/interaction/basic#copy-export
*/
customTransformer?: (transformer: Transformer) => Partial<Transformer>;
/**
* 是否开启异步复制
*/
async?: boolean;
}
export interface SheetCopyConstructorParams {
spreadsheet: SpreadSheet;
config: CopyOrExportConfig;
isExport?: boolean;
}
export type MeasureQuery = {
[EXTRA_FIELD]: string | undefined;
} | {};