@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 2.51 kB
JavaScript
;exports.__esModule=true;exports.default=_default;var _lib=require("@fusioncharts/core/src/lib");var _pixelValidatorUtils=require("../../_utils/pixel-validator-utils");var VERTICAL="vertical",HORIZONTAL="horizontal",UP="up",DOWN="down",wheelZoomDeltaModeLinePixels=17,wheelZoomDeltaModeScreenPixels=53,getWheelEventDeltaYInPixels=function getWheelEventDeltaYInPixels(deltaMode,deltaVal){switch(deltaMode){case WheelEvent.DOM_DELTA_LINE:return deltaVal*wheelZoomDeltaModeLinePixels;case WheelEvent.DOM_DELTA_PAGE:return deltaVal*wheelZoomDeltaModeScreenPixels;default:return deltaVal}},wheelInteraction=function wheelInteraction(canvas){return function(e){var chart=canvas.getLinkedParent(),scale=canvas.config.xConfigs[0].scale,_scale$getRange=scale.getRange(),currStartRange=_scale$getRange[0],currEndRange=_scale$getRange[1],originalEvent=e.originalEvent,direction,leftClampDirection,rightClampDirection,offset,coordinate,translationObj,translationX,chartX,r1,r2,sum;if(Math.abs(originalEvent.deltaY)>Math.abs(originalEvent.deltaX)){direction=VERTICAL;offset=getWheelEventDeltaYInPixels(originalEvent.originalEvent.deltaMode,originalEvent.deltaY)}else{direction=HORIZONTAL;offset=getWheelEventDeltaYInPixels(originalEvent.originalEvent.deltaMode,originalEvent.deltaX)}if(direction===VERTICAL){coordinate=(0,_lib.getMouseCoordinate)(canvas.getFromEnv("chart-container"),e.originalEvent,chart);translationObj=canvas.getTranslation();translationX=translationObj?translationObj.x:0;chartX=coordinate.chartX-translationX;r1=chartX-currStartRange;r2=currEndRange-chartX;sum=r1+r2;currStartRange-=2*offset*r1/sum;currEndRange+=2*offset*r2/sum;var _clampWithinContextRa=(0,_pixelValidatorUtils.clampWithinContextRange)([currStartRange,currEndRange],scale,canvas.getFromEnv("contextScalesX")[0]);currStartRange=_clampWithinContextRa[0];currEndRange=_clampWithinContextRa[1];leftClampDirection=offset<0?UP:DOWN;rightClampDirection=offset>=0?UP:DOWN;chart.setPixelLimit([currStartRange,currEndRange],scale,[leftClampDirection,rightClampDirection],{name:"canvasWheel"})}else{currEndRange+=offset;currStartRange+=offset;leftClampDirection=offset>=0?UP:DOWN;rightClampDirection=leftClampDirection;chart.setPixelLimit([currStartRange,currEndRange],scale,[leftClampDirection,rightClampDirection],{name:"canvasWheel"})}}};function _default(canvas){var config=canvas.config;if(config.enableInteraction&&!config.wheelEventAdded){canvas.addEventListener("fc-wheel",wheelInteraction(canvas));config.wheelEventAdded=true}}