import type { OnTableEditorCreatedCallback } from '../OnTableEditorCreatedCallback'; import type { IEditor } from 'roosterjs-content-model-types'; import type { TableEditFeatureName } from './features/TableEditFeatureName'; /** * @internal * * A table has 6 hot areas to be resized/edited (take LTR example): * * [6] [ ] * +[ 1 ]+--------------------+ * |[ ]| | * [ ] [ ] | * [ ] [ ] | * [2] [3] | * [ ] [ ] | * [ ][ 4 ]| | * +------------------+--------------------+ * | | | * | | | * | | | * +------------------+--------------------+ * [5] * * 1 - Hover area to show insert column button * 2 - Hover area to show insert row button * 3 - Hover area to show vertical resizing bar * 4 - Hover area to show horizontal resizing bar * 5 - Hover area to show whole table resize handle * 6 - Hover area to show whole table mover handle * * When set a different current table or change current TD, we need to update these areas */ export declare class TableEditor { private editor; readonly table: HTMLTableElement; readonly logicalRoot: HTMLDivElement | null; private onChanged; private anchorContainer?; private contentDiv?; private onTableEditorCreated?; private disableFeatures?; private horizontalInserter; private verticalInserter; private horizontalResizer; private verticalResizer; private tableResizer; private tableMover; private tableColumnSelector; private tableRowSelector; private isRTL; private range; private isCurrentlyEditing; constructor(editor: IEditor, table: HTMLTableElement, logicalRoot: HTMLDivElement | null, onChanged: () => void, anchorContainer?: HTMLElement | undefined, contentDiv?: EventTarget | null | undefined, onTableEditorCreated?: OnTableEditorCreatedCallback | undefined, disableFeatures?: TableEditFeatureName[] | undefined); dispose(): void; isEditing(): boolean; isOwnedElement(node: Node): boolean; /** * public only for testing purposes */ onMouseMove(x: number, y: number): void; private setEditorFeatures; private onEditorCreated; private setResizingTd; /** * create or remove TableInserter * @param td td to attach to, set this to null to remove inserters (both horizontal and vertical) */ private setInserterTd; private setSelectorRowColumn; private disposeTableResizer; private disposeTableInserter; private disposeTableSelector; private disposeCellResizers; private disposeTableMover; private onFinishEditing; private onStartTableResize; private onStartCellResize; private onStartTableMove; private onStartResize; private onEndTableMove; private onBeforeEditTable; private onAfterInsert; /** * Public only for testing purposes * @param table the table to select */ onSelect: (table: HTMLTableElement) => void; private getOnMouseOut; private isFeatureDisabled; }