///
///
import { IStoreState, IColumn, IRow, ICellNN, ID, ICell } from '../../index.data';
import { SpreadSheetRuntime } from '../../RuntimeContext';
/**
* 在第j列插入空列, 空列为column
* @param state
* @param j
* @param column
* @param cellsToFill 在插列完毕后, 可以将cellsToFill从上到下填入cell
* @param forceMergePolicy : 在第4列插入, 第1行的第1个单元格colspan=3, 则插入后, 不新增单元格, 将colspan设为4
* 插入前: 1 2 3 4
* __ _ __ _ __ | _ | _
* __ | __ | __ | _ | _
* __ | __ | __ | _ | _
* 若autoMerge=[]:
* 插入后: 1 2 3 4(new) 5
* __ _ __ _ __ | _ | _ | _
* __ | __ | __ | _ | _ | _
* __ | __ | __ | _ | _ | _
* 若autoMerge=[left]:
* 插入后: 1 2 3 4(new) 5
* __ _ __ _ __ _ _ | _ | _
* __ | __ | __ | _ | _ | _
* __ | __ | __ | _ | _ | _
* 注意: 无论autoMerge为何, 如果在第2列插入, 则无论如何1234都会被合并
*
* @param runtime
* @param testing 如果为true, 则将生成 randomid1 这样的cellid, 供测试
*/
export declare function insertColumn(state: IStoreState, j: number, column: IColumn, cellsToFill: Partial[], forceMergePolicy: 'left' | null, // 向right合并很不常见, 并且需要删除单元格, 有点麻烦, 忽略
copyCellAttrs: ('value' | 'formula' | 'locked')[], //新创建的cell要复制相邻 cell 的哪些属性
runtime: SpreadSheetRuntime, testing?: boolean): {
newState: Partial;
updatedStaleCells: ICellNN[];
};
export declare function deleteColumn(state: IStoreState, j: number, runtime: SpreadSheetRuntime, testing?: boolean): {
newState: {
cells: Record;
cellDeps: Record;
varDeps: Record;
rows: IRow[];
columns: IColumn[];
} | {
rows: IRow[];
columns: IColumn[];
cells: any;
};
updatedStaleCells: ICellNN[];
deletedCells: ICell[];
insertedCells: ICell[];
};
/**
* 往row的第j列, 插入一个空白cell
* 如果j-1 与 old_j 已经合并, 则插入后j-1 与 j 与 j+1(即old_j) 都将合并
* 如果j-2 与 j-1 已经合并, 但j-1与old_j并未合则, 则:
* 若forceMergePolicy==='left', 则 三者合并
* 若forceMergePolicy===null, 则 没有任何合并
* @param row: 要插入cell的行
* @param j: 要在第j列插入
* @param baseCell: 如果为null, 则复制closestCell, 否则复制baseCell ( 可从外部提供 )
* @param cellMap
* @param forceMergePolicy
* @param copyCellAttrs
* @param testing
*/
export declare function insertCell(row: IRow, baseCell: ICell, updatedPreRowColspans: number[], cellMap: Record, j: number, forceMergePolicy: 'left' | null, copyCellAttrs: ('value' | 'formula' | 'locked')[], testing?: boolean): {
insertedCell: null;
updatedCell: {
old: ICellNN;
new: {
colspan: number;
id: ID;
rowId?: string | number | undefined;
i?: number | undefined;
j?: number | undefined;
rowspan?: number | undefined;
style?: import("react").CSSProperties | undefined;
format?: import("../../index.data").NumericFormat | undefined;
value?: any;
type?: string | undefined;
dataType?: string | undefined;
locked?: boolean | undefined;
delay?: boolean | undefined;
meta?: any;
formula?: string | undefined;
formulaDisabled?: boolean | undefined;
error?: string | null | undefined;
};
};
updatedRow: {
cellIds: (string | number | null)[];
id: ID;
type?: "header" | "body" | "footer" | undefined;
area?: "tree" | "flatten" | undefined;
meta?: any;
sealed?: boolean | undefined;
level?: number | undefined;
i?: number | undefined;
style?: import("react").CSSProperties | undefined;
additions?: any;
height?: number | undefined;
};
sourceCell: null;
} | {
insertedCell: null;
updatedCell: null;
updatedRow: {
cellIds: (string | number | null)[];
id: ID;
type?: "header" | "body" | "footer" | undefined;
area?: "tree" | "flatten" | undefined;
meta?: any;
sealed?: boolean | undefined;
level?: number | undefined;
i?: number | undefined;
style?: import("react").CSSProperties | undefined;
additions?: any;
height?: number | undefined;
};
sourceCell: null;
} | {
insertedCell: ICellNN;
updatedCell: null;
updatedRow: {
cellIds: (string | number | null)[];
id: ID;
type?: "header" | "body" | "footer" | undefined;
area?: "tree" | "flatten" | undefined;
meta?: any;
sealed?: boolean | undefined;
level?: number | undefined;
i?: number | undefined;
style?: import("react").CSSProperties | undefined;
additions?: any;
height?: number | undefined;
};
sourceCell: ICell;
};
/**
* 从row中, 删除第j列的单元格. 已考虑合并单元格的影响
*/
export declare function deleteCell(row: IRow, cellMap: Record, j: number, testing?: boolean): {
updatedCell: {
old: ICellNN;
new: ICellNN;
} | null;
deletedCell: ICellNN | null;
updatedRow: IRow;
insertedCell: ICellNN | null;
};