higlass
Version:
HiGlass Hi-C / genomic / large data viewer
316 lines (315 loc) • 14.3 kB
TypeScript
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';