import { EventEmitter, h } from '../../stencil-public-runtime';
import { SceneTreeController } from '../scene-tree/lib/controller';
import { Row } from '../scene-tree/lib/row';
import { RowDataProvider } from '../scene-tree/types';
import { DomScrollToOptions } from './lib/dom';
export declare class SceneTreeTableLayout {
/**
* A reference to the scene tree to perform operations for interactions. Such
* as expansion, visibility and selection.
*/
tree?: HTMLVertexSceneTreeElement;
/**
* @internal
*/
controller?: SceneTreeController;
/**
* @internal
*/
rows: Row[];
/**
* @internal
*/
totalRows: number;
/**
* @internal
*/
rowHeight: number;
/**
* The number of offscreen rows above and below the viewport to render. Having
* a higher number reduces the chance of the browser not displaying a row
* while scrolling.
*
* This prop will be automatically populated based on the `overScanCount` prop
* specified in the parent `` element.
*/
overScanCount: number;
/**
* A callback that is invoked immediately before a row is about to be rendered.
* This callback can return additional data that can be bound to in a
* template.
*
* This prop will be automatically populated based on the `rowData` prop
* specified in the parent `` element.
*
* @example
*
* ```html
*
*
*
*
*
*
*
*
*
*
*
* ```
*/
rowData?: RowDataProvider;
/**
* @internal
*/
layoutOffset: number;
/**
* @internal
*/
scrollOffset: number;
/**
* @internal
*/
layoutHeight?: number;
/**
* @internal
*/
layoutWidth?: number;
/**
* @internal
*/
viewportStartIndex: number;
/**
* @internal
*/
viewportEndIndex: number;
/**
* @internal
*/
layoutRendered: EventEmitter;
/**
* An event that is emitted when the columns of this ``
* are resized with an array containing the widths of the columns in pixels.
*/
columnsResized: EventEmitter;
private hostEl;
private columnGridLayout;
private columnGridFixedLayout;
private isComputingCellHeight;
private lastDividerPointerPosition?;
private resizingColumnIndex?;
private isScrolling;
private scrollTimer;
/**
* This stores internal state that you want to preserve across live-reloads,
* but shouldn't trigger a refresh if the data changes. Marking this with
* @State to allow to preserve state across live-reloads.
*/
private stateMap;
private lastStartIndex;
private resizeObserver?;
private headerResizeObserver?;
private tableElement?;
private headerElement?;
private columnElements;
private cellHoverController;
componentWillLoad(): void;
componentDidLoad(): Promise;
componentWillRender(): Promise;
componentDidRender(): void;
componentDidUpdate(): Promise;
disconnectedCallback(): void;
protected handleViewportRowsPropsChanged(): Promise;
/**
* Scrolls the table to the provided top value.
*
* @param top The position to scroll to.
* @param options A set of options to configure the scrolling behavior.
*/
scrollToPosition(top: number, options: Pick): Promise;
/**
* Attempts to compute the height of templated cells. Used for internals
* or testing.
*
* @internal
* @ignore
*/
attemptComputeCellHeight(): Promise;
render(): h.JSX.IntrinsicElements;
private computeViewportRows;
private computeAndUpdateViewportRows;
private layoutColumns;
private updateCell;
private updateLayoutPosition;
private recomputeColumnWidths;
private recomputeColumnPercentages;
private computeInitialColumnWidths;
private updateColumnElements;
private createPools;
private recreateColumnPools;
private iterateColumns;
private ensureDividerTemplateDefined;
private createHeaderInstance;
private createDividerInstance;
private createColumnCellInstance;
private computeCellHeight;
private computeHeaderHeight;
private computeColumnGridLayout;
private bindHeaderData;
private rebindHeaderData;
private addDividerDragListeners;
private removeDividerDragListeners;
private createDividerPointerDownHandler;
private handleDividerPointerMove;
private handleDividerPointerUp;
private isValidResize;
private handleScrollChanged;
private getViewportRows;
private populateRowData;
private getLayoutHeight;
private getLayoutWidth;
private clearLayoutHeight;
private clearLayoutWidth;
}