export class TiledPlot extends React.Component<any, any, any> {
    constructor(props: any);
    closing: boolean;
    brushX: import("d3-brush").BrushBehavior<any>;
    canvasElement: any;
    tracksByUidInit: {};
    annotationUid: any;
    annotationCreatedNotified: boolean;
    xScale: any;
    yScale: any;
    trackToReplace: any;
    trackRenderer: import("./TrackRenderer").TrackRenderer | null;
    brushSelection: any[] | any[][] | null;
    configTrackMenu: any;
    state: {
        sizeMeasured: boolean;
        height: number;
        width: number;
        tracks: any;
        init: boolean;
        addTrackExtent: null;
        addTrackPosition: null;
        customDialog: null;
        mouseOverOverlayUid: null;
        forceUpdate: number;
        rangeSelection: null[];
        rangeSelectionEnd: boolean;
        chromInfo: null;
        defaultChromSizes: null;
        contextMenuCustomItems: null;
        contextMenuPosition: null;
        addDivisorDialog: null;
    };
    reset: boolean;
    topHeight: number;
    bottomHeight: number;
    leftWidth: number;
    rightWidth: number;
    centerHeight: number;
    centerWidth: number;
    dragTimeout: any;
    previousPropsStr: string;
    brushesCreated: {};
    appZoomedBound: () => void;
    handleClickBound: (evt: any) => void;
    contextMenuHandlerBound: (e: any) => void;
    handleNoTrackAddedBound: () => void;
    handleTracksAddedBound: (newTracks: any, position: any, extent: any, host: any) => any;
    closeMenusBound: () => void;
    handleAddDivisorBound: (series: any) => void;
    handleAddSeriesBound: (trackUid: any) => void;
    handleChangeTrackDataBound: (uid: any, newData: any) => void;
    handleChangeTrackTypeBound: (uid: any, newType: any) => void;
    handleCloseTrackBound: (uid: any) => void;
    handleConfigureTrackBound: (track: any, configComponent: any) => void;
    handleExportTrackDataBound: (hostTrackUid: any, trackUid: any) => void;
    handleLockValueScaleBound: (uid: any) => void;
    handleReplaceTrackBound: (uid: any, orientation: any) => void;
    handleTrackOptionsChangedBound: (trackUid: any, newOptions: any) => any;
    handleUnlockValueScaleBound: (uid: any) => void;
    onAddTrack: (position: any, extent: any) => void;
    waitForDOMAttachment(callback: any): void;
    componentDidMount(): void;
    mounted: boolean | undefined;
    element: HTMLDivElement | null | undefined;
    resizeSensor: ResizeSensor | undefined;
    pubSubs: any[] | undefined;
    /** Get the data in the selection */
    getTracksData(positionedTracks: any, extent: any): {
        name: any;
        mean: number;
        trackUid: any;
    }[];
    appZoomed(): void;
    clearOtherBrushes(myBrush: any): void;
    handleClick(evt: any): void;
    cancelBrushes(): void;
    brushEl: any;
    removeBrushText(): void;
    enableBrushes(): void;
    disableBrushes(): void;
    createBrushes(positionedTracks: any): {};
    brushCurrent: any;
    brushType: string | undefined;
    brushTrack: any;
    brushSelectionRaw: any;
    removeBrushes(): void;
    addBrushes(): void;
    brushes: {} | undefined;
    brushEls: {} | undefined;
    UNSAFE_componentWillReceiveProps(newProps: any): void;
    shouldComponentUpdate(nextProps: any, nextState: any): boolean;
    numTracks: number | undefined;
    componentDidUpdate(prevProps: any, prevState: any): void;
    componentWillUnmount(): void;
    addUidsToTracks(positionedTracks: any): void;
    contextMenuHandler(e: any): void;
    measureSize(): void;
    handleTrackOptionsChanged(trackUid: any, newOptions: any): any;
    handleCollapseTrack(trackUid: any): void;
    handleExpandTrack(trackUid: any): void;
    handleScalesChanged(x: any, y: any): void;
    /**
     * We've received information about a tileset from the server. Register it
     * with the track definition.
     * @param trackUid (string): The identifier for the track
     * @param tilesetInfo (object): Information about the track (hopefully including
     *                              its name.
     */
    handleTilesetInfoReceived(trackUid: any, tilesetInfo: any): void;
    /**
     * Check if all track which are expecting a tileset info have been loaded.
     */
    checkAllTilesetInfoReceived(): void;
    handleOverlayMouseEnter(uid: any): void;
    handleOverlayMouseLeave(uid: any): void;
    handleTrackPositionChosen(pTrack: any, evt: any): void;
    handleNoTrackAdded(): void;
    handleAddDivisor(series: any): void;
    /**
     * The user has selected a track that they wish to use to normalize another
     * track.
     */
    handleDivisorChosen(series: any, newTrack: any): void;
    handleDivideSeries(seriesUid: any): void;
    handleAddSeries(trackUid: any): void;
    handleReplaceTrack(uid: any, orientation: any): void;
    handleAddTrack(position: any, extent: any): void;
    handleResizeTrack(uid: any, width: any, height: any): void;
    closeMenus(): void;
    handleLockValueScale(uid: any): void;
    handleUnlockValueScale(uid: any): void;
    handleCloseTrack(uid: any): void;
    handleChangeTrackType(uid: any, newType: any): void;
    /**
     * Change this tracks data section so that it
     * is either of type "divided" or the "divided"
     * type is removed
     */
    handleChangeTrackData(uid: any, newData: any): void;
    handleTracksAdded(newTracks: any, position: any, extent: any, host: any): any;
    handleCloseTrackMenuOpened(uid: any, clickPosition: any): void;
    handleCloseContextMenu(): void;
    handleCloseTrackMenuClosed(): void;
    handleConfigTrackMenuOpened(uid: any, clickPosition: any): void;
    handleConfigureTrack(track: any, configComponent: any): void;
    handleSortEnd(sortedTracks: any): void;
    createTracksAndLocations(): any[];
    /**
     * Calculate where a track is absoluately positioned within the drawing area
     *
     * @param track: The track object (with members, e.g. track.uid, track.width,
     *   track.height)
     * @param location: Where it's being plotted (e.g. 'top', 'bottom')
     * @return: The position of the track and it's height and width
     *          (e.g. {left: 10, top: 20, width: 30, height: 40}
     */
    calculateTrackPosition(track: any, location: any): {
        left: any;
        top: any;
        width: number;
        height: any;
        track: any;
    };
    /**
     * Find a central heatmap track among all displayed tracks
     *
     * @param  {Array}  tracks  Tracks to be searched.
     * @return  {Object}  The first central heatmap track or `undefined`.
     */
    findCentralHeatmapTrack(tracks: any[]): Object;
    trackUuidToOrientation(trackUuid: any): void;
    overlayTracks(positionedTracks: any): any;
    positionedTracks(): {
        left: any;
        top: any;
        width: number;
        height: any;
        track: any;
    }[];
    createTrackPositionTexts(): React.JSX.Element[];
    handleExportTrackData(hostTrackUid: any, trackUid: any): void;
    /**
     * List all the tracks that are under this mouse position
     */
    listTracksAtPosition(x: any, y: any, isReturnTrackObj?: boolean): (import("./types").UnknownTrackConfig | import("./types").CombinedTrackConfig | import("./types").TrackObject)[];
    listAllTrackObjects(): import("./types").TrackObject[];
    handleZoomToData(): void;
    resetViewport(): void;
    updatablePropsToString(props: any): string;
    getXYScales(): void;
    /**
     * Translate view to data location.
     *
     * @description
     * The view location is in pixels relative to the browser window. The data
     * location is given by the scaling relative to the initial x and y domains.
     * And the genomic location depends on the chrom sizes.
     *
     * @method  rangeViewToDataLoci
     * @author  Fritz Lekschas
     * @date    2018-01-14
     * @param  {Array}  range  Selected view range
     * @param  {Function}  scale  View to data scaling
     * @return  {Array}  2D array of data locations
     */
    rangeViewToDataLoci(range: any[], scale: Function): any[];
    rangeSelectionResetHandler(): void;
    rangeSelection1dEndHandler(axis: any): (range: any) => void;
    rangeSelection1dHandler(axis: any): (range: any) => void;
    rangeSelection1dStartHandler(): void;
    rangeSelection2dHandler(range: any): void;
    rangeSelection2dStartHandler(): void;
    rangeSelection2dEndHandler(range: any): void;
    getContextMenu(): React.JSX.Element | null;
    /**
     * Draw an overlay that shows the positions of all the different
     * track areas
     */
    getIdealizedTrackPositionsOverlay(): React.JSX.Element | null;
    render(): React.JSX.Element;
    galleryDim: any;
    topHeightNoGallery: any;
    bottomHeightNoGallery: any;
    leftWidthNoGallery: any;
    rightWidthNoGallery: any;
    divTiledPlot: HTMLDivElement | null | undefined;
    addEventListeners(): void;
    eventListeners: any[] | undefined;
    removeEventListeners(): void;
}
export namespace TiledPlot {
    namespace defaultProps {
        let isShowGlobalMousePosition: boolean;
        let pluginTracks: {};
        let metaTracks: never[];
        let zoomable: boolean;
    }
    namespace propTypes {
        export let addTrackExtent: PropTypes.Requireable<string>;
        export let addTrackPosition: PropTypes.Requireable<string>;
        export let canvasElement: PropTypes.Requireable<object>;
        export let chooseTrackHandler: PropTypes.Requireable<(...args: any[]) => any>;
        export let chromInfoPath: PropTypes.Requireable<string>;
        export let customDialog: PropTypes.Requireable<any[]>;
        export let closeCustomDialog: PropTypes.Requireable<(...args: any[]) => any>;
        export let disableTrackMenu: PropTypes.Requireable<boolean>;
        export let dragging: PropTypes.Requireable<boolean>;
        export let draggingHappening: PropTypes.Requireable<boolean>;
        export let editable: PropTypes.Requireable<boolean>;
        export let getLockGroupExtrema: PropTypes.Requireable<(...args: any[]) => any>;
        export let initialXDomain: PropTypes.Requireable<any[]>;
        export let initialYDomain: PropTypes.Requireable<any[]>;
        let isShowGlobalMousePosition_1: PropTypes.Requireable<boolean>;
        export { isShowGlobalMousePosition_1 as isShowGlobalMousePosition };
        export let isValueScaleLocked: PropTypes.Requireable<(...args: any[]) => any>;
        export let marginBottom: PropTypes.Validator<number>;
        export let marginLeft: PropTypes.Validator<number>;
        export let marginRight: PropTypes.Validator<number>;
        export let marginTop: PropTypes.Validator<number>;
        export let paddingBottom: PropTypes.Validator<number>;
        export let paddingLeft: PropTypes.Validator<number>;
        export let paddingRight: PropTypes.Validator<number>;
        export let paddingTop: PropTypes.Validator<number>;
        let metaTracks_1: PropTypes.Requireable<any[]>;
        export { metaTracks_1 as metaTracks };
        export let modal: PropTypes.Requireable<object>;
        export let mouseTool: PropTypes.Requireable<string>;
        export let onCloseTrack: PropTypes.Requireable<(...args: any[]) => any>;
        export let onChangeTrackData: PropTypes.Requireable<(...args: any[]) => any>;
        export let onChangeTrackType: PropTypes.Requireable<(...args: any[]) => any>;
        export let onDataDomainChanged: PropTypes.Requireable<(...args: any[]) => any>;
        export let onLockValueScale: PropTypes.Requireable<(...args: any[]) => any>;
        export let onMouseMoveZoom: PropTypes.Requireable<(...args: any[]) => any>;
        export let onNewTilesLoaded: PropTypes.Requireable<(...args: any[]) => any>;
        export let onNoTrackAdded: PropTypes.Requireable<(...args: any[]) => any>;
        export let onRangeSelection: PropTypes.Validator<(...args: any[]) => any>;
        export let onScalesChanged: PropTypes.Requireable<(...args: any[]) => any>;
        export let onTrackOptionsChanged: PropTypes.Requireable<(...args: any[]) => any>;
        export let onTrackPositionChosen: PropTypes.Requireable<(...args: any[]) => any>;
        export let onTracksAdded: PropTypes.Requireable<(...args: any[]) => any>;
        export let onUnlockValueScale: PropTypes.Requireable<(...args: any[]) => any>;
        export let onValueScaleChanged: PropTypes.Requireable<(...args: any[]) => any>;
        export let onResizeTrack: PropTypes.Requireable<(...args: any[]) => any>;
        export let overlays: PropTypes.Requireable<any[]>;
        export let openModal: PropTypes.Requireable<(...args: any[]) => any>;
        export let pixiRenderer: PropTypes.Requireable<object>;
        export let pixiStage: PropTypes.Requireable<object>;
        let pluginTracks_1: PropTypes.Requireable<object>;
        export { pluginTracks_1 as pluginTracks };
        export let pubSub: PropTypes.Validator<object>;
        export let rangeSelection1dSize: PropTypes.Requireable<any[]>;
        export let rangeSelectionToInt: PropTypes.Requireable<boolean>;
        export let registerDraggingChangedListener: PropTypes.Requireable<(...args: any[]) => any>;
        export let removeDraggingChangedListener: PropTypes.Requireable<(...args: any[]) => any>;
        export let setCentersFunction: PropTypes.Requireable<(...args: any[]) => any>;
        export let svgElement: PropTypes.Requireable<object>;
        export let theme: PropTypes.Validator<symbol>;
        export let tracks: PropTypes.Requireable<object>;
        export let trackSourceServers: PropTypes.Requireable<any[]>;
        export let uid: PropTypes.Requireable<string>;
        export let viewOptions: PropTypes.Requireable<object>;
        export let xDomainLimits: PropTypes.Requireable<any[]>;
        export let yDomainLimits: PropTypes.Requireable<any[]>;
        let zoomable_1: PropTypes.Requireable<boolean>;
        export { zoomable_1 as zoomable };
        export let zoomLimits: PropTypes.Requireable<any[]>;
        export let zoomToDataExtentOnInit: PropTypes.Requireable<(...args: any[]) => any>;
    }
}
declare const _default: typeof TiledPlot;
export default _default;
import React from 'react';
import { ResizeSensor } from 'css-element-queries';
import PropTypes from 'prop-types';
