@aurouscia/au-table-editor
Version:
vue表格编辑器组件
119 lines (118 loc) • 3.82 kB
TypeScript
export interface TableData {
id: number;
name: string;
cells: string[][];
merges?: MergeInfo[];
colors?: CellColorInfo[];
sticky?: StickyInfo;
}
export interface MergeInfo {
row: number;
col: number;
down: number;
right: number;
}
export interface CellColorInfo {
pos: PositionCompact;
bg?: string;
text?: string;
}
export declare const cellBgColorDefault = "#eeeeee";
export declare const cellTextColorDefault = "#000000";
export interface StickyInfo {
topIdx?: number;
topFromColIdx?: number;
leftIdx?: number;
leftFromRowIdx?: number;
}
export interface Position {
row: number;
col: number;
}
export type PositionCompact = [row: number, col: number];
export type Selection = Position[];
export type Direction = "vertical" | "horizontal";
export type SingleDirection = "left" | "right" | "top" | "bottom";
export interface TableRange {
type: Direction;
min: number;
max: number;
}
export interface TableGap {
dir: Direction;
idx: number;
}
export interface MergedCellInfo extends Position {
fromMerge: MergeInfo;
}
export interface CellShown {
content: string;
position: Position;
rowspan?: number;
colspan?: number;
bgColor?: string;
textColor?: string;
}
export declare class Table implements TableData {
id: number;
name: string;
cells: string[][];
cellsShown: CellShown[][];
merges: MergeInfo[];
merged: MergedCellInfo[];
colors: CellColorInfo[];
sticky: StickyInfo;
rowCount: number;
colCount: number;
constructor(data: TableData);
output(): CellShown[][];
getData(): TableData;
replaceData(data: TableData): void;
refreshCellShown(): void;
refreshSize(): void;
totalRefresh(): void;
rmColorRedundant(): void;
isMergeDangerous(s: Selection): boolean;
addMerge(s: Selection): Selection;
removeMerge(p: Position): void;
isMergedCell(r: number, c: number): MergedCellInfo | undefined;
isMergeInfoHead(r: number, c: number): MergeInfo | undefined;
isValidMergeInfo(m: MergeInfo): boolean;
rectanglifySelection(s: Selection, related: MergeInfo[]): Selection;
selectionToMergeInfo(s: Selection): MergeInfo;
private isSameSelection;
private posCmp;
private rangeIncludeWholeMerge;
private rangeIncludeCell;
refreshMergedPositions(): void;
enumerateCells(func: (r: number, c: number) => boolean): void;
enumerateMergeInfo(s: MergeInfo, func: (r: number, c: number) => boolean): void;
enumerateRange(r: TableRange, func: (r: number, c: number) => boolean): void;
enumerateRow(rowIdx: number, func: (r: number, c: number) => boolean): void;
enumerateCol(colIdx: number, func: (r: number, c: number) => boolean): void;
getSelectionRange(s: Selection, type: Direction): TableRange;
isRectSelection(s: Selection): boolean;
isInsideSingleMergeSelection(s: Selection): boolean;
expandSelection(s: Selection, direction: Direction, mode: "loose" | "strict"): Selection;
selectSpecificIdx(direction: Direction, zero_based_idx: number): Selection;
cellPosMapToShownPos(p: Position, recurSafety?: number): Position;
shownPosMapToCellPos(p: Position): Position;
nextCellShown(p: Position): Position | undefined;
insert(s: Selection | undefined, direction: SingleDirection): Selection;
private locateGap;
private newStringArr;
exchange(gap: TableGap): boolean;
delete(s: Selection, direction: Direction): Selection;
rotateTableClockwise(times?: 0 | 1 | 2 | 3, s?: Selection | undefined): Selection;
}
export declare const tableDefaultValue: {
id: number;
name: string;
cells: string[][];
merges: {
row: number;
col: number;
right: number;
down: number;
}[];
};