@equinor/esv-intersection
Version:
Intersection component package with testing and automatic documentation.
160 lines • 4.44 kB
TypeScript
import { Selection } from 'd3-selection';
import { ScaleLinear } from 'd3-scale';
import { ZoomBehavior, ZoomTransform } from 'd3-zoom';
import { ZoomAndPanOptions, OnRescaleEvent } from '../interfaces';
export type RescaleFunction = (event: OnRescaleEvent) => void;
/**
* Handle zoom and pan for intersection layers
*/
export declare class ZoomPanHandler {
zoom: ZoomBehavior<HTMLElement, unknown>;
container: Selection<HTMLElement, unknown, null, undefined>;
onRescale: RescaleFunction;
options: ZoomAndPanOptions;
xBounds: [number, number];
yBounds: [number, number];
translateBoundsX: [number, number];
translateBoundsY: [number, number];
scaleX: ScaleLinear<number, number>;
scaleY: ScaleLinear<number, number>;
_zFactor: number;
_enableTranslateExtent: boolean;
currentTransform: ZoomTransform | undefined;
/**
* Constructor
* @param elm, -
* @param options - options
*/
constructor(elm: HTMLElement, onRescale: RescaleFunction, options?: ZoomAndPanOptions);
/**
* Getter returning width of target
* @returns width
*/
get width(): number;
/**
* Getter returning height of target
* @returns height
*/
get height(): number;
/**
* Getter which calculate span from x bounds
* @returns x span
*/
get xSpan(): number;
/**
* Calculate span from y bounds
* @returns y span
*/
get ySpan(): number;
/**
* Ratio between height and width
* @returns ratio
*/
get viewportRatio(): number;
/**
* x ratios screen to value ratio
* @returns ratio
*/
get xRatio(): number;
/**
* y scale screen to value ratio
* @returns ratio
*/
get yRatio(): number;
/**
* Get z-factor
* @returns z-factor
*/
get zFactor(): number;
/**
* Set z factor
* @param factor
*/
set zFactor(factor: number);
/**
* Check if x is inverted (right to left is positive) from x bounds
* @returns true if inverted
*/
get isXInverted(): boolean;
/**
* Check if y is inverted (bottom to top is positive) from y bounds
* @returns true if inverted
*/
get isYInverted(): boolean;
/**
* Get if enable translate extent (pan limit)
* @returns true if enabled
*/
get enableTranslateExtent(): boolean;
/**
* Set enable translate extent (pan limit)
* @param enabled - If should be enabled
*/
set enableTranslateExtent(enabled: boolean);
/**
* Update translate extent (pan limits)
*/
updateTranslateExtent(): void;
/**
* Create an event object from current state
*/
currentStateAsEvent(): OnRescaleEvent;
/**
* Update scale
*/
rescale(): void;
/**
* Initialized handler
*/
init(): void;
/**
* Handle zoom
*/
onZoom(event: {
transform: ZoomTransform;
}): void;
/**
* Update scale
*/
applyTransform(transform: ZoomTransform): void;
/**
* Set new viewport
* @param cx - center X pos
* @param cy - center Y pos
* @param displ
* @param duration - duration of transition
* @returns a merge of filter and payload
*/
setViewport(cx?: number, cy?: number, displ?: number, duration?: number): void;
/**
* Set bounds
*/
setBounds(xBounds: [number, number], yBounds: [number, number]): void;
/**
* Set bounds
*/
setTranslateBounds(xBounds: [number, number], yBounds: [number, number]): void;
/**
* Adjust zoom due to changes in size of target
* @param force - force update even if size did not change
*/
adjustToSize(): void;
adjustToSize(autoAdjust: boolean): void;
adjustToSize(width: number, height: number, force: boolean): void;
/**
* Calculate new transform
* @param dx0
* @param dx1
* @param dy
* @returns New transformation matrix
*/
calculateTransform(dx0: number, dx1: number, dy: number): ZoomTransform;
/**
* Recalcualate the transform
*/
recalculateZoomTransform(): void;
setZoomLevelBoundary(zoomlevels: [number, number]): ZoomPanHandler;
setMaxZoomLevel(zoomlevel: number): ZoomPanHandler;
setMinZoomLevel(zoomlevel: number): ZoomPanHandler;
}
//# sourceMappingURL=ZoomPanHandler.d.ts.map