/** * @typedef {import("../spec/scale.js").NumericDomain} NumericDomain * @typedef {import("../spec/scale.js").ScalarDomain} ScalarDomain * @typedef {import("../spec/scale.js").ComplexDomain} ComplexDomain * @typedef {import("../spec/scale.js").ZoomParams} ZoomParams * @typedef {import("../types/encoder.js").VegaScale} VegaScale * @typedef {VegaScale & { props: import("../spec/scale.js").Scale }} ScaleWithProps */ export default class ScaleInteractionController { /** * @param {object} options * @param {() => ScaleWithProps} options.getScale * @param {() => import("../utils/animator.js").default} options.getAnimator * @param {() => number[]} options.getInitialDomainSnapshot * @param {() => number[]} options.getResetDomain * @param {(domain: ScalarDomain | ComplexDomain) => number[]} options.fromComplexInterval * @param {() => number[]} options.getGenomeExtent */ constructor({ getScale, getAnimator, getInitialDomainSnapshot, getResetDomain, fromComplexInterval, getGenomeExtent, }: { getScale: () => ScaleWithProps; getAnimator: () => import("../utils/animator.js").default; getInitialDomainSnapshot: () => number[]; getResetDomain: () => number[]; fromComplexInterval: (domain: ScalarDomain | ComplexDomain) => number[]; getGenomeExtent: () => number[]; }); getZoomExtent(): number[]; isZoomable(): boolean; isZoomingSupported(): boolean; /** * @param {number[]} previousDomain * @param {number[]} newDomain * @returns {"restore" | "animate" | "notify" | "none"} */ getDomainChangeAction(previousDomain: number[], newDomain: number[]): "restore" | "animate" | "notify" | "none"; /** * Return true if the scale is zoomable and the current domain differs from the initial domain. * * @returns true if zoomed */ isZoomed(): boolean; /** * Pans (translates) and zooms using a specified scale factor. * * @param {number} scaleFactor * @param {number} scaleAnchor * @param {number} pan * @returns {boolean} true if the scale was zoomed */ zoom(scaleFactor: number, scaleAnchor: number, pan: number): boolean; /** * Immediately zooms to the given interval. * * @param {NumericDomain | ComplexDomain} domain * @param {boolean | number} [duration] an approximate duration for transition. * Zero duration zooms immediately. Boolean `true` indicates a default duration. */ zoomTo(domain: NumericDomain | ComplexDomain, duration?: boolean | number): Promise; /** * Resets the current domain to the initial one * * @returns true if the domain was changed */ resetZoom(): boolean; /** * Returns the zoom level with respect to the reference domain span (the original domain). */ getZoomLevel(): number; #private; } export type NumericDomain = import("../spec/scale.js").NumericDomain; export type ScalarDomain = import("../spec/scale.js").ScalarDomain; export type ComplexDomain = import("../spec/scale.js").ComplexDomain; export type ZoomParams = import("../spec/scale.js").ZoomParams; export type VegaScale = import("../types/encoder.js").VegaScale; export type ScaleWithProps = VegaScale & { props: import("../spec/scale.js").Scale; }; //# sourceMappingURL=scaleInteractionController.d.ts.map