import {dispatch} from 'd3'; import {setMethodsFromAttrs} from '../../modules/util'; import pointNum from './pointNum'; import zoom from './zoom'; import zoomExtent from './zoomExtent'; import zoomed from './zoomed'; import zoomGen from './zoomGen'; import zoomTransform from './zoomTransform'; const _attrs = { zoom : false, zoomGen: null } const zoomMixin = Base => { /** * @mixin ZoomMixin */ let ZoomMixin = class extends Base { constructor() { super(); this.setAttrs(_attrs); this.__execs__.zoom = null; this.__execs__.zoomDispatch = dispatch('zoom'); this.rebindOnMethod(this.__execs__.zoomDispatch); } } ZoomMixin.prototype.pointNum = pointNum; ZoomMixin.prototype.zoom = zoom; ZoomMixin.prototype.zoomed = zoomed; ZoomMixin.prototype.zoomExtent = zoomExtent; ZoomMixin.prototype.zoomGen = zoomGen; ZoomMixin.prototype.zoomTransform = zoomTransform; ZoomMixin.prototype.isBrushZoom = isBrushZoom; setMethodsFromAttrs(ZoomMixin, _attrs); return ZoomMixin; } function isBrushZoom() { return this.__attrs__.zoom && this.__attrs__.zoom === 'brush'; } export default zoomMixin;