@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 5.93 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _tool=_interopRequireDefault(require("../tool"));var _lib=require("../../../lib");var _dependencyManager=require("../../../dependency-manager");var R=(0,_dependencyManager.getDep)("redraphael","plugin"),M="M",m="m",v="v",COLOR_5F5F5F="#5F5F5F";var ScrollAnchor=function(_Tool){function ScrollAnchor(){var _this;_this=_Tool.call(this)||this;_this.updateColor=function(){return R.tintshade.apply(R,arguments).rgba};_this._evtHandlers={};return _this}(0,_inheritsLoose2.default)(ScrollAnchor,_Tool);var _proto=ScrollAnchor.prototype;_proto.configureAttributes=function configureAttributes(obj){if(obj===void 0){obj={}}var selfConfig=this.config,scrollbar=this.getLinkedParent(),scrollbarConfig=scrollbar.config,useLegendScrollGradient=scrollbarConfig.useLegendScrollGradient,legendAnchorColor=scrollbarConfig.legendScrollAnchorColor,defaultGradientColor=[270*obj.isHorizontal,this.updateColor(obj.color,.3)+":40",this.updateColor(obj.color,-.6,-.7)],solidAnchorFill=legendAnchorColor!=null?legendAnchorColor:obj.displayFlat?this.updateColor(obj.color,-.6):defaultGradientColor.join("-"),gradientAnchorFill=useLegendScrollGradient?[legendAnchorColor.angle,legendAnchorColor.startcolor,legendAnchorColor.endcolor].join("-"):legendAnchorColor;selfConfig.drawStripes=(0,_lib.pluckNumber)(obj.drawStripes,0);selfConfig._nodeDimensions={};selfConfig.style={scroller:Object.assign({},{fill:useLegendScrollGradient?gradientAnchorFill:solidAnchorFill,stroke:scrollbarConfig.legendAnchorStrokeBorderColor?scrollbarConfig.legendAnchorStrokeBorderColor:R.tintshade(obj.color,-.6).rgba},obj.style.scroller),grip:Object.assign({},{stroke:COLOR_5F5F5F,"stroke-linecap":"round","stroke-width":2},obj.style.grip)}};_proto.attachEventHandlers=function attachEventHandlers(){var scrollAnchor=this,scrollbar=this.getLinkedParent(),scrollbarConfig=scrollbar.config,_dragstart,_dragaxis,newScrollPos,isHorizontal=scrollbarConfig.isHorizontal;scrollAnchor.addEventListener("fc-dragmove",scrollAnchor._evtHandlers.dragmove||(scrollAnchor._evtHandlers.dragmove=function(event){newScrollPos=_dragstart+event.originalEvent.data[_dragaxis]/this.config.trackLength;if(newScrollPos>=1){newScrollPos=1}else if(newScrollPos<=0||isNaN(newScrollPos)){newScrollPos=0}scrollbarConfig.scrollPosition=newScrollPos;scrollAnchor.asyncDraw();typeof scrollbarConfig.evt.scroll==="function"&&scrollbarConfig.evt.scroll(scrollbarConfig.scrollPosition)}));scrollAnchor.addEventListener("fc-dragstart",scrollAnchor._evtHandlers.dragstart||(scrollAnchor._evtHandlers.dragstart=function(){_dragaxis=isHorizontal?0:1;_dragstart=scrollbarConfig.scrollPosition;typeof scrollbarConfig.evt.scrollStart==="function"&&scrollbarConfig.evt.scrollStart(scrollbarConfig.scrollPosition)}));scrollAnchor.addEventListener("fc-dragend",scrollAnchor._evtHandlers.dragend||(scrollAnchor._evtHandlers.dragend=function(){typeof scrollbarConfig.evt.scrollEnd==="function"&&scrollbarConfig.evt.scrollEnd(scrollbarConfig.scrollPosition)}))};_proto.draw=function draw(){var scrollAnchor=this,selfConfig=scrollAnchor.config,scrollbar=this.getLinkedParent(),scrollbarConfig=scrollbar.config,x=scrollbarConfig.x+.5,y=scrollbarConfig.y+scrollbarConfig.padding+.5,width=scrollbarConfig.width-1,height=scrollbarConfig.height-1<1?1:scrollbarConfig.height-1,ratio=scrollbarConfig.restrictScrollAnchor?Math.max(scrollbarConfig.scrollRatio,.01):scrollbarConfig.scrollRatio,isHorizontal=scrollbarConfig.isHorizontal,position=(0,_lib.pluckNumber)(scrollbarConfig.scrollPosition,scrollbarConfig.startPercent,0),trackLength,trackOffset,button=0,track=isHorizontal?width*ratio:height*ratio;if(position>=1){position=1}else if(position<=0||isNaN(position)){position=0}if(scrollbarConfig.showButtons){button=isHorizontal?Math.min(height,width*.5):Math.min(width,height*.5);track-=button*2*ratio}selfConfig.trackLength=trackLength=isHorizontal?width-2*button-track:height-2*button-track;selfConfig.trackOffset=trackOffset=isHorizontal?x+button+.5:y+button+.5;selfConfig._nodeDimensions={x:isHorizontal?trackOffset+trackLength*position:x,y:isHorizontal?y:trackOffset+trackLength*position,width:isHorizontal?track-1<1?1:track-1:width<1?1:width,height:isHorizontal?height<1?1:height:track-1<1?1:track-1};scrollAnchor.addGraphicalElement({el:"rect",attr:{x:selfConfig._nodeDimensions.x,y:selfConfig._nodeDimensions.y,width:selfConfig._nodeDimensions.width,height:selfConfig._nodeDimensions.height,r:scrollbarConfig.roundEdges&&2||0,opacity:selfConfig.style.scroller.opacity},css:selfConfig.style.scroller,container:{id:"scrollbarGroup",label:"scrollbarGroup",isParent:true},component:scrollAnchor,label:"scrollbarAnchor",id:"scrollbarAnchor"});if(selfConfig.drawStripes&&selfConfig._nodeDimensions.width>=8){scrollAnchor.addGraphicalElement({el:"path",attr:{path:[M,selfConfig._nodeDimensions.x+selfConfig._nodeDimensions.width/2-3,selfConfig._nodeDimensions.y+.2*selfConfig._nodeDimensions.height,v,.6*selfConfig._nodeDimensions.height,m,3,-.6*selfConfig._nodeDimensions.height,v,.6*selfConfig._nodeDimensions.height,m,3,-.6*selfConfig._nodeDimensions.height,v,.6*selfConfig._nodeDimensions.height],opacity:selfConfig.style.grip.opacity},css:selfConfig.style.grip,container:{id:"scrollbarGroup",label:"scrollbarGroup",isParent:true},component:scrollAnchor,label:"scrollbarAnchorStripe",id:"scrollbarAnchorStripe"})}};_proto.scrollTo=function scrollTo(position){var scrollbarConfig=this.getLinkedParent().config;if(position>=0&&position<=1){scrollbarConfig.scrollPosition=position;this.asyncDraw();if(typeof scrollbarConfig.evt.scroll==="function"){scrollbarConfig.evt.scroll(scrollbarConfig.scrollPosition)}}};return ScrollAnchor}(_tool.default);var _default=exports.default=ScrollAnchor;
;