UNPKG

higlass

Version:

HiGlass Hi-C / genomic / large data viewer

197 lines (196 loc) 6.04 kB
export default Track; export type TrackContext = { /** * - The track ID. */ id: string; /** * - The pub-sub channel. */ pubSub?: (import("pub-sub-es").PubSub & { __fake__?: boolean; }) | undefined; /** * - A function that returns the current theme. */ getTheme?: (() => import("./types").Theme) | undefined; }; export type ExtendedTrackContext<T> = T & TrackContext; /** * @typedef TrackContext * @property {string} id - The track ID. * @property {import('pub-sub-es').PubSub & { __fake__?: boolean }} [pubSub] - The pub-sub channel. * @property {() => import('./types').Theme} [getTheme] - A function that returns the current theme. */ /** * @template T * @typedef {T & TrackContext} ExtendedTrackContext */ /** @template Options */ declare class Track<Options> { /** * @param {TrackContext} context * @param {Options} options */ constructor(context: TrackContext, options: Options); context: TrackContext; /** @type {import('pub-sub-es').PubSub} */ pubSub: import("pub-sub-es").PubSub; /** @type {string} */ id: string; /** @type {import('./types').Scale} */ _xScale: import("./types").Scale; /** @type {import('./types').Scale} */ _yScale: import("./types").Scale; /** @type {import('./types').Scale} */ _refXScale: import("./types").Scale; /** @type {import('./types').Scale} */ _refYScale: import("./types").Scale; /** @type {[number, number]} */ position: [number, number]; /** @type {[number, number]} */ dimensions: [number, number]; /** @type {Options} */ options: Options; /** @type {Array<import('pub-sub-es').Subscription>} */ pubSubs: Array<import("pub-sub-es").Subscription>; /** @type {() => (import('./types').Theme | undefined)} */ getTheme: () => (import("./types").Theme | undefined); isLeftModified: boolean; /** * Check if a 2d location (x, y) is within the bounds of this track. * * @param {number} x - X position to be tested. * @param {number} y - Y position to be tested. * @return {boolean} If `true` location is within the track. */ isWithin(x: number, y: number): boolean; /** * Get a property from the track. * @template {keyof this} T * @param {T} prop - The property to get. * @return {() => this[T]} */ getProp<T extends keyof this>(prop: T): () => this[T]; getData(): void; /** * Capture click events. x and y are relative to the track position * @template T * @param {number} x - X position of the click event. * @param {number} y - Y position of the click event. * @param {T} evt - The event. * @return {{ type: 'generic', event: T, payload: null }} */ click<T>(x: number, y: number, evt: T): { type: "generic"; event: T; payload: null; }; /** There was a click event outside the track * */ clickOutside(): void; /** @returns {[number, number]} */ getDimensions(): [number, number]; /** @param {[number, number]} newDimensions */ setDimensions(newDimensions: [number, number]): void; /** * @overload * @return {import('./types').Scale} */ refXScale(): import("./types").Scale; /** * @overload * @param {import('./types').Scale} scale * @return {this} */ refXScale(scale: import("./types").Scale): this; /** * @overload * @return {import('./types').Scale} */ refYScale(): import("./types").Scale; /** * @overload * @param {import('./types').Scale} scale * @return {this} */ refYScale(scale: import("./types").Scale): this; /** * @overload * @return {import('./types').Scale} */ xScale(): import("./types").Scale; /** * @overload * @param {import('./types').Scale} scale * @return {this} */ xScale(scale: import("./types").Scale): this; /** * @overload * @return {import('./types').Scale} */ yScale(): import("./types").Scale; /** * @overload * @param {import('./types').Scale} scale * @return {this} */ yScale(scale: import("./types").Scale): this; /** * @param {import('./types').Scale} newXScale * @param {import('./types').Scale} newYScale * @returns {void} */ zoomed(newXScale: import("./types").Scale, newYScale: import("./types").Scale): void; /** * @param {import('./types').Scale} refXScale * @param {import('./types').Scale} refYScale * @returns {void} */ refScalesChanged(refXScale: import("./types").Scale, refYScale: import("./types").Scale): void; /** @returns {void} */ draw(): void; /** @returns {[number, number]} */ getPosition(): [number, number]; /** * @param {[number, number]} newPosition * @returns {void} */ setPosition(newPosition: [number, number]): void; /** * A blank handler for MouseMove / Zoom events. Should be overriden * by individual tracks to provide * * @param {{}} evt * @returns {void} */ defaultMouseMoveHandler(evt: {}): void; /** @returns {void} */ remove(): void; /** * @param {Options} options * @returns {void} */ rerender(options: Options): void; /** * This function is for seeing whether this track should respond * to events at this mouse position. The difference to `isWithin()` is that it * can be overwritten if a track is inactive for example. * * @param {number} x - X position to be tested. * @param {number} y - Y position to be tested. * @returns {boolean} */ respondsToPosition(x: number, y: number): boolean; /** * @param {number} trackY * @param {number} kMultiplier * @returns {void} */ zoomedY(trackY: number, kMultiplier: number): void; /** * @param {number} dY * @returns {void} */ movedY(dY: number): void; }