@textbus/xnote
Version:
A high-performance rich text editor that supports multiplayer online collaboration.
55 lines (54 loc) • 2 kB
TypeScript
import { Component, ComponentStateLiteral, ContentType, Slot, Subject, Textbus } from '@textbus/core';
import { TableSelection } from './components/selection-mask';
import { Rectangle, RenderRow } from './tools/merge';
export interface Cell {
id: string;
slot: Slot;
}
export interface Row {
height: number;
cells: Cell[];
}
export type TableComponentMergeCellConfig = Record<string, string>;
export interface TableComponentState {
columnsConfig: number[];
rows: Row[];
mergeConfig: TableComponentMergeCellConfig;
}
export declare class TableComponent extends Component<TableComponentState> {
static componentName: string;
static type: ContentType;
static fromJSON(textbus: Textbus, json: ComponentStateLiteral<TableComponentState>): TableComponent;
private selection;
private commander;
constructor(textbus: Textbus, state?: TableComponentState);
focus: Subject<boolean>;
tableSelection: import("@viewfly/core").Signal<TableSelection | null>;
ignoreSelectionChanges: boolean;
private normalizedData;
getSlots(): Slot[];
mergeCellBySelection(): void;
splitCellsBySelection(): void;
splitCellBySlot(slot: Slot): void;
getMaxRectangle(startSlot: Slot, endSlot: Slot): Rectangle | null;
getSelectedNormalizedSlots(): {
row: Row;
cells: import("./tools/merge").RenderCell[];
}[] | null;
getSelectedRect(): Rectangle | null;
getSelectedNormalizedSlotsByRectangle(rectangle: Rectangle): {
row: Row;
cells: import("./tools/merge").RenderCell[];
}[];
getCellBySlot(slot: Slot): Cell | null;
getNormalizedData(): RenderRow[];
selectRow(startIndex: number, endIndex?: number): void;
selectColumn(startIndex: number, endIndex?: number): void;
private getMergedRectangles;
private getCoordinateById;
setup(): void;
deleteColumns(): void;
deleteRows(): void;
insertColumn(index: number): void;
insertRow(index: number): void;
}