[d3-zoom] Minor Version 1.7 (#21052)

* [FEATURE] Add `constrain(...)` method
* [DOC] Fix spelling error in JSDoc comment for `clickDistance(...)`
* [CHORE] Bump minor version number
This commit is contained in:
Tom Wanzek 2017-10-27 19:56:16 -04:00 committed by Sheetal Nandi
parent 2b447c6558
commit bbe1bc92cf
2 changed files with 36 additions and 3 deletions

View File

@ -121,6 +121,26 @@ let svgZoom: d3Zoom.ZoomBehavior<SVGRectElement, SVGDatum>;
svgZoom = d3Zoom.zoom<SVGRectElement, SVGDatum>();
// constrain() -------------------------------------------------------------
// chainable
svgZoom = svgZoom.constrain((transform, extent, translateExtent) => {
const t: d3Zoom.ZoomTransform = transform;
const ve: [[number, number], [number, number]] = extent;
const te: [[number, number], [number, number]] = translateExtent;
const dx0 = t.invertX(ve[0][0]) - te[0][0];
const dx1 = t.invertX(ve[1][0]) - te[1][0];
const dy0 = transform.invertY(ve[0][1]) - te[0][1];
const dy1 = transform.invertY(ve[1][1]) - te[1][1];
return t.translate(
dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),
dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)
);
});
let constraintFn: (transform: d3Zoom.ZoomTransform, extent: [[number, number], [number, number]], translateExtent: [[number, number], [number, number]]) => d3Zoom.ZoomTransform;
constraintFn = svgZoom.constrain();
// filter() ----------------------------------------------------------------
// chainable

View File

@ -1,9 +1,9 @@
// Type definitions for d3JS d3-zoom module 1.6
// Type definitions for d3JS d3-zoom module 1.7
// Project: https://github.com/d3/d3-zoom/
// Definitions by: Tom Wanzek <https://github.com/tomwanzek>, Alex Ford <https://github.com/gustavderdrache>, Boris Yankov <https://github.com/borisyankov>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// Last module patch version validated against: 1.6.0
// Last module patch version validated against: 1.7.0
import { ArrayLike, Selection, TransitionLike, ValueFn } from 'd3-selection';
import { ZoomView, ZoomInterpolator } from 'd3-interpolate';
@ -499,6 +499,19 @@ export interface ZoomBehavior<ZoomRefElement extends ZoomedElementBaseType, Datu
*/
scaleTo(transition: TransitionLike<ZoomRefElement, Datum>, k: ValueFn<ZoomRefElement, Datum, number>): void;
/**
* Returns the current constraint function.
* The default implementation attempts to ensure that the viewport extent does not go outside the translate extent.
*/
constrain(): (transform: ZoomTransform, extent: [[number, number], [number, number]], translateExtent: [[number, number], [number, number]]) => ZoomTransform;
/**
* Sets the transform constraint function to the specified function and returns the zoom behavior.
*
* @param constraint A constraint function which returns a transform given the current transform, viewport extent and translate extent.
* The default implementation attempts to ensure that the viewport extent does not go outside the translate extent.
*/
constrain(constraint: ((transform: ZoomTransform, extent: [[number, number], [number, number]], translateExtent: [[number, number], [number, number]]) => ZoomTransform)): this;
/**
* Returns the current filter function.
*/
@ -647,7 +660,7 @@ export interface ZoomBehavior<ZoomRefElement extends ZoomedElementBaseType, Datu
/**
* Set the maximum distance that the mouse can move between mousedown and mouseup that will trigger
* a subsequent click event. If at any point between mousedown and mouseup the mouse is greater than or equal to
* distance from its position on mousedown, the click event follwing mouseup will be suppressed.
* distance from its position on mousedown, the click event following mouseup will be suppressed.
*
* @param distance The distance threshold between mousedown and mouseup measured in client coordinates (event.clientX and event.clientY).
* The default is zero.