UNPKG

d3-zoomer

Version:

A library for easy pan-zoom behavior of d3

127 lines (86 loc) 5.96 kB
# d3-zoomer [![npm version][npm-image]][npm-url] [![npm downloads][downloads-image]][downloads-url] [![Build Status][travis-image]][travis-url] [![Dependencies Status][dependencies-image]][dependencies-url] [![DevDependencies Status][dev-dependencies-image]][dev-dependencies-url] [![Known Vulnerabilities][vulnerabilities-image]][vulnerabilities-url] A library to use d3-zoom easily. See how to use [d3-zoomer example](https://kimxogus.github.io/d3-zoomer). ## Installing - d3-zoomer is based on d3 version 4. - NPM ```bash npm install d3-zoomer ``` ```js var d3Zoomer = require('d3-zoomer'); ``` - Vanilla: Download [latest release](https://github.com/kimxogus/d3-zoomer/releases/latest). ```html <script src="path/to/d3.min.js"></script> <script src="path/to/d3-zoomer.min.js"></script> <script> var zoomer = d3.zoomer(); </script> ``` ## Usage - You can call *zoomer* with *svg* or *g* which is child of *svg*. Zoomer will add class name to target *g* elements, and those target elements will be zoomed and panned. - When you call *zoomer* with *svg*, only *g* elements with [targetClass](#targetClass) will be targeted. - When you call *zoomer* with *g*, [targetClass](#targetClass) will be added to the *g* elements and they will be targeted. ```js // Usage 1 var svg = d3.select('svg').call(zoomer); // Usage 2 var g = d3.select('svg').append('g').call(zoomer); ``` ## API Reference <a name="zoomer" href="#zoomer">#</a> d3.<b>zoomer</b>() [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js "Source") Creates a new zoomer. <a name="targetClass" href="#targetClass">#</a> *zoomer*.<b>targetClass</b>([<i>targetClass</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L101 "Source") Sets target class name(```'pan-zoom'``` by default) to be zoomed and panned. Zoomer will select all *g* classed with *targetClass*. If there are no *g* with *targetClass*, Zoomer will create a new *g* with *targetClass*. If *targetClass* is not specified, current *targetClass* will be returned. <a name="target" href="#target">#</a> *zoomer*.<b>target</b>() [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L110 "Source") Returns current targets(*g* elements with [targetClass](#targetClass)) <a name="scale" href="#scale">#</a> *zoomer*.<b>scale</b>([<i>scale</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L114 "Source") ScaleTo function. If *scale* is not specified, current scale will be returned. *scale* of this function is not the scale of transform attribute. It's translated value from [scaleRange](#scaleRange) to [scaleDomain](#scaleDomain). <a name="scaleRange" href="#scaleRange">#</a> *zoomer*.<b>scaleRange</b>([<i>scaleRange</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L122 "Source") Sets scaleRange with specified array of numbers [*k0*, *k1*], which [*0.1*, *2*] by default, where *k0* is lower limit of actual scale of transform and *k1* is upper limit. If *scaleRange* is not specified, current *scaleRange* will be returned. <a name="scaleDomain" href="#scaleDomain">#</a> *zoomer*.<b>scaleDomain</b>([<i>scaleDomain</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L133 "Source") Sets scaleDomain with specified array of numbers [*k0*, *k1*], which [*0.1*, *2*] by default, where *k0* is translated scale of lower limit of *scaleRange* and *k1* is translated scale of upper limit. If *scaleDomain* is not specified, current *scaleDomain* will be returned. <a name="on" href="#on">#</a> *zoomer*.<b>on</b>(<i>typename</i>[, <i>callback</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L143 "Source") If *callback* is specified, register event listener for *typename*. If not, currently registered *callback* for *typename* will be returned. Available *typenames* are as follows. - ```start```: after zooming begins. - ```zoom```: after a change to the zoom transform. - ```end```: after zooming ends. See [d3-zoom.on](https://github.com/d3/d3-zoom#zoom_on) for details. <a name="transform" href="#transform">#</a> *zoomer*.<b>transform</b>([<i>transform</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L148 "Source") If *transform* is specified, apply the transform to [target](#target). To apply transform, *transform* should be an object with properties of *x*, *y* and *k*. You can specify only one or two of those properties like ```js zoomer.transform({ x: 100 }); ``` If *transform* is not specified, current transform object([d3-zoom.zoomTransform](https://github.com/d3/d3-zoom#zoomTransform) object) will be returned. <a name="enabled" href="#enabled">#</a> *zoomer*.<b>enabled</b>([<i>enabled</i>]) [<>](https://github.com/kimxogus/d3-zoomer/blob/master/src/index.js#L175 "Source") Sets if zoom is enabled. If *enabled* is specified, zoom will be enabled(*true*) or disabled(*false*) as [d3-zoom.filter](https://github.com/d3/d3-zoom#zoom_filter). If not, it will return current *enabled* status of d3-zoom. [npm-image]: https://img.shields.io/npm/v/d3-zoomer.svg [npm-url]: https://npmjs.org/package/d3-zoomer [downloads-image]: https://img.shields.io/npm/dm/d3-zoomer.svg [downloads-url]: https://npmjs.org/package/d3-zoomer [travis-image]: https://travis-ci.org/kimxogus/d3-zoomer.svg [travis-url]: https://travis-ci.org/kimxogus/d3-zoomer [dependencies-image]: https://david-dm.org/kimxogus/d3-zoomer.svg [dependencies-url]: https://david-dm.org/kimxogus/d3-zoomer [dependencies-image]: https://david-dm.org/kimxogus/d3-zoomer/status.svg [dependencies-url]: https://david-dm.org/kimxogus/d3-zoomer [dev-dependencies-image]: https://david-dm.org/kimxogus/d3-zoomer/dev-status.svg [dev-dependencies-url]: https://david-dm.org/kimxogus/d3-zoomer?type=dev [vulnerabilities-image]: https://snyk.io/test/github/kimxogus/d3-zoomer/badge.svg [vulnerabilities-url]: https://snyk.io/test/github/kimxogus/d3-zoomer