{"version":3,"sources":["webpack:///./node_modules/echarts/lib/component/visualMap/PiecewiseView.js","webpack:///./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js","webpack:///./node_modules/echarts/lib/chart/candlestick.js","webpack:///./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack:///./node_modules/echarts-wordcloud/src/wordCloud.js","webpack:///./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack:///./node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack:///./node_modules/echarts/lib/component/visualMapPiecewise.js","webpack:///./node_modules/echarts/lib/visual/visualSolution.js","webpack:///./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack:///./node_modules/echarts/lib/component/visualMap/ContinuousModel.js","webpack:///./node_modules/echarts-wordcloud/src/WordCloudSeries.js","webpack:///./node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack:///./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack:///./node_modules/echarts/lib/component/visualMap.js","webpack:///./node_modules/echarts/lib/visual/VisualMapping.js","webpack:///./node_modules/echarts/lib/visual/visualDefault.js","webpack:///./node_modules/echarts/lib/chart/bar/BarView.js","webpack:///./node_modules/v-charts/lib/candle.common.js","webpack:///./node_modules/echarts/lib/component/visualMap/VisualMapView.js","webpack:///./node_modules/echarts/lib/component/visualMapContinuous.js","webpack:///./node_modules/echarts-wordcloud/src/layout.js","webpack:///./node_modules/echarts-wordcloud/index.js","webpack:///./node_modules/echarts/lib/chart/bar.js","webpack:///./node_modules/v-charts/lib/wordcloud.common.js","webpack:///./node_modules/echarts/lib/component/visualMap/visualEncoding.js","webpack:///./node_modules/echarts/lib/component/visualMap/preprocessor.js","webpack:///./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack:///./node_modules/echarts/lib/component/visualMap/typeDefaulter.js","webpack:///./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack:///./src/views/Macro.vue?5271","webpack:///./src/components/guardMarcoK.vue?aef7","webpack:///src/components/guardMarcoK.vue","webpack:///./src/components/guardMarcoK.vue?ee6c","webpack:///./src/components/guardMarcoK.vue","webpack:///src/views/Macro.vue","webpack:///./src/views/Macro.vue?94ad","webpack:///./src/views/Macro.vue","webpack:///./node_modules/echarts-wordcloud/src/WordCloudView.js","webpack:///./node_modules/echarts/lib/util/shape/sausage.js","webpack:///./node_modules/echarts/lib/component/visualMap/helper.js","webpack:///./node_modules/echarts/lib/component/visualMap/visualMapAction.js","webpack:///./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js","webpack:///./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack:///./node_modules/echarts/lib/chart/bar/helper.js","webpack:///./node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack:///./node_modules/echarts/lib/component/visualMap/VisualMapModel.js"],"names":["zrUtil","VisualMapView","graphic","_symbol","createSymbol","layout","helper","PiecewiseVisualMapView","extend","type","doRender","thisGroup","this","group","removeAll","visualMapModel","textGap","get","textStyleModel","textFont","getFont","textFill","getTextColor","itemAlign","_getItemAlign","itemSize","viewData","_getViewData","endsText","showLabel","retrieve","renderItem","item","piece","itemGroup","Group","onclick","bind","_onItemClick","_enableHoverLink","indexInModelPieceList","representValue","getRepresentValue","_createItemSymbol","visualState","getValueState","add","Text","style","x","y","text","textVerticalAlign","textAlign","opacity","_renderEndsText","each","viewPieceList","box","renderBackground","positionGroup","pieceIndex","onHoverLink","method","option","hoverLink","api","dispatchAction","batch","makeHighDownBatch","findTargetDataIndices","on","modelOption","orient","getItemAlign","align","map","getPieceList","index","inverse","reverse","slice","shapeParam","getControllerVisual","selected","clone","newKey","getSelectedMapKey","selectedMode","o","key","from","uid","visualMapId","id","_default","module","exports","_config","__DEV__","VisualMapModel","VisualMapping","visualDefault","_number","reformIntervals","PiecewiseModel","defaultOption","minOpen","maxOpen","itemWidth","itemHeight","itemSymbol","pieceList","categories","splitNumber","itemGap","optionUpdated","newOption","isInit","superApply","arguments","_pieceList","resetExtent","mode","_mode","_determineMode","resetMethods","call","_resetSelected","resetVisual","mappingOption","state","mappingMethod","dataExtent","getExtent","visual","completeVisualOption","visualTypesInPieces","visualTypes","listVisualTypes","isCategory","has","obj","visualType","isObject","hasOwnProperty","pieces","v","exists","stateList","target","prototype","apply","thisOption","hasSel","value","length","setSelected","findPieceIndex","result","eachTargetSeries","seriesModel","dataIndices","data","getData","getDataDimension","dataIndex","pIdx","push","seriesId","pieceInterval","interval","Infinity","getVisualMeta","getColorVisual","stops","outerColors","edge","unshift","curr","setStop","valueState","color","precision","Math","min","max","parseInt","splitStep","toFixed","close","formatValueText","cate","normalizeReverse","pieceListItem","label","closeList","infinityList","useMinMax","lg","names","i","retrieveVisuals","edgeSymbols","echarts","preprocessor","candlestickVisual","candlestickLayout","registerPreprocessor","registerVisual","registerLayout","_graphic","subPixelOptimize","createRenderPlanner","parsePercent","_util","retrieve2","LargeArr","Float32Array","Array","seriesType","plan","reset","coordSys","coordinateSystem","candleWidth","calculateCandleWidth","cDimIdx","vDimIdx","coordDims","cDim","mapDimension","vDims","openDim","closeDim","lowestDim","highestDim","setLayout","isSimpleBox","progress","pipelineContext","large","largeProgress","normalProgress","params","next","axisDimVal","openVal","closeVal","lowestVal","highestVal","ocLow","ocHigh","ocLowPoint","getPoint","ocHighPoint","lowestPoint","highestPoint","ends","addBodyEnd","subPixelOptimizePoint","setItemLayout","sign","getSign","initBaseline","brushRect","makeBrushRect","val","p","isNaN","NaN","dataToPoint","point","start","point1","point2","pmin","pmax","width","height","points","count","offset","tmpIn","tmpOut","extent","baseAxis","getBaseAxis","bandWidth","getBandWidth","abs","barMaxWidth","barMinWidth","barWidth","layoutUtil","wordCloudLayoutHelper","isSupported","Error","updateCanvasMask","maskCanvas","ctx","getContext","imageData","getImageData","newImageData","createImageData","toneSum","toneCnt","alpha","tone","threshold","putImageData","ecModel","eachSeriesByType","gridRect","getLayoutRect","getBoxLayoutParams","getWidth","getHeight","canvas","document","createElement","maskImage","drawImage","e","console","error","toString","sizeRange","rotationRange","valueExtent","getDataExtent","DEGREE_TO_RAD","PI","gridSize","onWordCloudDrawn","detail","drawn","layoutInstance","ondraw","gx","gy","list","mapArray","idx","itemModel","getItemModel","getName","number","linearMap","sort","a","b","fontFamily","fontWeight","ellipticity","minRotation","maxRotation","clearCanvas","rotateRatio","rotationStep","drawOutOfBound","shuffle","shape","addEventListener","dispose","removeEventListener","preventDefault","series","util","isArray","compats","compatTextStyle","textStyle","format","capitalFirst","seriesItem","normal","emphasis","BaseBarSeries","dependencies","brushSelector","getProgressive","getProgressiveThreshold","progressiveThreshold","largeThreshold","clip","roundCap","showBackground","backgroundStyle","borderColor","borderWidth","borderType","borderRadius","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","ChartView","Path","_createClipPathFromCoordSys","createClipPath","NORMAL_ITEM_STYLE_PATH","EMPHASIS_ITEM_STYLE_PATH","SKIP_PROPS","CandlestickView","render","removeClipPath","_updateDrawMode","_isLargeDraw","_renderLarge","_renderNormal","incrementalPrepareRender","_clear","incrementalRender","_incrementalRenderLarge","_incrementalRenderNormal","isLargeDraw","oldData","_data","getLayout","needsClip","coord","clipArea","getArea","diff","newIdx","hasValue","el","itemLayout","getItemLayout","isNormalBoxClipped","createNormalBox","initProps","setBoxCommon","setItemGraphicEl","update","oldIdx","getItemGraphicEl","remove","updateProps","execute","createLarge","clipPath","setClipPath","incremental","noop","NormalBoxPath","buildPath","__simpleBox","moveTo","lineTo","closePath","transInit","z2","clipped","contain","normalItemStyleModel","getModel","getItemVisual","itemStyle","getItemStyle","useStyle","strokeNoScale","fill","stroke","hoverStyle","setHoverStyle","LargeBoxPath","__sign","largePoints","elP","elN","setLargeStyle","suffix","getVisual","hasKeys","name","createVisualMappings","supplementVisualOption","visualMappings","mappings","createMappings","visualData","isValidType","__hidden","__alphaForOpacity","Creater","replaceVisualOption","keys","applyVisual","scope","dimension","visualTypesMap","setVisual","setItemVisual","eachItem","valueOrIndex","rawDataItem","getRawDataItem","visualMap","len","prepareVisualTypes","incrementalApplyVisual","dim","getDimension","SeriesModel","createListFromArray","getInitialData","getSource","useEncodeDefaulter","getMarkerPosition","pt","clampData","size","offsetIndex","isHorizontal","zlevel","z","legendHoverLink","barMinHeight","barMinAngle","progressive","progressiveChunkMode","numberUtil","DEFAULT_BAR_BOUND","ContinuousModel","calculable","range","realtime","hoverLinkDataSize","hoverLinkOnHandle","_resetRange","resetItemSize","_orient","auto","symbolSize","controller","getSelected","dataInterval","asc","oVals","getColorStopValues","iVals","iIdx","oIdx","iLen","oLen","first","stopsLen","step","stopValues","completeDimensions","extendSeriesModel","visualColorAccessPath","floor","dimensions","List","initData","left","top","LinearGradient","eventTool","sliderMove","modelUtil","mathMin","mathMax","HOVER_LINK_SIZE","HOVER_LINK_OUT","ContinuousView","init","_shapes","_dataInterval","_handleEnds","_useHandle","_hoverLinkDataIndices","_dragging","_hovering","payload","_buildView","_resetInterval","_renderBar","dataRangeText","_updateView","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","endsIndex","barGroup","position","_applyTransform","targetGroup","shapes","useHandle","_createBarGroup","outOfRange","createPolygon","inRange","getCursor","_dragHandle","textRect","getTextRect","textSize","handleThumbs","handleLabels","handleLabelPoints","_createHandle","_createIndicator","handleIndex","onDrift","onDragEnd","handleThumb","createHandlePoints","handleLabel","draggable","drift","onmousemove","stop","event","ondragend","handleLabelPoint","indicator","attr","invisible","silent","indicatorLabel","indicatorLabelPoint","isEnd","dx","dy","vertex","_updateInterval","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","sizeExtent","delta","handleEnds","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","setStyle","barColor","setShape","barPoints","_updateHandle","forceState","opts","convertOpacityToAlpha","colorStops","_makeColorGradient","symbolSizes","_createBarPoints","handlesColor","sampleNumber","currValue","scale","rotation","textPoint","applyTransform","getTransform","_showIndicator","cursorValue","textValue","rangeSymbol","halfHoverLinkSize","pos","createIndicatorPoints","self","offsetX","offsetY","zr","getZr","_hoverLinkFromSeriesMouseOver","_hideIndicator","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","getHalfHoverLinkSize","hoverRange","valueRange","oldBatch","newBatch","resultBatches","compressBatches","_dispatchHighDown","dataModel","getSeriesByIndex","seriesIndex","isTargetSeries","dataType","indices","off","element","global","transform","cursor","Polygon","isRange","extentMax","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","performRawSeries","legendSymbol","colorP","getColor","colorN","borderColorP","getBorderColor","borderColorN","isSeriesFiltered","isLargeRender","model","zrColor","CATEGORY_DEFAULT_VISUAL_INDEX","_normalizeData","normalizers","visualHandler","visualHandlers","getColorMapper","_doMap","normalizeVisualRange","preprocessForPiecewise","preprocessForSpecifiedCategory","assert","constructor","mapValueToVisual","normalized","getNormalizer","makeApplyVisual","isNormalized","doMapCategory","out","returnRGBArray","fastLerp","parsedVisual","stringify","linear","category","piecewise","getSpecifiedVisual","fixed","doMapFixed","colorHue","makePartialColorVisualHandler","modifyHSL","colorSaturation","colorLightness","colorAlpha","modifyAlpha","makeDoMap","liftZ","symbol","getter","setter","symbolCfg","isString","doMapToArray","hasSpecialVisual","originIndex","categoryMap","visualArr","setVisualToOption","pop","doNotNeedPair","applyValue","round","loop","sourceExtent","parse","littleThan","handler","addVisualHandler","eachVisual","callback","context","mapVisual","isPrimary","newVisual","newVal","hasVisual","ret","h","types","type1","type2","indexOf","dependsOn","visualType1","visualType2","findClosestWhenOutside","possibleI","pieceValue","updatePossible","newAbs","active","inactive","_helper","setLabel","Model","barItemStyle","_throttle","throttle","Sausage","BAR_BORDER_WIDTH_QUERY","_eventPos","getClipArea","coordSysClipArea","onBand","expandWidth","extendChartView","coordinateSystemType","isHorizontalOrRadial","animationModel","isAnimationEnabled","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","createBackground","bgLayout","bgEl","createBackgroundEl","getBarItemStyle","isClipped","elementCreator","updateStyle","newIndex","oldIndex","createBackgroundShape","removeRect","removeSector","bgGroup","_backgroundGroup","_removeBackground","eachItemGraphicEl","cartesian2d","coordSysBoundingRect","signWidth","signHeight","x2","y2","polar","signR","r0","r","isUpdate","rect","Rect","rectShape","animateProperty","animateTarget","isRadial","clockwise","startAngle","endAngle","ShapeClass","Sector","sector","defaults","sectorShape","parent","fixedLineWidth","getLineWidth","signX","signY","cx","cy","isZeroOnPolar","isPolar","itemStyleModel","cursorStyle","getShallow","labelPositionOutside","rawLayout","lineWidth","Number","MAX_VALUE","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","largeDataIndices","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","largePathUpdateDataIndex","largePath","largePathFindDataIndex","valueDimIdx","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","ii","barBaseVal","barValueVal","coordLayout","grid","getRect","ElementClz","_interopDefault","ex","constants","utils","utilsLite","Core","DEFAULT_MA","DEFAULT_K_NAME","DEFAULT_DOWN_COLOR","DEFAULT_UP_COLOR","DEFAULT_START","DEFAULT_END","SHOW_FALSE","show","getCandleLegend","args","showMA","MA","legendName","labelMap","concat","formatter","getCandleTooltip","metrics","digit","trigger","axisPointer","elRect","side","viewSize","options","tpl","axisValue","forEach","seriesName","componentSubType","itemPoint","m","getFormated","_val","join","getCandleVisualMap","downColor","upColor","getCandleGrid","showVol","right","containLabel","getCandleXAxis","dims","boundaryGap","splitLine","axisLine","onZero","axisTick","axisLabel","gridIndex","getCandleYAxis","getCandleDataZoom","end","xAxisIndex","getCandleSeries","values","volumes","color0","borderColor0","lineStyle","d","calculateMA","smooth","yAxisIndex","dayCount","sum","j","candle","columns","rows","settings","status","_settings$dimension","undefined","_settings$metrics","_settings$digit","_settings$labelMap","_settings$legendName","_settings$MA","_settings$showMA","_settings$showVol","_settings$showDataZoo","showDataZoom","_settings$downColor","_settings$upColor","_settings$start","_settings$end","tooltipVisible","legendVisible","isLiteData","candleMetrics","volumeMetrics","row","itemResult","_status","legend","tooltip","visualMap$$1","dataZoom$$1","xAxis","yAxis","link","dataZoom","_extends","Object","assign","source","chartHandler","formatUtil","extendComponentView","autoPositionValues","bottom","padding","normalizeCssArray","getBoundingRect","targetValue","visualCluster","visualObj","defaultColor","controllerVisuals","visualMapping","positionElement","window","setImmediate","msSetImmediate","webkitSetImmediate","mozSetImmediate","oSetImmediate","postMessage","callbacks","message","setZeroTimeout","evt","substr","stopImmediatePropagation","clearImmediate","fn","setTimeout","msClearImmediate","webkitClearImmediate","mozClearImmediate","oClearImmediate","timer","clearTimeout","fillText","some","minFontSize","hanWidth","mWidth","font","measureText","shuffleArray","arr","random","WordCloud","elements","getElementById","tagName","appendChild","minSize","weightFactor","backgroundColor","origin","drawMask","maskColor","maskGapWidth","wait","abortThreshold","abort","classes","hover","click","factor","theta","sin","thetaPrime","cos","sqrt","ngx","ngy","center","maxRadius","escapeTime","g","maskRectWidth","random_hsl_color","getTextClasses","hovered","interactive","infoGrid","getInfoGridFromMouseTouchEvent","clientX","clientY","currentTarget","getBoundingClientRect","touches","eventX","eventY","wordcloudhover","info","wordcloudclick","pointsAtRadius","getPointsAtRadius","radius","T","t","rx","exceedTime","Date","getTime","getRotateDeg","getTextInfo","word","weight","rotateDeg","debug","fontSize","mu","fcanvas","fctx","willReadFrequently","fw","fh","boxWidth","boxHeight","fgw","ceil","fgh","fillTextOffsetX","fillTextOffsetY","cgh","cgw","setAttribute","body","save","translate","rotate","fillStyle","textBaseline","strokeRect","restore","occupied","bounds","singleGridLoop","fillRect","gw","gh","fillTextWidth","fillTextHeight","canFitText","px","py","drawText","distance","attributes","span","transformRule","styleRules","cssProp","textContent","attribute","className","fillGridAt","updateGrid","w","putWord","tryToPutWordAtPoint","gxy","rot","res","sendEvent","cancelable","createEvent","initCustomEvent","dispatchEvent","loopingFunction","stoppingFunction","clearRect","bctx","bgPixel","webkitTapHighlightColor","stopInteraction","listener","anotherWordCloudStart","canceled","_barGrid","largeLayout","PRIORITY","VISUAL","LAYOUT","curry","PROGRESSIVE_LAYOUT","getSeries","sizeMax","sizeMin","baseType","getTooltip","tooltipFormatter","_params$data","wordcloud","extra","_settings$color","_settings$sizeMax","_settings$sizeMin","_settings$shape","visualSolution","VISUAL_PRIORITY","COMPONENT","targetVisuals","resultVisual","mapping","createOnAllSeries","resetDefines","eachComponent","visualMetaList","visualMeta","concreteDim","dimInfo","getDimensionInfo","opt","splitList","makeStyleMapper","excludes","getBorderLineDash","lineDash","Component","registerSubTypeDefaulter","_whiskerBoxCommon","seriesModelMixin","CandlestickSeries","defaultValueDimensions","defaultTooltip","hoverAnimation","animationUpdate","animationEasing","animationDuration","getShadowDim","selectors","mixin","_vm","_h","$createElement","_c","_self","_v","directives","rawName","hawkProxyH","expression","attrs","wordCloudExtend","hawkProxyDay","vtbMacro","vtb","vtbExtend","dataZoomDay","fullVtb","_e","loading","loadVtbMacroAll","guardMacro","guard","guardExtend","dataZoomWeek","vupMacro","vup","staticRenderFns","guardMacroK","guardK","guardMacroWeekK","guardWeekK","component","dataIdx","emphasisTextStyleModel","textEl","setTextStyle","forMerge","_model","extendShape","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","lessThanCircle","arc","_layout","ecSize","realIndex","paramsSet","reals","fakeValue","layoutInput","rParam","margin","batchItem","dataIndexInside","highlightKey","componentIndex","actionInfo","registerAction","mainType","query","createListSimply","_dimensionHelper","getDimensionTypeByAxis","_sourceHelper","makeSeriesEncodeForAxisCoordSys","_baseAxisDim","ordinalMeta","addOrdinal","xAxisModel","getComponent","yAxisModel","xAxisType","yAxisType","getOrdinalMeta","baseAxisDimIndex","baseAxisDim","otherAxisDim","axisModels","baseAxisType","otherAxisType","newOptionData","newItem","coordDimensions","otherDims","itemName","dimsDef","dimensionsCount","encodeDefaulter","axis","createDimensions","nameList","dimensionsInfo","_labelHelper","getDefaultLabel","normalStyle","labelModel","hoverLabelModel","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","autoColor","fixPosition","textPosition","env","extendComponentModel","replacableOptionKeys","dataBound","layoutMode","ignoreSize","contentColor","inactiveColor","parentModel","_dataExtent","mergeDefaultAndTheme","canvasSupported","getTargetSeriesIndices","optionSeriesIndex","seriesIndices","eachSeries","normalizeToArray","is","isMinMax","replace","isFunction","optDim","listDimensions","dimNames","dimName","isCalculationCoord","base","merge","completeSingle","defa","completeInactive","stateExist","stateAbsent","optExist","optAbsent","completeController","symbolExists","symbolSizeExists","visuals","parseFloat"],"mappings":"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ADA,gBAEA,iBAFA,OAEA,kBAFA,qDAIA,SACA,QADA,WACA,wKACA,iBADA,cACA,cADA,gBAEA,iBAFA,OAEA,kBAFA,qDAIA,YALA,SAKA,SACA,kDADA,EACA,KACA,YACA,uBAEA,0BAEA,gBAZA,SAYA,SACA,0DADA,EACA,QACA,eACA,2BAEA,+BAGA,KAzBA,WAyDA,OA/BA,aACA,UACA,UACA,WACA,YACA,cAEA,kBACA,oBACA,UAEA,iBACA,4CACA,iBAEA,iBACA,UACA,UACA,WACA,YACA,aACA,WAEA,YACA,WAEA,kBACA,oBACA,iBACA,6CAEA,CACA,eACA,sBC3EqV,I,YCOjVC,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,EAAAA,E,QCyBf,qCACA,qCACA,qCAEA,OACA,YACA,eAEA,QAJA,WAIA,iKACA,mBACA,qCACA,mDAEA,mBACA,yCACA,mDAEA,oBATA,gCAUA,uCAVA,OAUA,EAVA,OAWA,yBAXA,OAaA,sCACA,0CACA,wCACA,KACA,0CACA,sCAlBA,+CAoBA,qBACA,iCAEA,wBACA,gBADA,WACA,WACA,gBACA,qCACA,kBACA,aACA,4BAGA,iCAEA,2BACA,6DAEA,gBA6DA,OA5DA,mBACA,cACA,wCAGA,oBACA,cACA,yCAGA,UACA,mBACA,gCACA,UACA,YACA,mBAEA,wBACA,iBACA,cACA,kCAEA,UACA,mBACA,gCACA,UACA,iBACA,cAEA,wBACA,iBACA,6BAEA,gBACA,sBACA,qBACA,yBAEA,0BACA,2BAEA,YACA,mBACA,qBACA,UACA,eAEA,uBACA,WACA,kBAEA,kBACA,yBACA,+BAEA,sBACA,wBACA,yBACA,4BAEA,CACA,WACA,gBACA,cACA,mBACA,cC1J+U,ICO3U,EAAY,eACd,EACAn3B,EACA82B,GACA,EACA,KACA,WACA,MAIa,e,8BClBf,IAAIxjC,EAAU,EAAQ,QAMtBA,EAAQkmB,gBAAgB,CAEpBryB,KAAM,YAEN6Y,OAAQ,SAAUrP,EAAauJ,EAAStP,GACpC,IAAIrD,EAAQD,KAAKC,MACjBA,EAAMC,YAEN,IAAIqJ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","file":"js/macro.8c574abe.js","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar layout = require(\"../../util/layout\");\n\nvar helper = require(\"./helper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PiecewiseVisualMapView = VisualMapView.extend({\n type: 'visualMap.piecewise',\n\n /**\n * @protected\n * @override\n */\n doRender: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var textStyleModel = visualMapModel.textStyleModel;\n var textFont = textStyleModel.getFont();\n var textFill = textStyleModel.getTextColor();\n\n var itemAlign = this._getItemAlign();\n\n var itemSize = visualMapModel.itemSize;\n\n var viewData = this._getViewData();\n\n var endsText = viewData.endsText;\n var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n zrUtil.each(viewData.viewPieceList, renderItem, this);\n endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n this.renderBackground(thisGroup);\n this.positionGroup(thisGroup);\n\n function renderItem(item) {\n var piece = item.piece;\n var itemGroup = new graphic.Group();\n itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n this._enableHoverLink(itemGroup, item.indexInModelPieceList);\n\n var representValue = visualMapModel.getRepresentValue(piece);\n\n this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n if (showLabel) {\n var visualState = this.visualMapModel.getValueState(representValue);\n itemGroup.add(new graphic.Text({\n style: {\n x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n y: itemSize[1] / 2,\n text: piece.text,\n textVerticalAlign: 'middle',\n textAlign: itemAlign,\n textFont: textFont,\n textFill: textFill,\n opacity: visualState === 'outOfRange' ? 0.5 : 1\n }\n }));\n }\n\n thisGroup.add(itemGroup);\n }\n },\n\n /**\n * @private\n */\n _enableHoverLink: function (itemGroup, pieceIndex) {\n itemGroup.on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')).on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay'));\n\n function onHoverLink(method) {\n var visualMapModel = this.visualMapModel;\n visualMapModel.option.hoverLink && this.api.dispatchAction({\n type: method,\n batch: helper.makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\n });\n }\n },\n\n /**\n * @private\n */\n _getItemAlign: function () {\n var visualMapModel = this.visualMapModel;\n var modelOption = visualMapModel.option;\n\n if (modelOption.orient === 'vertical') {\n return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n } else {\n // horizontal, most case left unless specifying right.\n var align = modelOption.align;\n\n if (!align || align === 'auto') {\n align = 'left';\n }\n\n return align;\n }\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) {\n if (!text) {\n return;\n }\n\n var itemGroup = new graphic.Group();\n var textStyleModel = this.visualMapModel.textStyleModel;\n itemGroup.add(new graphic.Text({\n style: {\n x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n y: itemSize[1] / 2,\n textVerticalAlign: 'middle',\n textAlign: showLabel ? itemAlign : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n group.add(itemGroup);\n },\n\n /**\n * @private\n * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\n */\n _getViewData: function () {\n var visualMapModel = this.visualMapModel;\n var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n return {\n piece: piece,\n indexInModelPieceList: index\n };\n });\n var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n var orient = visualMapModel.get('orient');\n var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n if (orient === 'horizontal' ? inverse : !inverse) {\n viewPieceList.reverse();\n } // Origin order of endsText is [high, low]\n else if (endsText) {\n endsText = endsText.slice().reverse();\n }\n\n return {\n viewPieceList: viewPieceList,\n endsText: endsText\n };\n },\n\n /**\n * @private\n */\n _createItemSymbol: function (group, representValue, shapeParam) {\n group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\n },\n\n /**\n * @private\n */\n _onItemClick: function (piece) {\n var visualMapModel = this.visualMapModel;\n var option = visualMapModel.option;\n var selected = zrUtil.clone(option.selected);\n var newKey = visualMapModel.getSelectedMapKey(piece);\n\n if (option.selectedMode === 'single') {\n selected[newKey] = true;\n zrUtil.each(selected, function (o, key) {\n selected[key] = key === newKey;\n });\n } else {\n selected[newKey] = !selected[newKey];\n }\n\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: selected\n });\n }\n});\nvar _default = PiecewiseVisualMapView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapModel = require(\"./VisualMapModel\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar _number = require(\"../../util/number\");\n\nvar reformIntervals = _number.reformIntervals;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PiecewiseModel = VisualMapModel.extend({\n type: 'visualMap.piecewise',\n\n /**\n * Order Rule:\n *\n * option.categories / option.pieces / option.text / option.selected:\n * If !option.inverse,\n * Order when vertical: ['top', ..., 'bottom'].\n * Order when horizontal: ['left', ..., 'right'].\n * If option.inverse, the meaning of\n * the order should be reversed.\n *\n * this._pieceList:\n * The order is always [low, ..., high].\n *\n * Mapping from location to low-high:\n * If !option.inverse\n * When vertical, top is high.\n * When horizontal, right is high.\n * If option.inverse, reverse.\n */\n\n /**\n * @protected\n */\n defaultOption: {\n selected: null,\n // Object. If not specified, means selected.\n // When pieces and splitNumber: {'0': true, '5': true}\n // When categories: {'cate1': false, 'cate3': true}\n // When selected === false, means all unselected.\n minOpen: false,\n // Whether include values that smaller than `min`.\n maxOpen: false,\n // Whether include values that bigger than `max`.\n align: 'auto',\n // 'auto', 'left', 'right'\n itemWidth: 20,\n // When put the controller vertically, it is the length of\n // horizontal side of each item. Otherwise, vertical side.\n itemHeight: 14,\n // When put the controller vertically, it is the length of\n // vertical side of each item. Otherwise, horizontal side.\n itemSymbol: 'roundRect',\n pieceList: null,\n // Each item is Object, with some of those attrs:\n // {min, max, lt, gt, lte, gte, value,\n // color, colorSaturation, colorAlpha, opacity,\n // symbol, symbolSize}, which customize the range or visual\n // coding of the certain piece. Besides, see \"Order Rule\".\n categories: null,\n // category names, like: ['some1', 'some2', 'some3'].\n // Attr min/max are ignored when categories set. See \"Order Rule\"\n splitNumber: 5,\n // If set to 5, auto split five pieces equally.\n // If set to 0 and component type not set, component type will be\n // determined as \"continuous\". (It is less reasonable but for ec2\n // compatibility, see echarts/component/visualMap/typeDefaulter)\n selectedMode: 'multiple',\n // Can be 'multiple' or 'single'.\n itemGap: 10,\n // The gap between two items, in px.\n hoverLink: true,\n // Enable hover highlight.\n showLabel: null // By default, when text is used, label will hide (the logic\n // is remained for compatibility reason)\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n PiecewiseModel.superApply(this, 'optionUpdated', arguments);\n /**\n * The order is always [low, ..., high].\n * [{text: string, interval: Array.}, ...]\n * @private\n * @type {Array.}\n */\n\n this._pieceList = [];\n this.resetExtent();\n /**\n * 'pieces', 'categories', 'splitNumber'\n * @type {string}\n */\n\n var mode = this._mode = this._determineMode();\n\n resetMethods[this._mode].call(this);\n\n this._resetSelected(newOption, isInit);\n\n var categories = this.option.categories;\n this.resetVisual(function (mappingOption, state) {\n if (mode === 'categories') {\n mappingOption.mappingMethod = 'category';\n mappingOption.categories = zrUtil.clone(categories);\n } else {\n mappingOption.dataExtent = this.getExtent();\n mappingOption.mappingMethod = 'piecewise';\n mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n var piece = zrUtil.clone(piece);\n\n if (state !== 'inRange') {\n // FIXME\n // outOfRange do not support special visual in pieces.\n piece.visual = null;\n }\n\n return piece;\n });\n }\n });\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n // Consider this case:\n // visualMap: {\n // pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n // }\n // where no inRange/outOfRange set but only pieces. So we should make\n // default inRange/outOfRange for this case, otherwise visuals that only\n // appear in `pieces` will not be taken into account in visual encoding.\n var option = this.option;\n var visualTypesInPieces = {};\n var visualTypes = VisualMapping.listVisualTypes();\n var isCategory = this.isCategory();\n zrUtil.each(option.pieces, function (piece) {\n zrUtil.each(visualTypes, function (visualType) {\n if (piece.hasOwnProperty(visualType)) {\n visualTypesInPieces[visualType] = 1;\n }\n });\n });\n zrUtil.each(visualTypesInPieces, function (v, visualType) {\n var exists = 0;\n zrUtil.each(this.stateList, function (state) {\n exists |= has(option, state, visualType) || has(option.target, state, visualType);\n }, this);\n !exists && zrUtil.each(this.stateList, function (state) {\n (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n });\n }, this);\n\n function has(obj, state, visualType) {\n return obj && obj[state] && (zrUtil.isObject(obj[state]) ? obj[state].hasOwnProperty(visualType) : obj[state] === visualType // e.g., inRange: 'symbol'\n );\n }\n\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n },\n _resetSelected: function (newOption, isInit) {\n var thisOption = this.option;\n var pieceList = this._pieceList; // Selected do not merge but all override.\n\n var selected = (isInit ? thisOption : newOption).selected || {};\n thisOption.selected = selected; // Consider 'not specified' means true.\n\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (!selected.hasOwnProperty(key)) {\n selected[key] = true;\n }\n }, this);\n\n if (thisOption.selectedMode === 'single') {\n // Ensure there is only one selected.\n var hasSel = false;\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (selected[key]) {\n hasSel ? selected[key] = false : hasSel = true;\n }\n }, this);\n } // thisOption.selectedMode === 'multiple', default: all selected.\n\n },\n\n /**\n * @public\n */\n getSelectedMapKey: function (piece) {\n return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n },\n\n /**\n * @public\n */\n getPieceList: function () {\n return this._pieceList;\n },\n\n /**\n * @private\n * @return {string}\n */\n _determineMode: function () {\n var option = this.option;\n return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n },\n\n /**\n * @public\n * @override\n */\n setSelected: function (selected) {\n this.option.selected = zrUtil.clone(selected);\n },\n\n /**\n * @public\n * @override\n */\n getValueState: function (value) {\n var index = VisualMapping.findPieceIndex(value, this._pieceList);\n return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n },\n\n /**\n * @public\n * @params {number} pieceIndex piece index in visualMapModel.getPieceList()\n * @return {Array.} [{seriesId, dataIndex: >}, ...]\n */\n findTargetDataIndices: function (pieceIndex) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n // Should always base on model pieceList, because it is order sensitive.\n var pIdx = VisualMapping.findPieceIndex(value, this._pieceList);\n pIdx === pieceIndex && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @private\n * @param {Object} piece piece.value or piece.interval is required.\n * @return {number} Can be Infinity or -Infinity\n */\n getRepresentValue: function (piece) {\n var representValue;\n\n if (this.isCategory()) {\n representValue = piece.value;\n } else {\n if (piece.value != null) {\n representValue = piece.value;\n } else {\n var pieceInterval = piece.interval || [];\n representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n }\n }\n\n return representValue;\n },\n getVisualMeta: function (getColorVisual) {\n // Do not support category. (category axis is ordinal, numerical)\n if (this.isCategory()) {\n return;\n }\n\n var stops = [];\n var outerColors = [];\n var visualMapModel = this;\n\n function setStop(interval, valueState) {\n var representValue = visualMapModel.getRepresentValue({\n interval: interval\n });\n\n if (!valueState) {\n valueState = visualMapModel.getValueState(representValue);\n }\n\n var color = getColorVisual(representValue, valueState);\n\n if (interval[0] === -Infinity) {\n outerColors[0] = color;\n } else if (interval[1] === Infinity) {\n outerColors[1] = color;\n } else {\n stops.push({\n value: interval[0],\n color: color\n }, {\n value: interval[1],\n color: color\n });\n }\n } // Suplement\n\n\n var pieceList = this._pieceList.slice();\n\n if (!pieceList.length) {\n pieceList.push({\n interval: [-Infinity, Infinity]\n });\n } else {\n var edge = pieceList[0].interval[0];\n edge !== -Infinity && pieceList.unshift({\n interval: [-Infinity, edge]\n });\n edge = pieceList[pieceList.length - 1].interval[1];\n edge !== Infinity && pieceList.push({\n interval: [edge, Infinity]\n });\n }\n\n var curr = -Infinity;\n zrUtil.each(pieceList, function (piece) {\n var interval = piece.interval;\n\n if (interval) {\n // Fulfill gap.\n interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n setStop(interval.slice());\n curr = interval[1];\n }\n }, this);\n return {\n stops: stops,\n outerColors: outerColors\n };\n }\n});\n/**\n * Key is this._mode\n * @type {Object}\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\n */\n\nvar resetMethods = {\n splitNumber: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n var precision = Math.min(thisOption.precision, 20);\n var dataExtent = this.getExtent();\n var splitNumber = thisOption.splitNumber;\n splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n thisOption.splitNumber = splitNumber;\n var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n precision++;\n }\n\n thisOption.precision = precision;\n splitStep = +splitStep.toFixed(precision);\n\n if (thisOption.minOpen) {\n pieceList.push({\n interval: [-Infinity, dataExtent[0]],\n close: [0, 0]\n });\n }\n\n for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\n var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n pieceList.push({\n interval: [curr, max],\n close: [1, 1]\n });\n }\n\n if (thisOption.maxOpen) {\n pieceList.push({\n interval: [dataExtent[1], Infinity],\n close: [0, 0]\n });\n }\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece, index) {\n piece.index = index;\n piece.text = this.formatValueText(piece.interval);\n }, this);\n },\n categories: function () {\n var thisOption = this.option;\n zrUtil.each(thisOption.categories, function (cate) {\n // FIXME category模式也使用pieceList,但在visualMapping中不是使用pieceList。\n // 是否改一致。\n this._pieceList.push({\n text: this.formatValueText(cate, true),\n value: cate\n });\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, this._pieceList);\n },\n pieces: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n if (!zrUtil.isObject(pieceListItem)) {\n pieceListItem = {\n value: pieceListItem\n };\n }\n\n var item = {\n text: '',\n index: index\n };\n\n if (pieceListItem.label != null) {\n item.text = pieceListItem.label;\n }\n\n if (pieceListItem.hasOwnProperty('value')) {\n var value = item.value = pieceListItem.value;\n item.interval = [value, value];\n item.close = [1, 1];\n } else {\n // `min` `max` is legacy option.\n // `lt` `gt` `lte` `gte` is recommanded.\n var interval = item.interval = [];\n var close = item.close = [0, 0];\n var closeList = [1, 0, 1];\n var infinityList = [-Infinity, Infinity];\n var useMinMax = [];\n\n for (var lg = 0; lg < 2; lg++) {\n var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n for (var i = 0; i < 3 && interval[lg] == null; i++) {\n interval[lg] = pieceListItem[names[i]];\n close[lg] = closeList[i];\n useMinMax[lg] = i === 2;\n }\n\n interval[lg] == null && (interval[lg] = infinityList[lg]);\n }\n\n useMinMax[0] && interval[1] === Infinity && (close[0] = 0);\n useMinMax[1] && interval[0] === -Infinity && (close[1] = 0);\n\n if (interval[0] === interval[1] && close[0] && close[1]) {\n // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n // we use value to lift the priority when min === max\n item.value = interval[0];\n }\n }\n\n item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n pieceList.push(item);\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, pieceList); // Only pieces\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece) {\n var close = piece.close;\n var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n }, this);\n }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n var inverse = thisOption.inverse;\n\n if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n pieceList.reverse();\n }\n}\n\nvar _default = PiecewiseModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./candlestick/CandlestickSeries\");\n\nrequire(\"./candlestick/CandlestickView\");\n\nvar preprocessor = require(\"./candlestick/preprocessor\");\n\nvar candlestickVisual = require(\"./candlestick/candlestickVisual\");\n\nvar candlestickLayout = require(\"./candlestick/candlestickLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar subPixelOptimize = _graphic.subPixelOptimize;\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve2 = _util.retrieve2;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var candleWidth = calculateCandleWidth(seriesModel, data);\n var cDimIdx = 0;\n var vDimIdx = 1;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n var openDim = vDims[0];\n var closeDim = vDims[1];\n var lowestDim = vDims[2];\n var highestDim = vDims[3];\n data.setLayout({\n candleWidth: candleWidth,\n // The value is experimented visually.\n isSimpleBox: candleWidth <= 1.3\n });\n\n if (cDim == null || vDims.length < 4) {\n return;\n }\n\n return {\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n };\n\n function normalProgress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n var ocLow = Math.min(openVal, closeVal);\n var ocHigh = Math.max(openVal, closeVal);\n var ocLowPoint = getPoint(ocLow, axisDimVal);\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\n var lowestPoint = getPoint(lowestVal, axisDimVal);\n var highestPoint = getPoint(highestVal, axisDimVal);\n var ends = [];\n addBodyEnd(ends, ocHighPoint, 0);\n addBodyEnd(ends, ocLowPoint, 1);\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n data.setItemLayout(dataIndex, {\n sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n // open point.\n ends: ends,\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n });\n }\n\n function getPoint(val, axisDimVal) {\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n var pmin = getPoint(lowestVal, axisDimVal);\n var pmax = getPoint(highestVal, axisDimVal);\n pmin[cDimIdx] -= candleWidth / 2;\n pmax[cDimIdx] -= candleWidth / 2;\n return {\n x: pmin[0],\n y: pmin[1],\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n };\n }\n\n function subPixelOptimizePoint(point) {\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n return point;\n }\n }\n\n function largeProgress(params, data) {\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n var points = new LargeArr(params.count * 4);\n var offset = 0;\n var point;\n var tmpIn = [];\n var tmpOut = [];\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n points[offset++] = NaN;\n offset += 3;\n continue;\n }\n\n points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\n tmpIn[cDimIdx] = axisDimVal;\n tmpIn[vDimIdx] = lowestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n tmpIn[vDimIdx] = highestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[1] : NaN;\n }\n\n data.setLayout('largePoints', points);\n }\n }\n};\n\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\n var sign;\n\n if (openVal > closeVal) {\n sign = -1;\n } else if (openVal < closeVal) {\n sign = 1;\n } else {\n sign = dataIndex > 0 // If close === open, compare with close of last record\n ? data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n 1;\n }\n\n return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n var baseAxis = seriesModel.getBaseAxis();\n var extent;\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n var barWidth = seriesModel.get('barWidth');\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nmodule.exports = _default;","var echarts = require('echarts/lib/echarts');\nvar layoutUtil = require('echarts/lib/util/layout');\n\nrequire('./WordCloudSeries');\nrequire('./WordCloudView');\n\nvar wordCloudLayoutHelper = require('./layout');\n\nif (!wordCloudLayoutHelper.isSupported) {\n throw new Error('Sorry your browser not support wordCloud');\n}\n\n// https://github.com/timdream/wordcloud2.js/blob/c236bee60436e048949f9becc4f0f67bd832dc5c/index.js#L233\nfunction updateCanvasMask(maskCanvas) {\n var ctx = maskCanvas.getContext('2d');\n var imageData = ctx.getImageData(\n 0, 0, maskCanvas.width, maskCanvas.height);\n var newImageData = ctx.createImageData(imageData);\n\n var toneSum = 0;\n var toneCnt = 0;\n for (var i = 0; i < imageData.data.length; i += 4) {\n var alpha = imageData.data[i + 3];\n if (alpha > 128) {\n var tone = imageData.data[i]\n + imageData.data[i + 1]\n + imageData.data[i + 2];\n toneSum += tone;\n ++toneCnt;\n }\n }\n var threshold = toneSum / toneCnt;\n\n for (var i = 0; i < imageData.data.length; i += 4) {\n var tone = imageData.data[i]\n + imageData.data[i + 1]\n + imageData.data[i + 2];\n var alpha = imageData.data[i + 3];\n\n if (alpha < 128 || tone > threshold) {\n // Area not to draw\n newImageData.data[i] = 0;\n newImageData.data[i + 1] = 0;\n newImageData.data[i + 2] = 0;\n newImageData.data[i + 3] = 0;\n }\n else {\n // Area to draw\n // The color must be same with backgroundColor\n newImageData.data[i] = 255;\n newImageData.data[i + 1] = 255;\n newImageData.data[i + 2] = 255;\n newImageData.data[i + 3] = 255;\n }\n }\n\n ctx.putImageData(newImageData, 0, 0);\n}\n\necharts.registerLayout(function (ecModel, api) {\n ecModel.eachSeriesByType('wordCloud', function (seriesModel) {\n var gridRect = layoutUtil.getLayoutRect(\n seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n }\n );\n var data = seriesModel.getData();\n\n var canvas = document.createElement('canvas');\n canvas.width = gridRect.width;\n canvas.height = gridRect.height;\n\n var ctx = canvas.getContext('2d');\n var maskImage = seriesModel.get('maskImage');\n if (maskImage) {\n try {\n ctx.drawImage(maskImage, 0, 0, canvas.width, canvas.height);\n updateCanvasMask(canvas);\n }\n catch (e) {\n console.error('Invalid mask image');\n console.error(e.toString());\n }\n }\n\n var sizeRange = seriesModel.get('sizeRange');\n var rotationRange = seriesModel.get('rotationRange');\n var valueExtent = data.getDataExtent('value');\n\n var DEGREE_TO_RAD = Math.PI / 180;\n var gridSize = seriesModel.get('gridSize');\n wordCloudLayoutHelper(canvas, {\n list: data.mapArray('value', function (value, idx) {\n var itemModel = data.getItemModel(idx);\n return [\n data.getName(idx),\n itemModel.get('textStyle.normal.textSize', true)\n || echarts.number.linearMap(value, valueExtent, sizeRange),\n idx\n ];\n }).sort(function (a, b) {\n // Sort from large to small in case there is no more room for more words\n return b[1] - a[1];\n }),\n fontFamily: seriesModel.get('textStyle.normal.fontFamily')\n || seriesModel.get('textStyle.emphasis.fontFamily')\n || ecModel.get('textStyle.fontFamily'),\n fontWeight: seriesModel.get('textStyle.normal.fontWeight')\n || seriesModel.get('textStyle.emphasis.fontWeight')\n || ecModel.get('textStyle.fontWeight'),\n gridSize: gridSize,\n\n ellipticity: gridRect.height / gridRect.width,\n\n minRotation: rotationRange[0] * DEGREE_TO_RAD,\n maxRotation: rotationRange[1] * DEGREE_TO_RAD,\n\n clearCanvas: !maskImage,\n\n rotateRatio: 1,\n\n rotationStep: seriesModel.get('rotationStep') * DEGREE_TO_RAD,\n\n drawOutOfBound: seriesModel.get('drawOutOfBound'),\n\n shuffle: false,\n\n shape: seriesModel.get('shape')\n });\n\n function onWordCloudDrawn(e) {\n var item = e.detail.item;\n if (e.detail.drawn && seriesModel.layoutInstance.ondraw) {\n e.detail.drawn.gx += gridRect.x / gridSize;\n e.detail.drawn.gy += gridRect.y / gridSize;\n seriesModel.layoutInstance.ondraw(\n item[0], item[1], item[2], e.detail.drawn\n );\n }\n }\n\n canvas.addEventListener('wordclouddrawn', onWordCloudDrawn);\n\n if (seriesModel.layoutInstance) {\n // Dispose previous\n seriesModel.layoutInstance.dispose();\n }\n\n seriesModel.layoutInstance = {\n ondraw: null,\n\n dispose: function () {\n canvas.removeEventListener('wordclouddrawn', onWordCloudDrawn);\n // Abort\n canvas.addEventListener('wordclouddrawn', function (e) {\n // Prevent default to cancle the event and stop the loop\n e.preventDefault();\n });\n }\n };\n });\n});\n\necharts.registerPreprocessor(function (option) {\n var series = (option || {}).series;\n !echarts.util.isArray(series) && (series = series ? [series] : []);\n\n var compats = ['shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n\n echarts.util.each(series, function (seriesItem) {\n if (seriesItem && seriesItem.type === 'wordCloud') {\n var textStyle = seriesItem.textStyle || {};\n\n compatTextStyle(textStyle.normal);\n compatTextStyle(textStyle.emphasis);\n }\n });\n\n function compatTextStyle(textStyle) {\n textStyle && echarts.util.each(compats, function (key) {\n if (textStyle.hasOwnProperty(key)) {\n textStyle['text' + echarts.format.capitalFirst(key)] = textStyle[key];\n }\n });\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = require(\"./BaseBarSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = BaseBarSeries.extend({\n type: 'series.bar',\n dependencies: ['grid', 'polar'],\n brushSelector: 'rect',\n\n /**\n * @override\n */\n getProgressive: function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n },\n\n /**\n * @override\n */\n getProgressiveThreshold: function () {\n // Do not support progressive in normal mode.\n var progressiveThreshold = this.get('progressiveThreshold');\n var largeThreshold = this.get('largeThreshold');\n\n if (largeThreshold > progressiveThreshold) {\n progressiveThreshold = largeThreshold;\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n // If use caps on two sides of bars\n // Only available on tangential polar bar\n roundCap: false,\n showBackground: false,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)',\n borderColor: null,\n borderWidth: 0,\n borderType: 'solid',\n borderRadius: 0,\n shadowBlur: 0,\n shadowColor: null,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n }\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar SKIP_PROPS = ['color', 'color0', 'borderColor', 'borderColor0'];\nvar CandlestickView = ChartView.extend({\n type: 'candlestick',\n render: function (seriesModel, ecModel, api) {\n // If there is clipPath created in large mode. Remove it.\n this.group.removeClipPath();\n\n this._updateDrawMode(seriesModel);\n\n this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var isSimpleBox = data.getLayout('isSimpleBox');\n var needsClip = seriesModel.get('clip', true);\n var coord = seriesModel.coordinateSystem;\n var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var el;\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n return;\n }\n\n el = createNormalBox(itemLayout, newIdx, true);\n graphic.initProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(el);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n group.remove(el);\n return;\n }\n\n if (!el) {\n el = createNormalBox(itemLayout, newIdx);\n } else {\n graphic.updateProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n }\n\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n _renderLarge: function (seriesModel) {\n this._clear();\n\n createLarge(seriesModel, this.group);\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderNormal: function (params, seriesModel) {\n var data = seriesModel.getData();\n var isSimpleBox = data.getLayout('isSimpleBox');\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var el;\n var itemLayout = data.getItemLayout(dataIndex);\n el = createNormalBox(itemLayout, dataIndex);\n setBoxCommon(el, data, dataIndex, isSimpleBox);\n el.incremental = true;\n this.group.add(el);\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n createLarge(seriesModel, this.group, true);\n },\n remove: function (ecModel) {\n this._clear();\n },\n _clear: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: zrUtil.noop\n});\nvar NormalBoxPath = Path.extend({\n type: 'normalCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n\n if (this.__simpleBox) {\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[6][0], ends[6][1]);\n } else {\n ctx.moveTo(ends[0][0], ends[0][1]);\n ctx.lineTo(ends[1][0], ends[1][1]);\n ctx.lineTo(ends[2][0], ends[2][1]);\n ctx.lineTo(ends[3][0], ends[3][1]);\n ctx.closePath();\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[5][0], ends[5][1]);\n ctx.moveTo(ends[6][0], ends[6][1]);\n ctx.lineTo(ends[7][0], ends[7][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n var ends = itemLayout.ends;\n return new NormalBoxPath({\n shape: {\n points: isInit ? transInit(ends, itemLayout) : ends\n },\n z2: 100\n });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n var clipped = true;\n\n for (var i = 0; i < itemLayout.ends.length; i++) {\n // If any point are in the region.\n if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n clipped = false;\n break;\n }\n }\n\n return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor') || color; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = normalItemStyleModel.getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.strokeNoScale = true;\n el.style.fill = color;\n el.style.stroke = borderColor;\n el.__simpleBox = isSimpleBox;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[1] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar LargeBoxPath = Path.extend({\n type: 'largeCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n\n for (var i = 0; i < points.length;) {\n if (this.__sign === points[i++]) {\n var x = points[i++];\n ctx.moveTo(x, points[i++]);\n ctx.lineTo(x, points[i++]);\n } else {\n i += 3;\n }\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n var data = seriesModel.getData();\n var largePoints = data.getLayout('largePoints');\n var elP = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: 1\n });\n group.add(elP);\n var elN = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: -1\n });\n group.add(elN);\n setLargeStyle(1, elP, seriesModel, data);\n setLargeStyle(-1, elN, seriesModel, data);\n\n if (incremental) {\n elP.incremental = true;\n elN.incremental = true;\n }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n var suffix = sign > 0 ? 'P' : 'N';\n var borderColor = data.getVisual('borderColor' + suffix) || data.getVisual('color' + suffix); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = seriesModel.getModel(NORMAL_ITEM_STYLE_PATH).getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor; // No different\n // el.style.lineWidth = .5;\n}\n\nvar _default = CandlestickView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/PiecewiseModel\");\n\nrequire(\"./visualMap/PiecewiseView\");\n\nrequire(\"./visualMap/visualMapAction\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapping = require(\"./VisualMapping\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n if (obj) {\n for (var name in obj) {\n if (obj.hasOwnProperty(name)) {\n return true;\n }\n }\n }\n}\n/**\n * @param {Object} option\n * @param {Array.} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings >\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n var visualMappings = {};\n each(stateList, function (state) {\n var mappings = visualMappings[state] = createMappings();\n each(option[state], function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var mappingOption = {\n type: visualType,\n visual: visualData\n };\n supplementVisualOption && supplementVisualOption(mappingOption, state);\n mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n // is not supported, such as rendering using gradient color.\n\n if (visualType === 'opacity') {\n mappingOption = zrUtil.clone(mappingOption);\n mappingOption.type = 'colorAlpha';\n mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n }\n });\n });\n return visualMappings;\n\n function createMappings() {\n var Creater = function () {}; // Make sure hidden fields will not be visited by\n // object iteration (with hasOwnProperty checking).\n\n\n Creater.prototype.__hidden = Creater.prototype;\n var obj = new Creater();\n return obj;\n }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n // Visual attributes merge is not supported, otherwise it\n // brings overcomplicated merge logic. See #2853. So if\n // newOption has anyone of these keys, all of these keys\n // will be reset. Otherwise, all keys remain.\n var has;\n zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n has = true;\n }\n });\n has && zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n thisOption[key] = zrUtil.clone(newOption[key]);\n } else {\n delete thisOption[key];\n }\n });\n}\n/**\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n var dataIndex;\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n if (dimension == null) {\n data.each(eachItem);\n } else {\n data.each([dimension], eachItem);\n }\n\n function eachItem(valueOrIndex, index) {\n dataIndex = dimension == null ? valueOrIndex : index;\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n return;\n }\n\n var valueState = getValueState.call(scope, valueOrIndex);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n\n function progress(params, data) {\n if (dim != null) {\n dim = data.getDimension(dim);\n }\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n continue;\n }\n\n var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n var valueState = getValueState(value);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n }\n }\n }\n\n return {\n progress: progress\n };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapModel = require(\"./VisualMapModel\");\n\nvar numberUtil = require(\"../../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Constant\nvar DEFAULT_BAR_BOUND = [20, 140];\nvar ContinuousModel = VisualMapModel.extend({\n type: 'visualMap.continuous',\n\n /**\n * @protected\n */\n defaultOption: {\n align: 'auto',\n // 'auto', 'left', 'right', 'top', 'bottom'\n calculable: false,\n // This prop effect default component type determine,\n // See echarts/component/visualMap/typeDefaulter.\n range: null,\n // selected range. In default case `range` is [min, max]\n // and can auto change along with modification of min max,\n // util use specifid a range.\n realtime: true,\n // Whether realtime update.\n itemHeight: null,\n // The length of the range control edge.\n itemWidth: null,\n // The length of the other side.\n hoverLink: true,\n // Enable hover highlight.\n hoverLinkDataSize: null,\n // The size of hovered data.\n hoverLinkOnHandle: null // Whether trigger hoverLink when hover handle.\n // If not specified, follow the value of `realtime`.\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n ContinuousModel.superApply(this, 'optionUpdated', arguments);\n this.resetExtent();\n this.resetVisual(function (mappingOption) {\n mappingOption.mappingMethod = 'linear';\n mappingOption.dataExtent = this.getExtent();\n });\n\n this._resetRange();\n },\n\n /**\n * @protected\n * @override\n */\n resetItemSize: function () {\n ContinuousModel.superApply(this, 'resetItemSize', arguments);\n var itemSize = this.itemSize;\n this._orient === 'horizontal' && itemSize.reverse();\n (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n },\n\n /**\n * @private\n */\n _resetRange: function () {\n var dataExtent = this.getExtent();\n var range = this.option.range;\n\n if (!range || range.auto) {\n // `range` should always be array (so we dont use other\n // value like 'auto') for user-friend. (consider getOption).\n dataExtent.auto = 1;\n this.option.range = dataExtent;\n } else if (zrUtil.isArray(range)) {\n if (range[0] > range[1]) {\n range.reverse();\n }\n\n range[0] = Math.max(range[0], dataExtent[0]);\n range[1] = Math.min(range[1], dataExtent[1]);\n }\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n zrUtil.each(this.stateList, function (state) {\n var symbolSize = this.option.controller[state].symbolSize;\n\n if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n symbolSize[0] = 0; // For good looking.\n }\n }, this);\n },\n\n /**\n * @override\n */\n setSelected: function (selected) {\n this.option.range = selected.slice();\n\n this._resetRange();\n },\n\n /**\n * @public\n */\n getSelected: function () {\n var dataExtent = this.getExtent();\n var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n return dataInterval;\n },\n\n /**\n * @override\n */\n getValueState: function (value) {\n var range = this.option.range;\n var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n // range[1] is processed likewise.\n\n return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n },\n\n /**\n * @params {Array.} range target value: range[0] <= value && value <= range[1]\n * @return {Array.} [{seriesId, dataIndices: >}, ...]\n */\n findTargetDataIndices: function (range) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @implement\n */\n getVisualMeta: function (getColorVisual) {\n var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n var stops = [];\n\n function setStop(value, valueState) {\n stops.push({\n value: value,\n color: getColorVisual(value, valueState)\n });\n } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n var iIdx = 0;\n var oIdx = 0;\n var iLen = iVals.length;\n var oLen = oVals.length;\n\n for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n if (oVals[oIdx] < iVals[iIdx]) {\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n // If range is full, value beyond min, max will be clamped.\n // make a singularity\n first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n setStop(iVals[iIdx], 'inRange');\n }\n\n for (var first = 1; oIdx < oLen; oIdx++) {\n if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n // make a singularity\n if (first) {\n stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n first = 0;\n }\n\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n var stopsLen = stops.length;\n return {\n stops: stops,\n outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n };\n }\n});\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n if (dataExtent[0] === dataExtent[1]) {\n return dataExtent.slice();\n } // When using colorHue mapping, it is not linear color any more.\n // Moreover, canvas gradient seems not to be accurate linear.\n // FIXME\n // Should be arbitrary value 100? or based on pixel size?\n\n\n var count = 200;\n var step = (dataExtent[1] - dataExtent[0]) / count;\n var value = dataExtent[0];\n var stopValues = [];\n\n for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n stopValues.push(value);\n value += step;\n }\n\n stopValues.push(dataExtent[1]);\n return stopValues;\n}\n\nvar _default = ContinuousModel;\nmodule.exports = _default;","var completeDimensions = require('echarts/lib/data/helper/completeDimensions');\nvar echarts = require('echarts/lib/echarts');\n\necharts.extendSeriesModel({\n\n type: 'series.wordCloud',\n\n visualColorAccessPath: 'textStyle.normal.color',\n\n optionUpdated: function () {\n var option = this.option;\n option.gridSize = Math.max(Math.floor(option.gridSize), 4);\n },\n\n getInitialData: function (option, ecModel) {\n var dimensions = completeDimensions(['value'], option.data);\n var list = new echarts.List(dimensions, this);\n list.initData(option.data);\n return list;\n },\n\n // Most of options are from https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md\n defaultOption: {\n\n maskImage: null,\n\n // Shape can be 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'\n shape: 'circle',\n\n left: 'center',\n\n top: 'center',\n\n width: '70%',\n\n height: '80%',\n\n sizeRange: [12, 60],\n\n rotationRange: [-90, 90],\n\n rotationStep: 45,\n\n gridSize: 8,\n\n drawOutOfBound: false,\n\n textStyle: {\n normal: {\n fontWeight: 'normal'\n }\n }\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar helper = require(\"./helper\");\n\nvar modelUtil = require(\"../../util/model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView = VisualMapView.extend({\n type: 'visualMap.continuous',\n\n /**\n * @override\n */\n init: function () {\n ContinuousView.superApply(this, 'init', arguments);\n /**\n * @private\n */\n\n this._shapes = {};\n /**\n * @private\n */\n\n this._dataInterval = [];\n /**\n * @private\n */\n\n this._handleEnds = [];\n /**\n * @private\n */\n\n this._orient;\n /**\n * @private\n */\n\n this._useHandle;\n /**\n * @private\n */\n\n this._hoverLinkDataIndices = [];\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._hovering;\n },\n\n /**\n * @protected\n * @override\n */\n doRender: function (visualMapModel, ecModel, api, payload) {\n if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n this._buildView();\n }\n },\n\n /**\n * @private\n */\n _buildView: function () {\n this.group.removeAll();\n var visualMapModel = this.visualMapModel;\n var thisGroup = this.group;\n this._orient = visualMapModel.get('orient');\n this._useHandle = visualMapModel.get('calculable');\n\n this._resetInterval();\n\n this._renderBar(thisGroup);\n\n var dataRangeText = visualMapModel.get('text');\n\n this._renderEndsText(thisGroup, dataRangeText, 0);\n\n this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n this._updateView(true); // After updating view, inner shapes is built completely,\n // and then background can be rendered.\n\n\n this.renderBackground(thisGroup); // Real update view\n\n this._updateView();\n\n this._enableHoverLinkToSeries();\n\n this._enableHoverLinkFromSeries();\n\n this.positionGroup(thisGroup);\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, dataRangeText, endsIndex) {\n if (!dataRangeText) {\n return;\n } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n var text = dataRangeText[1 - endsIndex];\n text = text != null ? text + '' : '';\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var itemSize = visualMapModel.itemSize;\n var barGroup = this._shapes.barGroup;\n\n var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n var orient = this._orient;\n var textStyleModel = this.visualMapModel.textStyleModel;\n this.group.add(new graphic.Text({\n style: {\n x: position[0],\n y: position[1],\n textVerticalAlign: orient === 'horizontal' ? 'middle' : align,\n textAlign: orient === 'horizontal' ? align : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n },\n\n /**\n * @private\n */\n _renderBar: function (targetGroup) {\n var visualMapModel = this.visualMapModel;\n var shapes = this._shapes;\n var itemSize = visualMapModel.itemSize;\n var orient = this._orient;\n var useHandle = this._useHandle;\n var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n var barGroup = shapes.barGroup = this._createBarGroup(itemAlign); // Bar\n\n\n barGroup.add(shapes.outOfRange = createPolygon());\n barGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true)));\n var textRect = visualMapModel.textStyleModel.getTextRect('国');\n var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n if (useHandle) {\n shapes.handleThumbs = [];\n shapes.handleLabels = [];\n shapes.handleLabelPoints = [];\n\n this._createHandle(barGroup, 0, itemSize, textSize, orient, itemAlign);\n\n this._createHandle(barGroup, 1, itemSize, textSize, orient, itemAlign);\n }\n\n this._createIndicator(barGroup, itemSize, textSize, orient);\n\n targetGroup.add(barGroup);\n },\n\n /**\n * @private\n */\n _createHandle: function (barGroup, handleIndex, itemSize, textSize, orient) {\n var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n var handleThumb = createPolygon(createHandlePoints(handleIndex, textSize), getCursor(this._orient), onDrift, onDragEnd);\n handleThumb.position[0] = itemSize[0];\n barGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n // transform (orient/inverse). So label is built separately but not\n // use zrender/graphic/helper/RectText, and is located based on view\n // group (according to handleLabelPoint) but not barGroup.\n\n var textStyleModel = this.visualMapModel.textStyleModel;\n var handleLabel = new graphic.Text({\n draggable: true,\n drift: onDrift,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd,\n style: {\n x: 0,\n y: 0,\n text: '',\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n });\n this.group.add(handleLabel);\n var handleLabelPoint = [orient === 'horizontal' ? textSize / 2 : textSize * 1.5, orient === 'horizontal' ? handleIndex === 0 ? -(textSize * 1.5) : textSize * 1.5 : handleIndex === 0 ? -textSize / 2 : textSize / 2];\n var shapes = this._shapes;\n shapes.handleThumbs[handleIndex] = handleThumb;\n shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n shapes.handleLabels[handleIndex] = handleLabel;\n },\n\n /**\n * @private\n */\n _createIndicator: function (barGroup, itemSize, textSize, orient) {\n var indicator = createPolygon([[0, 0]], 'move');\n indicator.position[0] = itemSize[0];\n indicator.attr({\n invisible: true,\n silent: true\n });\n barGroup.add(indicator);\n var textStyleModel = this.visualMapModel.textStyleModel;\n var indicatorLabel = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n });\n this.group.add(indicatorLabel);\n var indicatorLabelPoint = [orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT + 3, 0];\n var shapes = this._shapes;\n shapes.indicator = indicator;\n shapes.indicatorLabel = indicatorLabel;\n shapes.indicatorLabelPoint = indicatorLabelPoint;\n },\n\n /**\n * @private\n */\n _dragHandle: function (handleIndex, isEnd, dx, dy) {\n if (!this._useHandle) {\n return;\n }\n\n this._dragging = !isEnd;\n\n if (!isEnd) {\n // Transform dx, dy to bar coordination.\n var vertex = this._applyTransform([dx, dy], this._shapes.barGroup, true);\n\n this._updateInterval(handleIndex, vertex[1]); // Considering realtime, update view should be executed\n // before dispatch action.\n\n\n this._updateView();\n } // dragEnd do not dispatch action when realtime.\n\n\n if (isEnd === !this.visualMapModel.get('realtime')) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: this._dataInterval.slice()\n });\n }\n\n if (isEnd) {\n !this._hovering && this._clearHoverLinkToSeries();\n } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n }\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var visualMapModel = this.visualMapModel;\n var dataInterval = this._dataInterval = visualMapModel.getSelected();\n var dataExtent = visualMapModel.getExtent();\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} dx\n * @param {number} dy\n */\n _updateInterval: function (handleIndex, delta) {\n delta = delta || 0;\n var visualMapModel = this.visualMapModel;\n var handleEnds = this._handleEnds;\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\n 0);\n var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n },\n\n /**\n * @private\n */\n _updateView: function (forSketch) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var shapes = this._shapes;\n var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n shapes.inRange.setStyle({\n fill: visualInRange.barColor,\n opacity: visualInRange.opacity\n }).setShape('points', visualInRange.barPoints);\n shapes.outOfRange.setStyle({\n fill: visualOutOfRange.barColor,\n opacity: visualOutOfRange.opacity\n }).setShape('points', visualOutOfRange.barPoints);\n\n this._updateHandle(inRangeHandleEnds, visualInRange);\n },\n\n /**\n * @private\n */\n _createBarVisual: function (dataInterval, dataExtent, handleEnds, forceState) {\n var opts = {\n forceState: forceState,\n convertOpacityToAlpha: true\n };\n\n var colorStops = this._makeColorGradient(dataInterval, opts);\n\n var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n return {\n barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n barPoints: barPoints,\n handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n };\n },\n\n /**\n * @private\n */\n _makeColorGradient: function (dataInterval, opts) {\n // Considering colorHue, which is not linear, so we have to sample\n // to calculate gradient color stops, but not only caculate head\n // and tail.\n var sampleNumber = 100; // Arbitrary value.\n\n var colorStops = [];\n var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n colorStops.push({\n color: this.getControllerVisual(dataInterval[0], 'color', opts),\n offset: 0\n });\n\n for (var i = 1; i < sampleNumber; i++) {\n var currValue = dataInterval[0] + step * i;\n\n if (currValue > dataInterval[1]) {\n break;\n }\n\n colorStops.push({\n color: this.getControllerVisual(currValue, 'color', opts),\n offset: i / sampleNumber\n });\n }\n\n colorStops.push({\n color: this.getControllerVisual(dataInterval[1], 'color', opts),\n offset: 1\n });\n return colorStops;\n },\n\n /**\n * @private\n */\n _createBarPoints: function (handleEnds, symbolSizes) {\n var itemSize = this.visualMapModel.itemSize;\n return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n },\n\n /**\n * @private\n */\n _createBarGroup: function (itemAlign) {\n var orient = this._orient;\n var inverse = this.visualMapModel.get('inverse');\n return new graphic.Group(orient === 'horizontal' && !inverse ? {\n scale: itemAlign === 'bottom' ? [1, 1] : [-1, 1],\n rotation: Math.PI / 2\n } : orient === 'horizontal' && inverse ? {\n scale: itemAlign === 'bottom' ? [-1, 1] : [1, 1],\n rotation: -Math.PI / 2\n } : orient === 'vertical' && !inverse ? {\n scale: itemAlign === 'left' ? [1, -1] : [-1, -1]\n } : {\n scale: itemAlign === 'left' ? [1, 1] : [-1, 1]\n });\n },\n\n /**\n * @private\n */\n _updateHandle: function (handleEnds, visualInRange) {\n if (!this._useHandle) {\n return;\n }\n\n var shapes = this._shapes;\n var visualMapModel = this.visualMapModel;\n var handleThumbs = shapes.handleThumbs;\n var handleLabels = shapes.handleLabels;\n each([0, 1], function (handleIndex) {\n var handleThumb = handleThumbs[handleIndex];\n handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n handleThumb.position[1] = handleEnds[handleIndex]; // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n textVerticalAlign: 'middle',\n textAlign: this._applyTransform(this._orient === 'horizontal' ? handleIndex === 0 ? 'bottom' : 'top' : 'left', shapes.barGroup)\n });\n }, this);\n },\n\n /**\n * @private\n * @param {number} cursorValue\n * @param {number} textValue\n * @param {string} [rangeSymbol]\n * @param {number} [halfHoverLinkSize]\n */\n _showIndicator: function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var itemSize = visualMapModel.itemSize;\n var sizeExtent = [0, itemSize[1]];\n var pos = linearMap(cursorValue, dataExtent, sizeExtent, true);\n var shapes = this._shapes;\n var indicator = shapes.indicator;\n\n if (!indicator) {\n return;\n }\n\n indicator.position[1] = pos;\n indicator.attr('invisible', false);\n indicator.setShape('points', createIndicatorPoints(!!rangeSymbol, halfHoverLinkSize, pos, itemSize[1]));\n var opts = {\n convertOpacityToAlpha: true\n };\n var color = this.getControllerVisual(cursorValue, 'color', opts);\n indicator.setStyle('fill', color); // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n var indicatorLabel = shapes.indicatorLabel;\n indicatorLabel.attr('invisible', false);\n\n var align = this._applyTransform('left', shapes.barGroup);\n\n var orient = this._orient;\n indicatorLabel.setStyle({\n text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n textVerticalAlign: orient === 'horizontal' ? align : 'middle',\n textAlign: orient === 'horizontal' ? 'center' : align,\n x: textPoint[0],\n y: textPoint[1]\n });\n },\n\n /**\n * @private\n */\n _enableHoverLinkToSeries: function () {\n var self = this;\n\n this._shapes.barGroup.on('mousemove', function (e) {\n self._hovering = true;\n\n if (!self._dragging) {\n var itemSize = self.visualMapModel.itemSize;\n\n var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.barGroup, true, true); // For hover link show when hover handle, which might be\n // below or upper than sizeExtent.\n\n\n pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n }\n }).on('mouseout', function () {\n // When mouse is out of handle, hoverLink still need\n // to be displayed when realtime is set as false.\n self._hovering = false;\n !self._dragging && self._clearHoverLinkToSeries();\n });\n },\n\n /**\n * @private\n */\n _enableHoverLinkFromSeries: function () {\n var zr = this.api.getZr();\n\n if (this.visualMapModel.option.hoverLink) {\n zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n zr.on('mouseout', this._hideIndicator, this);\n } else {\n this._clearHoverLinkFromSeries();\n }\n },\n\n /**\n * @private\n */\n _doHoverLinkToSeries: function (cursorPos, hoverOnBar) {\n var visualMapModel = this.visualMapModel;\n var itemSize = visualMapModel.itemSize;\n\n if (!visualMapModel.option.hoverLink) {\n return;\n }\n\n var sizeExtent = [0, itemSize[1]];\n var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n // where china and india has very large population.\n\n hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n // otherwise labels overlap, especially when dragging.\n\n if (hoverOnBar) {\n if (valueRange[0] === -Infinity) {\n this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n } else if (valueRange[1] === Infinity) {\n this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n } else {\n this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n }\n } // When realtime is set as false, handles, which are in barGroup,\n // also trigger hoverLink, which help user to realize where they\n // focus on when dragging. (see test/heatmap-large.html)\n // When realtime is set as true, highlight will not show when hover\n // handle, because the label on handle, which displays a exact value\n // but not range, might mislead users.\n\n\n var oldBatch = this._hoverLinkDataIndices;\n var newBatch = [];\n\n if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n }\n\n var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\n\n this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\n },\n\n /**\n * @private\n */\n _hoverLinkFromSeriesMouseOver: function (e) {\n var el = e.target;\n var visualMapModel = this.visualMapModel;\n\n if (!el || el.dataIndex == null) {\n return;\n }\n\n var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex);\n\n if (!visualMapModel.isTargetSeries(dataModel)) {\n return;\n }\n\n var data = dataModel.getData(el.dataType);\n var value = data.get(visualMapModel.getDataDimension(data), el.dataIndex, true);\n\n if (!isNaN(value)) {\n this._showIndicator(value, value);\n }\n },\n\n /**\n * @private\n */\n _hideIndicator: function () {\n var shapes = this._shapes;\n shapes.indicator && shapes.indicator.attr('invisible', true);\n shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n },\n\n /**\n * @private\n */\n _clearHoverLinkToSeries: function () {\n this._hideIndicator();\n\n var indices = this._hoverLinkDataIndices;\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\n\n indices.length = 0;\n },\n\n /**\n * @private\n */\n _clearHoverLinkFromSeries: function () {\n this._hideIndicator();\n\n var zr = this.api.getZr();\n zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n zr.off('mouseout', this._hideIndicator);\n },\n\n /**\n * @private\n */\n _applyTransform: function (vertex, element, inverse, global) {\n var transform = graphic.getTransform(element, global ? null : this.group);\n return graphic[zrUtil.isArray(vertex) ? 'applyTransform' : 'transformDirection'](vertex, transform, inverse);\n },\n\n /**\n * @private\n */\n _dispatchHighDown: function (type, batch) {\n batch && batch.length && this.api.dispatchAction({\n type: type,\n batch: batch\n });\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n }\n});\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n return new graphic.Polygon({\n shape: {\n points: points\n },\n draggable: !!onDrift,\n cursor: cursor,\n drift: onDrift,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd\n });\n}\n\nfunction createHandlePoints(handleIndex, textSize) {\n return handleIndex === 0 ? [[0, 0], [textSize, 0], [textSize, -textSize]] : [[0, 0], [textSize, 0], [textSize, textSize]];\n}\n\nfunction createIndicatorPoints(isRange, halfHoverLinkSize, pos, extentMax) {\n return isRange ? [// indicate range\n [0, -mathMin(halfHoverLinkSize, mathMax(pos, 0))], [HOVER_LINK_OUT, 0], [0, mathMin(halfHoverLinkSize, mathMax(extentMax - pos, 0))]] : [// indicate single value\n [0, 0], [5, -5], [5, 5]];\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n if (hoverLinkDataSize) {\n halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n }\n\n return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = ContinuousView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n colorP: getColor(1, seriesModel),\n colorN: getColor(-1, seriesModel),\n borderColorP: getBorderColor(1, seriesModel),\n borderColorN: getBorderColor(-1, seriesModel)\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n var isLargeRender = seriesModel.pipelineContext.large;\n return !isLargeRender && {\n progress: progress\n };\n\n function progress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var itemModel = data.getItemModel(dataIndex);\n var sign = data.getItemLayout(dataIndex).sign;\n data.setItemVisual(dataIndex, {\n color: getColor(sign, itemModel),\n borderColor: getBorderColor(sign, itemModel)\n });\n }\n }\n\n function getColor(sign, model) {\n return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\n }\n\n function getBorderColor(sign, model) {\n return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./visualMapContinuous\");\n\nrequire(\"./visualMapPiecewise\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n/**\n * @param {Object} option\n * @param {string} [option.type] See visualHandlers.\n * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed'\n * @param {Array.=} [option.dataExtent] [minExtent, maxExtent],\n * required when mappingMethod is 'linear'\n * @param {Array.=} [option.pieceList] [\n * {value: someValue},\n * {interval: [min1, max1], visual: {...}},\n * {interval: [min2, max2]}\n * ],\n * required when mappingMethod is 'piecewise'.\n * Visual for only each piece can be specified.\n * @param {Array.=} [option.categories] ['cate1', 'cate2']\n * required when mappingMethod is 'category'.\n * If no option.categories, categories is set\n * as [0, 1, 2, ...].\n * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'.\n * @param {(Array|Object|*)} [option.visual] Visual data.\n * when mappingMethod is 'category',\n * visual data can be array or object\n * (like: {cate1: '#222', none: '#fff'})\n * or primary types (which represents\n * default category visual), otherwise visual\n * can be array or primary (which will be\n * normalized to array).\n *\n */\n\nvar VisualMapping = function (option) {\n var mappingMethod = option.mappingMethod;\n var visualType = option.type;\n /**\n * @readOnly\n * @type {Object}\n */\n\n var thisOption = this.option = zrUtil.clone(option);\n /**\n * @readOnly\n * @type {string}\n */\n\n this.type = visualType;\n /**\n * @readOnly\n * @type {string}\n */\n\n this.mappingMethod = mappingMethod;\n /**\n * @private\n * @type {Function}\n */\n\n this._normalizeData = normalizers[mappingMethod];\n var visualHandler = visualHandlers[visualType];\n /**\n * @public\n * @type {Function}\n */\n\n this.applyVisual = visualHandler.applyVisual;\n /**\n * @public\n * @type {Function}\n */\n\n this.getColorMapper = visualHandler.getColorMapper;\n /**\n * @private\n * @type {Function}\n */\n\n this._doMap = visualHandler._doMap[mappingMethod];\n\n if (mappingMethod === 'piecewise') {\n normalizeVisualRange(thisOption);\n preprocessForPiecewise(thisOption);\n } else if (mappingMethod === 'category') {\n thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n // which need no more preprocess except normalize visual.\n : normalizeVisualRange(thisOption, true);\n } else {\n // mappingMethod === 'linear' or 'fixed'\n zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n normalizeVisualRange(thisOption);\n }\n};\n\nVisualMapping.prototype = {\n constructor: VisualMapping,\n mapValueToVisual: function (value) {\n var normalized = this._normalizeData(value);\n\n return this._doMap(normalized, value);\n },\n getNormalizer: function () {\n return zrUtil.bind(this._normalizeData, this);\n }\n};\nvar visualHandlers = VisualMapping.visualHandlers = {\n color: {\n applyVisual: makeApplyVisual('color'),\n\n /**\n * Create a mapper function\n * @return {Function}\n */\n getColorMapper: function () {\n var thisOption = this.option;\n return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n !isNormalized && (value = this._normalizeData(value));\n return doMapCategory.call(this, value);\n } : function (value, isNormalized, out) {\n // If output rgb array\n // which will be much faster and useful in pixel manipulation\n var returnRGBArray = !!out;\n !isNormalized && (value = this._normalizeData(value));\n out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n }, this);\n },\n _doMap: {\n linear: function (normalized) {\n return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n colorHue: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, value);\n }),\n colorSaturation: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, value);\n }),\n colorLightness: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, null, value);\n }),\n colorAlpha: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyAlpha(color, value);\n }),\n opacity: {\n applyVisual: makeApplyVisual('opacity'),\n _doMap: makeDoMap([0, 1])\n },\n liftZ: {\n applyVisual: makeApplyVisual('liftZ'),\n _doMap: {\n linear: doMapFixed,\n category: doMapFixed,\n piecewise: doMapFixed,\n fixed: doMapFixed\n }\n },\n symbol: {\n applyVisual: function (value, getter, setter) {\n var symbolCfg = this.mapValueToVisual(value);\n\n if (zrUtil.isString(symbolCfg)) {\n setter('symbol', symbolCfg);\n } else if (isObject(symbolCfg)) {\n for (var name in symbolCfg) {\n if (symbolCfg.hasOwnProperty(name)) {\n setter(name, symbolCfg[name]);\n }\n }\n }\n },\n _doMap: {\n linear: doMapToArray,\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = doMapToArray.call(this, normalized);\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n symbolSize: {\n applyVisual: makeApplyVisual('symbolSize'),\n _doMap: makeDoMap([0, 1])\n }\n};\n\nfunction preprocessForPiecewise(thisOption) {\n var pieceList = thisOption.pieceList;\n thisOption.hasSpecialVisual = false;\n zrUtil.each(pieceList, function (piece, index) {\n piece.originIndex = index; // piece.visual is \"result visual value\" but not\n // a visual range, so it does not need to be normalized.\n\n if (piece.visual != null) {\n thisOption.hasSpecialVisual = true;\n }\n });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n // Hash categories.\n var categories = thisOption.categories;\n var visual = thisOption.visual;\n var categoryMap = thisOption.categoryMap = {};\n each(categories, function (cate, index) {\n categoryMap[cate] = index;\n }); // Process visual map input.\n\n if (!zrUtil.isArray(visual)) {\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v, cate) {\n var index = categoryMap[cate];\n visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n });\n } else {\n // Is primary type, represents default visual.\n visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n }\n\n visual = setVisualToOption(thisOption, visualArr);\n } // Remove categories that has no visual,\n // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n for (var i = categories.length - 1; i >= 0; i--) {\n if (visual[i] == null) {\n delete categoryMap[categories[i]];\n categories.pop();\n }\n }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n var visual = thisOption.visual;\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v) {\n visualArr.push(v);\n });\n } else if (visual != null) {\n visualArr.push(visual);\n }\n\n var doNotNeedPair = {\n color: 1,\n symbol: 1\n };\n\n if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n // Do not care visualArr.length === 0, which is illegal.\n visualArr[1] = visualArr[0];\n }\n\n setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n return {\n applyVisual: function (value, getter, setter) {\n value = this.mapValueToVisual(value); // Must not be array value\n\n setter('color', applyValue(getter('color'), value));\n },\n _doMap: makeDoMap([0, 1])\n };\n}\n\nfunction doMapToArray(normalized) {\n var visual = this.option.visual;\n return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\n}\n\nfunction makeApplyVisual(visualType) {\n return function (value, getter, setter) {\n setter(visualType, this.mapValueToVisual(value));\n };\n}\n\nfunction doMapCategory(normalized) {\n var visual = this.option.visual;\n return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n return this.option.visual[0];\n}\n\nfunction makeDoMap(sourceExtent) {\n return {\n linear: function (normalized) {\n return linearMap(normalized, sourceExtent, this.option.visual, true);\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = linearMap(normalized, sourceExtent, this.option.visual, true);\n }\n\n return result;\n },\n fixed: doMapFixed\n };\n}\n\nfunction getSpecifiedVisual(value) {\n var thisOption = this.option;\n var pieceList = thisOption.pieceList;\n\n if (thisOption.hasSpecialVisual) {\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n var piece = pieceList[pieceIndex];\n\n if (piece && piece.visual) {\n return piece.visual[this.type];\n }\n }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n thisOption.visual = visualArr;\n\n if (thisOption.type === 'color') {\n thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n return zrColor.parse(item);\n });\n }\n\n return visualArr;\n}\n/**\n * Normalizers by mapping methods.\n */\n\n\nvar normalizers = {\n linear: function (value) {\n return linearMap(value, this.option.dataExtent, [0, 1], true);\n },\n piecewise: function (value) {\n var pieceList = this.option.pieceList;\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n if (pieceIndex != null) {\n return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n }\n },\n category: function (value) {\n var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal\n\n return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n },\n fixed: zrUtil.noop\n};\n/**\n * List available visual types.\n *\n * @public\n * @return {Array.}\n */\n\nVisualMapping.listVisualTypes = function () {\n var visualTypes = [];\n zrUtil.each(visualHandlers, function (handler, key) {\n visualTypes.push(key);\n });\n return visualTypes;\n};\n/**\n * @public\n */\n\n\nVisualMapping.addVisualHandler = function (name, handler) {\n visualHandlers[name] = handler;\n};\n/**\n * @public\n */\n\n\nVisualMapping.isValidType = function (visualType) {\n return visualHandlers.hasOwnProperty(visualType);\n};\n/**\n * Convinent method.\n * Visual can be Object or Array or primary type.\n *\n * @public\n */\n\n\nVisualMapping.eachVisual = function (visual, callback, context) {\n if (zrUtil.isObject(visual)) {\n zrUtil.each(visual, callback, context);\n } else {\n callback.call(context, visual);\n }\n};\n\nVisualMapping.mapVisual = function (visual, callback, context) {\n var isPrimary;\n var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n VisualMapping.eachVisual(visual, function (v, key) {\n var newVal = callback.call(context, v, key);\n isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n });\n return newVisual;\n};\n/**\n * @public\n * @param {Object} obj\n * @return {Object} new object containers visual values.\n * If no visuals, return null.\n */\n\n\nVisualMapping.retrieveVisuals = function (obj) {\n var ret = {};\n var hasVisual;\n obj && each(visualHandlers, function (h, visualType) {\n if (obj.hasOwnProperty(visualType)) {\n ret[visualType] = obj[visualType];\n hasVisual = true;\n }\n });\n return hasVisual ? ret : null;\n};\n/**\n * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\n *\n * @public\n * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\n * IF Array, like: ['color', 'symbol', 'colorSaturation']\n * @return {Array.} Sorted visual types.\n */\n\n\nVisualMapping.prepareVisualTypes = function (visualTypes) {\n if (isObject(visualTypes)) {\n var types = [];\n each(visualTypes, function (item, type) {\n types.push(type);\n });\n visualTypes = types;\n } else if (zrUtil.isArray(visualTypes)) {\n visualTypes = visualTypes.slice();\n } else {\n return [];\n }\n\n visualTypes.sort(function (type1, type2) {\n // color should be front of colorSaturation, colorAlpha, ...\n // symbol and symbolSize do not matter.\n return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n });\n return visualTypes;\n};\n/**\n * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\n * Other visuals are only depends on themself.\n *\n * @public\n * @param {string} visualType1\n * @param {string} visualType2\n * @return {boolean}\n */\n\n\nVisualMapping.dependsOn = function (visualType1, visualType2) {\n return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n};\n/**\n * @param {number} value\n * @param {Array.} pieceList [{value: ..., interval: [min, max]}, ...]\n * Always from small to big.\n * @param {boolean} [findClosestWhenOutside=false]\n * @return {number} index\n */\n\n\nVisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n var possibleI;\n var abs = Infinity; // value has the higher priority.\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var pieceValue = pieceList[i].value;\n\n if (pieceValue != null) {\n if (pieceValue === value // FIXME\n // It is supposed to compare value according to value type of dimension,\n // but currently value type can exactly be string or number.\n // Compromise for numeric-like string (like '12'), especially\n // in the case that visualMap.categories is ['22', '33'].\n || typeof pieceValue === 'string' && pieceValue === value + '') {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(pieceValue, i);\n }\n }\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var piece = pieceList[i];\n var interval = piece.interval;\n var close = piece.close;\n\n if (interval) {\n if (interval[0] === -Infinity) {\n if (littleThan(close[1], value, interval[1])) {\n return i;\n }\n } else if (interval[1] === Infinity) {\n if (littleThan(close[0], interval[0], value)) {\n return i;\n }\n } else if (littleThan(close[0], interval[0], value) && littleThan(close[1], value, interval[1])) {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(interval[0], i);\n findClosestWhenOutside && updatePossible(interval[1], i);\n }\n }\n\n if (findClosestWhenOutside) {\n return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n }\n\n function updatePossible(val, index) {\n var newAbs = Math.abs(val - value);\n\n if (newAbs < abs) {\n abs = newAbs;\n possibleI = index;\n }\n }\n};\n\nfunction littleThan(close, a, b) {\n return close ? a <= b : a < b;\n}\n\nvar _default = VisualMapping;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual mapping.\n */\nvar visualDefault = {\n /**\n * @public\n */\n get: function (visualType, key, isCategory) {\n var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n }\n};\nvar defaultOption = {\n color: {\n active: ['#006edd', '#e0ffff'],\n inactive: ['rgba(0,0,0,0)']\n },\n colorHue: {\n active: [0, 360],\n inactive: [0, 0]\n },\n colorSaturation: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n colorLightness: {\n active: [0.9, 0.5],\n inactive: [0, 0]\n },\n colorAlpha: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n opacity: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n symbol: {\n active: ['circle', 'roundRect', 'diamond'],\n inactive: ['none']\n },\n symbolSize: {\n active: [10, 50],\n inactive: [0, 0]\n }\n};\nvar _default = visualDefault;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\nvar Model = require(\"../../model/Model\");\n\nvar barItemStyle = require(\"./barItemStyle\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar _throttle = require(\"../../util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar Sausage = require(\"../../util/shape/sausage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth'];\nvar _eventPos = [0, 0]; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nfunction getClipArea(coord, data) {\n var coordSysClipArea = coord.getArea && coord.getArea();\n\n if (coord.type === 'cartesian2d') {\n var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n // We should not clip this part.\n // See test/bar2.html\n\n if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n var expandWidth = data.getLayout('bandWidth');\n\n if (baseAxis.isHorizontal()) {\n coordSysClipArea.x -= expandWidth;\n coordSysClipArea.width += expandWidth * 2;\n } else {\n coordSysClipArea.y -= expandWidth;\n coordSysClipArea.height += expandWidth * 2;\n }\n }\n }\n\n return coordSysClipArea;\n}\n\nvar _default = echarts.extendChartView({\n type: 'bar',\n render: function (seriesModel, ecModel, api) {\n this._updateDrawMode(seriesModel);\n\n var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api);\n } else {}\n\n return this.group;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n // Do not support progressive in normal mode.\n this._incrementalRenderLarge(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coord = seriesModel.coordinateSystem;\n var baseAxis = coord.getBaseAxis();\n var isHorizontalOrRadial;\n\n if (coord.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n } else if (coord.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n }\n\n var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n var needsClip = seriesModel.get('clip', true);\n var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n // And don't want the label are clipped.\n\n var roundCap = seriesModel.get('roundCap', true);\n var drawBackground = seriesModel.get('showBackground', true);\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var barBorderRadius = backgroundModel.get('barBorderRadius') || 0;\n var bgEls = [];\n var oldBgEls = this._backgroundEls || [];\n\n var createBackground = function (dataIndex) {\n var bgLayout = getLayout[coord.type](data, dataIndex);\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[dataIndex] = bgEl;\n return bgEl;\n };\n\n data.diff(oldData).add(function (dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n if (drawBackground) {\n createBackground(dataIndex);\n } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n if (needsClip) {\n // Clip will modify the layout params.\n // And return a boolean to determine if the shape are fully clipped.\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n var el = elementCreator[coord.type](dataIndex, layout, isHorizontalOrRadial, animationModel, false, roundCap);\n data.setItemGraphicEl(dataIndex, el);\n group.add(el);\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).update(function (newIndex, oldIndex) {\n var itemModel = data.getItemModel(newIndex);\n var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n if (drawBackground) {\n var bgEl;\n\n if (oldBgEls.length === 0) {\n bgEl = createBackground(oldIndex);\n } else {\n bgEl = oldBgEls[oldIndex];\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[newIndex] = bgEl;\n }\n\n var bgLayout = getLayout[coord.type](data, newIndex);\n var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n graphic.updateProps(bgEl, {\n shape: shape\n }, animationModel, newIndex);\n }\n\n var el = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(el);\n return;\n }\n\n if (needsClip) {\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n if (el) {\n graphic.updateProps(el, {\n shape: layout\n }, animationModel, newIndex);\n } else {\n el = elementCreator[coord.type](newIndex, layout, isHorizontalOrRadial, animationModel, true, roundCap);\n }\n\n data.setItemGraphicEl(newIndex, el); // Add back\n\n group.add(el);\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).remove(function (dataIndex) {\n var el = oldData.getItemGraphicEl(dataIndex);\n\n if (coord.type === 'cartesian2d') {\n el && removeRect(dataIndex, animationModel, el);\n } else {\n el && removeSector(dataIndex, animationModel, el);\n }\n }).execute();\n var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n bgGroup.removeAll();\n\n for (var i = 0; i < bgEls.length; ++i) {\n bgGroup.add(bgEls[i]);\n }\n\n group.add(bgGroup);\n this._backgroundEls = bgEls;\n this._data = data;\n },\n _renderLarge: function (seriesModel, ecModel, api) {\n this._clear();\n\n createLarge(seriesModel, this.group); // Use clipPath in large mode.\n\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n this._removeBackground();\n\n createLarge(seriesModel, this.group, true);\n },\n dispose: zrUtil.noop,\n remove: function (ecModel) {\n this._clear(ecModel);\n },\n _clear: function (ecModel) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel && ecModel.get('animation') && data && !this._isLargeDraw) {\n this._removeBackground();\n\n this._backgroundEls = [];\n data.eachItemGraphicEl(function (el) {\n if (el.type === 'sector') {\n removeSector(el.dataIndex, ecModel, el);\n } else {\n removeRect(el.dataIndex, ecModel, el);\n }\n });\n } else {\n group.removeAll();\n }\n\n this._data = null;\n },\n _removeBackground: function () {\n this.group.remove(this._backgroundGroup);\n this._backgroundGroup = null;\n }\n});\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar clip = {\n cartesian2d: function (coordSysBoundingRect, layout) {\n var signWidth = layout.width < 0 ? -1 : 1;\n var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n var x = mathMax(layout.x, coordSysBoundingRect.x);\n var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\n var y = mathMax(layout.y, coordSysBoundingRect.y);\n var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\n layout.x = x;\n layout.y = y;\n layout.width = x2 - x;\n layout.height = y2 - y;\n var clipped = layout.width < 0 || layout.height < 0; // Reverse back\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n return clipped;\n },\n polar: function (coordSysClipArea, layout) {\n var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n var r = mathMin(layout.r, coordSysClipArea.r);\n var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n layout.r = r;\n layout.r0 = r0;\n var clipped = r - r0 < 0; // Reverse back\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n return clipped;\n }\n};\nvar elementCreator = {\n cartesian2d: function (dataIndex, layout, isHorizontal, animationModel, isUpdate) {\n var rect = new graphic.Rect({\n shape: zrUtil.extend({}, layout),\n z2: 1\n });\n rect.name = 'item'; // Animation\n\n if (animationModel) {\n var rectShape = rect.shape;\n var animateProperty = isHorizontal ? 'height' : 'width';\n var animateTarget = {};\n rectShape[animateProperty] = 0;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return rect;\n },\n polar: function (dataIndex, layout, isRadial, animationModel, isUpdate, roundCap) {\n // Keep the same logic with bar in catesion: use end value to control\n // direction. Notice that if clockwise is true (by default), the sector\n // will always draw clockwisely, no matter whether endAngle is greater\n // or less than startAngle.\n var clockwise = layout.startAngle < layout.endAngle;\n var ShapeClass = !isRadial && roundCap ? Sausage : graphic.Sector;\n var sector = new ShapeClass({\n shape: zrUtil.defaults({\n clockwise: clockwise\n }, layout),\n z2: 1\n });\n sector.name = 'item'; // Animation\n\n if (animationModel) {\n var sectorShape = sector.shape;\n var animateProperty = isRadial ? 'r' : 'endAngle';\n var animateTarget = {};\n sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return sector;\n }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n width: 0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n r: el.shape.r0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nvar getLayout = {\n // itemModel is only used to get borderWidth, which is not needed\n // when calculating bar background layout.\n cartesian2d: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n var signX = layout.width > 0 ? 1 : -1;\n var signY = layout.height > 0 ? 1 : -1;\n return {\n x: layout.x + signX * fixedLineWidth / 2,\n y: layout.y + signY * fixedLineWidth / 2,\n width: layout.width - signX * fixedLineWidth,\n height: layout.height - signY * fixedLineWidth\n };\n },\n polar: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n return {\n cx: layout.cx,\n cy: layout.cy,\n r0: layout.r0,\n r: layout.r,\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n };\n }\n};\n\nfunction isZeroOnPolar(layout) {\n return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n var color = data.getItemVisual(dataIndex, 'color');\n var opacity = data.getItemVisual(dataIndex, 'opacity');\n var stroke = data.getVisual('borderColor');\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n if (!isPolar) {\n el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n }\n\n el.useStyle(zrUtil.defaults({\n stroke: isZeroOnPolar(layout) ? 'none' : stroke,\n fill: isZeroOnPolar(layout) ? 'none' : color,\n opacity: opacity\n }, itemStyleModel.getBarItemStyle()));\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && el.attr('cursor', cursorStyle);\n var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n if (!isPolar) {\n setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n }\n\n if (isZeroOnPolar(layout)) {\n hoverStyle.fill = hoverStyle.stroke = 'none';\n }\n\n graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; // width or height may be NaN for empty data\n\n var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n return Math.min(lineWidth, width, height);\n}\n\nvar LargePath = Path.extend({\n type: 'largeBar',\n shape: {\n points: []\n },\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n var startPoint = this.__startPoint;\n var baseDimIdx = this.__baseDimIdx;\n\n for (var i = 0; i < points.length; i += 2) {\n startPoint[baseDimIdx] = points[i + baseDimIdx];\n ctx.moveTo(startPoint[0], startPoint[1]);\n ctx.lineTo(points[i], points[i + 1]);\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n // TODO support polar\n var data = seriesModel.getData();\n var startPoint = [];\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\n var largeDataIndices = data.getLayout('largeDataIndices');\n var barWidth = data.getLayout('barWidth');\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var drawBackground = seriesModel.get('showBackground', true);\n\n if (drawBackground) {\n var points = data.getLayout('largeBackgroundPoints');\n var backgroundStartPoint = [];\n backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\n var bgEl = new LargePath({\n shape: {\n points: points\n },\n incremental: !!incremental,\n __startPoint: backgroundStartPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth,\n silent: true,\n z2: 0\n });\n setLargeBackgroundStyle(bgEl, backgroundModel, data);\n group.add(bgEl);\n }\n\n var el = new LargePath({\n shape: {\n points: data.getLayout('largePoints')\n },\n incremental: !!incremental,\n __startPoint: startPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth\n });\n group.add(el);\n setLargeStyle(el, seriesModel, data); // Enable tooltip and user mouse/touch event handlers.\n\n el.seriesIndex = seriesModel.seriesIndex;\n\n if (!seriesModel.get('silent')) {\n el.on('mousedown', largePathUpdateDataIndex);\n el.on('mousemove', largePathUpdateDataIndex);\n }\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n var largePath = this;\n var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n largePath.dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n var baseDimIdx = largePath.__baseDimIdx;\n var valueDimIdx = 1 - baseDimIdx;\n var points = largePath.shape.points;\n var largeDataIndices = largePath.__largeDataIndices;\n var barWidthHalf = Math.abs(largePath.__barWidth / 2);\n var startValueVal = largePath.__startPoint[valueDimIdx];\n _eventPos[0] = x;\n _eventPos[1] = y;\n var pointerBaseVal = _eventPos[baseDimIdx];\n var pointerValueVal = _eventPos[1 - baseDimIdx];\n var baseLowerBound = pointerBaseVal - barWidthHalf;\n var baseUpperBound = pointerBaseVal + barWidthHalf;\n\n for (var i = 0, len = points.length / 2; i < len; i++) {\n var ii = i * 2;\n var barBaseVal = points[ii + baseDimIdx];\n var barValueVal = points[ii + valueDimIdx];\n\n if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) {\n return largeDataIndices[i];\n }\n }\n\n return -1;\n}\n\nfunction setLargeStyle(el, seriesModel, data) {\n var borderColor = data.getVisual('borderColor') || data.getVisual('color');\n var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\n var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\n var itemStyle = backgroundModel.getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n var coordLayout;\n var isPolar = coord.type === 'polar';\n\n if (isPolar) {\n coordLayout = coord.getArea();\n } else {\n coordLayout = coord.grid.getRect();\n }\n\n if (isPolar) {\n return {\n cx: coordLayout.cx,\n cy: coordLayout.cy,\n r0: isHorizontalOrRadial ? coordLayout.r0 : layout.r0,\n r: isHorizontalOrRadial ? coordLayout.r : layout.r,\n startAngle: isHorizontalOrRadial ? layout.startAngle : 0,\n endAngle: isHorizontalOrRadial ? layout.endAngle : Math.PI * 2\n };\n } else {\n return {\n x: isHorizontalOrRadial ? layout.x : coordLayout.x,\n y: isHorizontalOrRadial ? coordLayout.y : layout.y,\n width: isHorizontalOrRadial ? layout.width : coordLayout.width,\n height: isHorizontalOrRadial ? coordLayout.height : layout.height\n };\n }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n var ElementClz = coord.type === 'polar' ? graphic.Sector : graphic.Rect;\n return new ElementClz({\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n silent: true,\n z2: 0\n });\n}\n\nmodule.exports = _default;","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar constants = require('./constants');\nvar utils = require('./utils');\nvar utilsLite = require('utils-lite');\nrequire('echarts/lib/chart/bar');\nrequire('echarts/lib/chart/line');\nrequire('echarts/lib/chart/candlestick');\nrequire('echarts/lib/component/visualMap');\nrequire('echarts/lib/component/dataZoom');\nvar Core = _interopDefault(require('./core'));\n\nvar DEFAULT_MA = [5, 10, 20, 30];\nvar DEFAULT_K_NAME = '日K';\nvar DEFAULT_DOWN_COLOR = '#ec0000';\nvar DEFAULT_UP_COLOR = '#00da3c';\nvar DEFAULT_START = 50;\nvar DEFAULT_END = 100;\nvar SHOW_FALSE = { show: false };\n\nfunction getCandleLegend(args) {\n var showMA = args.showMA,\n MA = args.MA,\n legendName = args.legendName,\n labelMap = args.labelMap;\n\n var data = [DEFAULT_K_NAME];\n if (showMA) data = data.concat(MA.map(function (v) {\n return 'MA' + v;\n }));\n if (labelMap) data = data.map(function (v) {\n return labelMap[v] == null ? v : labelMap[v];\n });\n return {\n data: data,\n formatter: function formatter(name) {\n return legendName[name] != null ? legendName[name] : name;\n }\n };\n}\n\nfunction getCandleTooltip(args) {\n var metrics = args.metrics,\n dataType = args.dataType,\n digit = args.digit,\n labelMap = args.labelMap;\n\n return {\n trigger: 'axis',\n axisPointer: { type: 'cross' },\n position: function position(pos, params, el, elRect, size) {\n var result = { top: 10 };\n var side = pos[0] < size.viewSize[0] / 2 ? 'right' : 'left';\n result[side] = 60;\n return result;\n },\n formatter: function formatter(options) {\n var tpl = [];\n tpl.push(options[0].axisValue + '
');\n options.forEach(function (option) {\n var data = option.data,\n seriesName = option.seriesName,\n componentSubType = option.componentSubType,\n color = option.color;\n\n var name = labelMap[seriesName] == null ? seriesName : labelMap[seriesName];\n tpl.push(constants.itemPoint(color) + ' ' + name + ': ');\n if (componentSubType === 'candlestick') {\n tpl.push('
');\n metrics.slice(0, 4).forEach(function (m, i) {\n var name = labelMap[m] != null ? labelMap[m] : m;\n var val = utils.getFormated(data[i + 1], dataType, digit);\n tpl.push('- ' + name + ': ' + val + '
');\n });\n } else if (componentSubType === 'line') {\n var val = utils.getFormated(data, dataType, digit);\n tpl.push(val + '
');\n } else if (componentSubType === 'bar') {\n var _val = utils.getFormated(data[1], dataType, digit);\n tpl.push(_val + '
');\n }\n });\n return tpl.join('');\n }\n };\n}\n\nfunction getCandleVisualMap(args) {\n var downColor = args.downColor,\n upColor = args.upColor,\n MA = args.MA,\n showMA = args.showMA;\n\n return {\n show: false,\n seriesIndex: showMA ? 1 + MA.length : 1,\n dimension: 2,\n pieces: [{ value: 1, color: downColor }, { value: -1, color: upColor }]\n };\n}\n\nfunction getCandleGrid(args) {\n var showVol = args.showVol;\n\n return [{\n left: '10%',\n right: '8%',\n top: '10%',\n height: showVol ? '50%' : '65%',\n containLabel: false\n }, {\n left: '10%',\n right: '8%',\n top: '65%',\n height: '16%',\n containLabel: false\n }];\n}\n\nfunction getCandleXAxis(args) {\n var data = args.dims;\n\n var type = 'category';\n var scale = true;\n var boundaryGap = false;\n var splitLine = SHOW_FALSE;\n var axisLine = { onZero: false };\n var axisTick = SHOW_FALSE;\n var axisLabel = SHOW_FALSE;\n var min = 'dataMin';\n var max = 'dataMax';\n var gridIndex = 1;\n\n return [{ type: type, data: data, scale: scale, boundaryGap: boundaryGap, axisLine: axisLine, splitLine: splitLine, min: min, max: max }, { type: type, gridIndex: gridIndex, data: data, scale: scale, boundaryGap: boundaryGap, axisLine: axisLine, axisTick: axisTick, splitLine: splitLine, axisLabel: axisLabel, min: min, max: max }];\n}\n\nfunction getCandleYAxis(args) {\n var dataType = args.dataType,\n digit = args.digit;\n\n var scale = true;\n var gridIndex = 1;\n var splitNumber = 2;\n var axisLine = SHOW_FALSE;\n var axisTick = SHOW_FALSE;\n var axisLabel = SHOW_FALSE;\n var splitLine = SHOW_FALSE;\n var formatter = function formatter(val) {\n return utils.getFormated(val, dataType, digit);\n };\n\n return [{ scale: scale, axisTick: axisTick, axisLabel: { formatter: formatter } }, { scale: scale, gridIndex: gridIndex, splitNumber: splitNumber, axisLine: axisLine, axisTick: axisTick, splitLine: splitLine, axisLabel: axisLabel }];\n}\n\nfunction getCandleDataZoom(args) {\n var start = args.start,\n end = args.end;\n\n\n return [{\n type: 'inside',\n xAxisIndex: [0, 1],\n start: start,\n end: end\n }, {\n show: true,\n xAxisIndex: [0, 1],\n type: 'slider',\n top: '85%',\n start: start,\n end: end\n }];\n}\n\nfunction getCandleSeries(args) {\n var values = args.values,\n volumes = args.volumes,\n upColor = args.upColor,\n downColor = args.downColor,\n showMA = args.showMA,\n MA = args.MA,\n showVol = args.showVol,\n labelMap = args.labelMap,\n digit = args.digit,\n itemStyle = args.itemStyle;\n\n var style = itemStyle || {\n normal: {\n color: upColor,\n color0: downColor,\n borderColor: null,\n borderColor0: null\n }\n };\n var lineStyle = { normal: { opacity: 0.5 } };\n var series = [{\n name: labelMap[DEFAULT_K_NAME] == null ? DEFAULT_K_NAME : labelMap[DEFAULT_K_NAME],\n type: 'candlestick',\n data: values,\n itemStyle: style\n }];\n\n if (showMA) {\n MA.forEach(function (d) {\n var name = 'MA' + d;\n series.push({\n name: labelMap[name] == null ? name : labelMap[name],\n data: calculateMA(d, values, digit),\n type: 'line',\n lineStyle: lineStyle,\n smooth: true\n });\n });\n }\n\n if (showVol) {\n series.push({\n name: 'Volume',\n type: 'bar',\n xAxisIndex: 1,\n yAxisIndex: 1,\n data: volumes\n });\n }\n\n return series;\n}\n\nfunction calculateMA(dayCount, data, digit) {\n var result = [];\n data.forEach(function (d, i) {\n if (i < dayCount) {\n result.push('-');\n } else {\n var sum = 0;\n for (var j = 0; j < dayCount; j++) {\n sum += data[i - j][1];\n }result.push(+(sum / dayCount).toFixed(digit));\n }\n });\n return result;\n}\n\nvar candle = function candle(columns, rows, settings, status) {\n var _settings$dimension = settings.dimension,\n dimension = _settings$dimension === undefined ? columns[0] : _settings$dimension,\n _settings$metrics = settings.metrics,\n metrics = _settings$metrics === undefined ? columns.slice(1, 6) : _settings$metrics,\n _settings$digit = settings.digit,\n digit = _settings$digit === undefined ? 2 : _settings$digit,\n itemStyle = settings.itemStyle,\n _settings$labelMap = settings.labelMap,\n labelMap = _settings$labelMap === undefined ? {} : _settings$labelMap,\n _settings$legendName = settings.legendName,\n legendName = _settings$legendName === undefined ? {} : _settings$legendName,\n _settings$MA = settings.MA,\n MA = _settings$MA === undefined ? DEFAULT_MA : _settings$MA,\n _settings$showMA = settings.showMA,\n showMA = _settings$showMA === undefined ? false : _settings$showMA,\n _settings$showVol = settings.showVol,\n showVol = _settings$showVol === undefined ? false : _settings$showVol,\n _settings$showDataZoo = settings.showDataZoom,\n showDataZoom = _settings$showDataZoo === undefined ? false : _settings$showDataZoo,\n _settings$downColor = settings.downColor,\n downColor = _settings$downColor === undefined ? DEFAULT_DOWN_COLOR : _settings$downColor,\n _settings$upColor = settings.upColor,\n upColor = _settings$upColor === undefined ? DEFAULT_UP_COLOR : _settings$upColor,\n _settings$start = settings.start,\n start = _settings$start === undefined ? DEFAULT_START : _settings$start,\n _settings$end = settings.end,\n end = _settings$end === undefined ? DEFAULT_END : _settings$end,\n dataType = settings.dataType;\n var tooltipVisible = status.tooltipVisible,\n legendVisible = status.legendVisible;\n\n\n var isLiteData = utilsLite.isArray(rows[0]);\n var dims = [];\n var values = [];\n var volumes = [];\n var candleMetrics = metrics.slice(0, 4);\n var volumeMetrics = metrics[4];\n\n if (isLiteData) {\n rows.forEach(function (row) {\n var itemResult = [];\n dims.push(row[columns.indexOf(dimension)]);\n candleMetrics.forEach(function (item) {\n itemResult.push(row[columns.indexOf(item)]);\n });\n values.push(itemResult);\n if (volumeMetrics) volumes.push(row[columns.indexOf(volumeMetrics)]);\n });\n } else {\n rows.forEach(function (row, index) {\n var itemResult = [];\n dims.push(row[dimension]);\n candleMetrics.forEach(function (item) {\n itemResult.push(row[item]);\n });\n values.push(itemResult);\n if (volumeMetrics) {\n var _status = row[metrics[0]] > row[metrics[1]] ? 1 : -1;\n volumes.push([index, row[volumeMetrics], _status]);\n }\n });\n }\n\n var legend = legendVisible && getCandleLegend({ showMA: showMA, MA: MA, legendName: legendName, labelMap: labelMap });\n var tooltip = tooltipVisible && getCandleTooltip({ metrics: metrics, dataType: dataType, digit: digit, labelMap: labelMap });\n var visualMap$$1 = showVol && getCandleVisualMap({ downColor: downColor, upColor: upColor, MA: MA, showMA: showMA });\n var dataZoom$$1 = showDataZoom && getCandleDataZoom({ start: start, end: end });\n var grid = getCandleGrid({ showVol: showVol });\n var xAxis = getCandleXAxis({ dims: dims });\n var yAxis = getCandleYAxis({ dataType: dataType, digit: digit });\n var series = getCandleSeries({\n values: values,\n volumes: volumes,\n upColor: upColor,\n downColor: downColor,\n showMA: showMA,\n MA: MA,\n showVol: showVol,\n labelMap: labelMap,\n digit: digit,\n itemStyle: itemStyle\n });\n var axisPointer = { link: { xAxisIndex: 'all' } };\n return { legend: legend, tooltip: tooltip, visualMap: visualMap$$1, grid: grid, xAxis: xAxis, yAxis: yAxis, dataZoom: dataZoom$$1, series: series, axisPointer: axisPointer };\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar index = _extends({}, Core, {\n name: 'VeCandle',\n data: function data() {\n this.chartHandler = candle;\n return {};\n }\n});\n\nmodule.exports = index;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar layout = require(\"../../util/layout\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'visualMap',\n\n /**\n * @readOnly\n * @type {Object}\n */\n autoPositionValues: {\n left: 1,\n right: 1,\n top: 1,\n bottom: 1\n },\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/visualMap/visualMapModel}\n */\n\n this.visualMapModel;\n },\n\n /**\n * @protected\n */\n render: function (visualMapModel, ecModel, api, payload) {\n this.visualMapModel = visualMapModel;\n\n if (visualMapModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n this.doRender.apply(this, arguments);\n },\n\n /**\n * @protected\n */\n renderBackground: function (group) {\n var visualMapModel = this.visualMapModel;\n var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n var rect = group.getBoundingRect();\n group.add(new graphic.Rect({\n z2: -1,\n // Lay background rect on the lowest layer.\n silent: true,\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[3] + padding[1],\n height: rect.height + padding[0] + padding[2]\n },\n style: {\n fill: visualMapModel.get('backgroundColor'),\n stroke: visualMapModel.get('borderColor'),\n lineWidth: visualMapModel.get('borderWidth')\n }\n }));\n },\n\n /**\n * @protected\n * @param {number} targetValue can be Infinity or -Infinity\n * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n * @param {Object} [opts]\n * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n * @return {*} Visual value.\n */\n getControllerVisual: function (targetValue, visualCluster, opts) {\n opts = opts || {};\n var forceState = opts.forceState;\n var visualMapModel = this.visualMapModel;\n var visualObj = {}; // Default values.\n\n if (visualCluster === 'symbol') {\n visualObj.symbol = visualMapModel.get('itemSymbol');\n }\n\n if (visualCluster === 'color') {\n var defaultColor = visualMapModel.get('contentColor');\n visualObj.color = defaultColor;\n }\n\n function getter(key) {\n return visualObj[key];\n }\n\n function setter(key, value) {\n visualObj[key] = value;\n }\n\n var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n zrUtil.each(visualTypes, function (type) {\n var visualMapping = mappings[type];\n\n if (opts.convertOpacityToAlpha && type === 'opacity') {\n type = 'colorAlpha';\n visualMapping = mappings.__alphaForOpacity;\n }\n\n if (VisualMapping.dependsOn(type, visualCluster)) {\n visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n }\n });\n return visualObj[visualCluster];\n },\n\n /**\n * @protected\n */\n positionGroup: function (group) {\n var model = this.visualMapModel;\n var api = this.api;\n layout.positionElement(group, model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n },\n\n /**\n * @protected\n * @abstract\n */\n doRender: zrUtil.noop\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/ContinuousModel\");\n\nrequire(\"./visualMap/ContinuousView\");\n\nrequire(\"./visualMap/visualMapAction\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","/*!\n * wordcloud2.js\n * http://timdream.org/wordcloud2.js/\n *\n * Copyright 2011 - 2013 Tim Chien\n * Released under the MIT license\n */\n\n'use strict';\n\n// setImmediate\nif (!window.setImmediate) {\n window.setImmediate = (function setupSetImmediate() {\n return window.msSetImmediate ||\n window.webkitSetImmediate ||\n window.mozSetImmediate ||\n window.oSetImmediate ||\n (function setupSetZeroTimeout() {\n if (!window.postMessage || !window.addEventListener) {\n return null;\n }\n\n var callbacks = [undefined];\n var message = 'zero-timeout-message';\n\n // Like setTimeout, but only takes a function argument. There's\n // no time argument (always zero) and no arguments (you have to\n // use a closure).\n var setZeroTimeout = function setZeroTimeout(callback) {\n var id = callbacks.length;\n callbacks.push(callback);\n window.postMessage(message + id.toString(36), '*');\n\n return id;\n };\n\n window.addEventListener('message', function setZeroTimeoutMessage(evt) {\n // Skipping checking event source, retarded IE confused this window\n // object with another in the presence of iframe\n if (typeof evt.data !== 'string' ||\n evt.data.substr(0, message.length) !== message/* ||\n evt.source !== window */) {\n return;\n }\n\n evt.stopImmediatePropagation();\n\n var id = parseInt(evt.data.substr(message.length), 36);\n if (!callbacks[id]) {\n return;\n }\n\n callbacks[id]();\n callbacks[id] = undefined;\n }, true);\n\n /* specify clearImmediate() here since we need the scope */\n window.clearImmediate = function clearZeroTimeout(id) {\n if (!callbacks[id]) {\n return;\n }\n\n callbacks[id] = undefined;\n };\n\n return setZeroTimeout;\n })() ||\n // fallback\n function setImmediateFallback(fn) {\n window.setTimeout(fn, 0);\n };\n })();\n}\n\nif (!window.clearImmediate) {\n window.clearImmediate = (function setupClearImmediate() {\n return window.msClearImmediate ||\n window.webkitClearImmediate ||\n window.mozClearImmediate ||\n window.oClearImmediate ||\n // \"clearZeroTimeout\" is implement on the previous block ||\n // fallback\n function clearImmediateFallback(timer) {\n window.clearTimeout(timer);\n };\n })();\n}\n\n(function(global) {\n\n // Check if WordCloud can run on this browser\n var isSupported = (function isSupported() {\n var canvas = document.createElement('canvas');\n if (!canvas || !canvas.getContext) {\n return false;\n }\n\n var ctx = canvas.getContext('2d');\n if (!ctx.getImageData) {\n return false;\n }\n if (!ctx.fillText) {\n return false;\n }\n\n if (!Array.prototype.some) {\n return false;\n }\n if (!Array.prototype.push) {\n return false;\n }\n\n return true;\n }());\n\n // Find out if the browser impose minium font size by\n // drawing small texts on a canvas and measure it's width.\n var minFontSize = (function getMinFontSize() {\n if (!isSupported) {\n return;\n }\n\n var ctx = document.createElement('canvas').getContext('2d');\n\n // start from 20\n var size = 20;\n\n // two sizes to measure\n var hanWidth, mWidth;\n\n while (size) {\n ctx.font = size.toString(10) + 'px sans-serif';\n if ((ctx.measureText('\\uFF37').width === hanWidth) &&\n (ctx.measureText('m').width) === mWidth) {\n return (size + 1);\n }\n\n hanWidth = ctx.measureText('\\uFF37').width;\n mWidth = ctx.measureText('m').width;\n\n size--;\n }\n\n return 0;\n })();\n\n // Based on http://jsfromhell.com/array/shuffle\n var shuffleArray = function shuffleArray(arr) {\n for (var j, x, i = arr.length; i;\n j = Math.floor(Math.random() * i),\n x = arr[--i], arr[i] = arr[j],\n arr[j] = x) {}\n return arr;\n };\n\n var WordCloud = function WordCloud(elements, options) {\n if (!isSupported) {\n return;\n }\n\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n elements.forEach(function(el, i) {\n if (typeof el === 'string') {\n elements[i] = document.getElementById(el);\n if (!elements[i]) {\n throw 'The element id specified is not found.';\n }\n } else if (!el.tagName && !el.appendChild) {\n throw 'You must pass valid HTML elements, or ID of the element.';\n }\n });\n\n /* Default values to be overwritten by options object */\n var settings = {\n list: [],\n fontFamily: '\"Trebuchet MS\", \"Heiti TC\", \"微軟正黑體\", ' +\n '\"Arial Unicode MS\", \"Droid Fallback Sans\", sans-serif',\n fontWeight: 'normal',\n color: 'random-dark',\n minSize: 0, // 0 to disable\n weightFactor: 1,\n clearCanvas: true,\n backgroundColor: '#fff', // opaque white = rgba(255, 255, 255, 1)\n\n gridSize: 8,\n drawOutOfBound: false,\n origin: null,\n\n drawMask: false,\n maskColor: 'rgba(255,0,0,0.3)',\n maskGapWidth: 0.3,\n\n wait: 0,\n abortThreshold: 0, // disabled\n abort: function noop() {},\n\n minRotation: - Math.PI / 2,\n maxRotation: Math.PI / 2,\n rotationStep: 0.1,\n\n shuffle: true,\n rotateRatio: 0.1,\n\n shape: 'circle',\n ellipticity: 0.65,\n\n classes: null,\n\n hover: null,\n click: null\n };\n\n if (options) {\n for (var key in options) {\n if (key in settings) {\n settings[key] = options[key];\n }\n }\n }\n\n /* Convert weightFactor into a function */\n if (typeof settings.weightFactor !== 'function') {\n var factor = settings.weightFactor;\n settings.weightFactor = function weightFactor(pt) {\n return pt * factor; //in px\n };\n }\n\n /* Convert shape into a function */\n if (typeof settings.shape !== 'function') {\n switch (settings.shape) {\n case 'circle':\n /* falls through */\n default:\n // 'circle' is the default and a shortcut in the code loop.\n settings.shape = 'circle';\n break;\n\n case 'cardioid':\n settings.shape = function shapeCardioid(theta) {\n return 1 - Math.sin(theta);\n };\n break;\n\n /*\n To work out an X-gon, one has to calculate \"m\",\n where 1/(cos(2*PI/X)+m*sin(2*PI/X)) = 1/(cos(0)+m*sin(0))\n http://www.wolframalpha.com/input/?i=1%2F%28cos%282*PI%2FX%29%2Bm*sin%28\n 2*PI%2FX%29%29+%3D+1%2F%28cos%280%29%2Bm*sin%280%29%29\n Copy the solution into polar equation r = 1/(cos(t') + m*sin(t'))\n where t' equals to mod(t, 2PI/X);\n */\n\n case 'diamond':\n case 'square':\n // http://www.wolframalpha.com/input/?i=plot+r+%3D+1%2F%28cos%28mod+\n // %28t%2C+PI%2F2%29%29%2Bsin%28mod+%28t%2C+PI%2F2%29%29%29%2C+t+%3D\n // +0+..+2*PI\n settings.shape = function shapeSquare(theta) {\n var thetaPrime = theta % (2 * Math.PI / 4);\n return 1 / (Math.cos(thetaPrime) + Math.sin(thetaPrime));\n };\n break;\n\n case 'triangle-forward':\n // http://www.wolframalpha.com/input/?i=plot+r+%3D+1%2F%28cos%28mod+\n // %28t%2C+2*PI%2F3%29%29%2Bsqrt%283%29sin%28mod+%28t%2C+2*PI%2F3%29\n // %29%29%2C+t+%3D+0+..+2*PI\n settings.shape = function shapeTriangle(theta) {\n var thetaPrime = theta % (2 * Math.PI / 3);\n return 1 / (Math.cos(thetaPrime) +\n Math.sqrt(3) * Math.sin(thetaPrime));\n };\n break;\n\n case 'triangle':\n case 'triangle-upright':\n settings.shape = function shapeTriangle(theta) {\n var thetaPrime = (theta + Math.PI * 3 / 2) % (2 * Math.PI / 3);\n return 1 / (Math.cos(thetaPrime) +\n Math.sqrt(3) * Math.sin(thetaPrime));\n };\n break;\n\n case 'pentagon':\n settings.shape = function shapePentagon(theta) {\n var thetaPrime = (theta + 0.955) % (2 * Math.PI / 5);\n return 1 / (Math.cos(thetaPrime) +\n 0.726543 * Math.sin(thetaPrime));\n };\n break;\n\n case 'star':\n settings.shape = function shapeStar(theta) {\n var thetaPrime = (theta + 0.955) % (2 * Math.PI / 10);\n if ((theta + 0.955) % (2 * Math.PI / 5) - (2 * Math.PI / 10) >= 0) {\n return 1 / (Math.cos((2 * Math.PI / 10) - thetaPrime) +\n 3.07768 * Math.sin((2 * Math.PI / 10) - thetaPrime));\n } else {\n return 1 / (Math.cos(thetaPrime) +\n 3.07768 * Math.sin(thetaPrime));\n }\n };\n break;\n }\n }\n\n /* Make sure gridSize is a whole number and is not smaller than 4px */\n settings.gridSize = Math.max(Math.floor(settings.gridSize), 4);\n\n /* shorthand */\n var g = settings.gridSize;\n var maskRectWidth = g - settings.maskGapWidth;\n\n /* normalize rotation settings */\n var rotationRange = Math.abs(settings.maxRotation - settings.minRotation);\n var minRotation = Math.min(settings.maxRotation, settings.minRotation);\n var rotationStep = settings.rotationStep;\n\n /* information/object available to all functions, set when start() */\n var grid, // 2d array containing filling information\n ngx, ngy, // width and height of the grid\n center, // position of the center of the cloud\n maxRadius;\n\n /* timestamp for measuring each putWord() action */\n var escapeTime;\n\n /* function for getting the color of the text */\n var getTextColor;\n function random_hsl_color(min, max) {\n return 'hsl(' +\n (Math.random() * 360).toFixed() + ',' +\n (Math.random() * 30 + 70).toFixed() + '%,' +\n (Math.random() * (max - min) + min).toFixed() + '%)';\n }\n switch (settings.color) {\n case 'random-dark':\n getTextColor = function getRandomDarkColor() {\n return random_hsl_color(10, 50);\n };\n break;\n\n case 'random-light':\n getTextColor = function getRandomLightColor() {\n return random_hsl_color(50, 90);\n };\n break;\n\n default:\n if (typeof settings.color === 'function') {\n getTextColor = settings.color;\n }\n break;\n }\n\n /* function for getting the classes of the text */\n var getTextClasses = null;\n if (typeof settings.classes === 'function') {\n getTextClasses = settings.classes;\n }\n\n /* Interactive */\n var interactive = false;\n var infoGrid = [];\n var hovered;\n\n var getInfoGridFromMouseTouchEvent =\n function getInfoGridFromMouseTouchEvent(evt) {\n var canvas = evt.currentTarget;\n var rect = canvas.getBoundingClientRect();\n var clientX;\n var clientY;\n /** Detect if touches are available */\n if (evt.touches) {\n clientX = evt.touches[0].clientX;\n clientY = evt.touches[0].clientY;\n } else {\n clientX = evt.clientX;\n clientY = evt.clientY;\n }\n var eventX = clientX - rect.left;\n var eventY = clientY - rect.top;\n\n var x = Math.floor(eventX * ((canvas.width / rect.width) || 1) / g);\n var y = Math.floor(eventY * ((canvas.height / rect.height) || 1) / g);\n\n return infoGrid[x][y];\n };\n\n var wordcloudhover = function wordcloudhover(evt) {\n var info = getInfoGridFromMouseTouchEvent(evt);\n\n if (hovered === info) {\n return;\n }\n\n hovered = info;\n if (!info) {\n settings.hover(undefined, undefined, evt);\n\n return;\n }\n\n settings.hover(info.item, info.dimension, evt);\n\n };\n\n var wordcloudclick = function wordcloudclick(evt) {\n var info = getInfoGridFromMouseTouchEvent(evt);\n if (!info) {\n return;\n }\n\n settings.click(info.item, info.dimension, evt);\n evt.preventDefault();\n };\n\n /* Get points on the grid for a given radius away from the center */\n var pointsAtRadius = [];\n var getPointsAtRadius = function getPointsAtRadius(radius) {\n if (pointsAtRadius[radius]) {\n return pointsAtRadius[radius];\n }\n\n // Look for these number of points on each radius\n var T = radius * 8;\n\n // Getting all the points at this radius\n var t = T;\n var points = [];\n\n if (radius === 0) {\n points.push([center[0], center[1], 0]);\n }\n\n while (t--) {\n // distort the radius to put the cloud in shape\n var rx = 1;\n if (settings.shape !== 'circle') {\n rx = settings.shape(t / T * 2 * Math.PI); // 0 to 1\n }\n\n // Push [x, y, t]; t is used solely for getTextColor()\n points.push([\n center[0] + radius * rx * Math.cos(-t / T * 2 * Math.PI),\n center[1] + radius * rx * Math.sin(-t / T * 2 * Math.PI) *\n settings.ellipticity,\n t / T * 2 * Math.PI]);\n }\n\n pointsAtRadius[radius] = points;\n return points;\n };\n\n /* Return true if we had spent too much time */\n var exceedTime = function exceedTime() {\n return ((settings.abortThreshold > 0) &&\n ((new Date()).getTime() - escapeTime > settings.abortThreshold));\n };\n\n /* Get the deg of rotation according to settings, and luck. */\n var getRotateDeg = function getRotateDeg() {\n if (settings.rotateRatio === 0) {\n return 0;\n }\n\n if (Math.random() > settings.rotateRatio) {\n return 0;\n }\n\n if (rotationRange === 0) {\n return minRotation;\n }\n\n return minRotation + Math.round(Math.random() * rotationRange / rotationStep) * rotationStep;\n };\n\n var getTextInfo = function getTextInfo(word, weight, rotateDeg) {\n // calculate the acutal font size\n // fontSize === 0 means weightFactor function wants the text skipped,\n // and size < minSize means we cannot draw the text.\n var debug = false;\n var fontSize = settings.weightFactor(weight);\n if (fontSize <= settings.minSize) {\n return false;\n }\n\n // Scale factor here is to make sure fillText is not limited by\n // the minium font size set by browser.\n // It will always be 1 or 2n.\n var mu = 1;\n if (fontSize < minFontSize) {\n mu = (function calculateScaleFactor() {\n var mu = 2;\n while (mu * fontSize < minFontSize) {\n mu += 2;\n }\n return mu;\n })();\n }\n\n var fcanvas = document.createElement('canvas');\n var fctx = fcanvas.getContext('2d', { willReadFrequently: true });\n\n fctx.font = settings.fontWeight + ' ' +\n (fontSize * mu).toString(10) + 'px ' + settings.fontFamily;\n\n // Estimate the dimension of the text with measureText().\n var fw = fctx.measureText(word).width / mu;\n var fh = Math.max(fontSize * mu,\n fctx.measureText('m').width,\n fctx.measureText('\\uFF37').width) / mu;\n\n // Create a boundary box that is larger than our estimates,\n // so text don't get cut of (it sill might)\n var boxWidth = fw + fh * 2;\n var boxHeight = fh * 3;\n var fgw = Math.ceil(boxWidth / g);\n var fgh = Math.ceil(boxHeight / g);\n boxWidth = fgw * g;\n boxHeight = fgh * g;\n\n // Calculate the proper offsets to make the text centered at\n // the preferred position.\n\n // This is simply half of the width.\n var fillTextOffsetX = - fw / 2;\n // Instead of moving the box to the exact middle of the preferred\n // position, for Y-offset we move 0.4 instead, so Latin alphabets look\n // vertical centered.\n var fillTextOffsetY = - fh * 0.4;\n\n // Calculate the actual dimension of the canvas, considering the rotation.\n var cgh = Math.ceil((boxWidth * Math.abs(Math.sin(rotateDeg)) +\n boxHeight * Math.abs(Math.cos(rotateDeg))) / g);\n var cgw = Math.ceil((boxWidth * Math.abs(Math.cos(rotateDeg)) +\n boxHeight * Math.abs(Math.sin(rotateDeg))) / g);\n var width = cgw * g;\n var height = cgh * g;\n\n fcanvas.setAttribute('width', width);\n fcanvas.setAttribute('height', height);\n\n if (debug) {\n // Attach fcanvas to the DOM\n document.body.appendChild(fcanvas);\n // Save it's state so that we could restore and draw the grid correctly.\n fctx.save();\n }\n\n // Scale the canvas with |mu|.\n fctx.scale(1 / mu, 1 / mu);\n fctx.translate(width * mu / 2, height * mu / 2);\n fctx.rotate(- rotateDeg);\n\n // Once the width/height is set, ctx info will be reset.\n // Set it again here.\n fctx.font = settings.fontWeight + ' ' +\n (fontSize * mu).toString(10) + 'px ' + settings.fontFamily;\n\n // Fill the text into the fcanvas.\n // XXX: We cannot because textBaseline = 'top' here because\n // Firefox and Chrome uses different default line-height for canvas.\n // Please read https://bugzil.la/737852#c6.\n // Here, we use textBaseline = 'middle' and draw the text at exactly\n // 0.5 * fontSize lower.\n fctx.fillStyle = '#000';\n fctx.textBaseline = 'middle';\n fctx.fillText(word, fillTextOffsetX * mu,\n (fillTextOffsetY + fontSize * 0.5) * mu);\n\n // Get the pixels of the text\n var imageData = fctx.getImageData(0, 0, width, height).data;\n\n if (exceedTime()) {\n return false;\n }\n\n if (debug) {\n // Draw the box of the original estimation\n fctx.strokeRect(fillTextOffsetX * mu,\n fillTextOffsetY, fw * mu, fh * mu);\n fctx.restore();\n }\n\n // Read the pixels and save the information to the occupied array\n var occupied = [];\n var gx = cgw, gy, x, y;\n var bounds = [cgh / 2, cgw / 2, cgh / 2, cgw / 2];\n while (gx--) {\n gy = cgh;\n while (gy--) {\n y = g;\n singleGridLoop: {\n while (y--) {\n x = g;\n while (x--) {\n if (imageData[((gy * g + y) * width +\n (gx * g + x)) * 4 + 3]) {\n occupied.push([gx, gy]);\n\n if (gx < bounds[3]) {\n bounds[3] = gx;\n }\n if (gx > bounds[1]) {\n bounds[1] = gx;\n }\n if (gy < bounds[0]) {\n bounds[0] = gy;\n }\n if (gy > bounds[2]) {\n bounds[2] = gy;\n }\n\n if (debug) {\n fctx.fillStyle = 'rgba(255, 0, 0, 0.5)';\n fctx.fillRect(gx * g, gy * g, g - 0.5, g - 0.5);\n }\n break singleGridLoop;\n }\n }\n }\n if (debug) {\n fctx.fillStyle = 'rgba(0, 0, 255, 0.5)';\n fctx.fillRect(gx * g, gy * g, g - 0.5, g - 0.5);\n }\n }\n }\n }\n\n if (debug) {\n fctx.fillStyle = 'rgba(0, 255, 0, 0.5)';\n fctx.fillRect(bounds[3] * g,\n bounds[0] * g,\n (bounds[1] - bounds[3] + 1) * g,\n (bounds[2] - bounds[0] + 1) * g);\n }\n\n // Return information needed to create the text on the real canvas\n return {\n mu: mu,\n occupied: occupied,\n bounds: bounds,\n gw: cgw,\n gh: cgh,\n fillTextOffsetX: fillTextOffsetX,\n fillTextOffsetY: fillTextOffsetY,\n fillTextWidth: fw,\n fillTextHeight: fh,\n fontSize: fontSize\n };\n };\n\n /* Determine if there is room available in the given dimension */\n var canFitText = function canFitText(gx, gy, gw, gh, occupied) {\n // Go through the occupied points,\n // return false if the space is not available.\n var i = occupied.length;\n while (i--) {\n var px = gx + occupied[i][0];\n var py = gy + occupied[i][1];\n\n if (px >= ngx || py >= ngy || px < 0 || py < 0) {\n if (!settings.drawOutOfBound) {\n return false;\n }\n continue;\n }\n\n if (!grid[px][py]) {\n return false;\n }\n }\n return true;\n };\n\n /* Actually draw the text on the grid */\n var drawText = function drawText(gx, gy, info, word, weight,\n distance, theta, rotateDeg, attributes) {\n\n var fontSize = info.fontSize;\n var color;\n if (getTextColor) {\n color = getTextColor(word, weight, fontSize, distance, theta);\n } else {\n color = settings.color;\n }\n\n var classes;\n if (getTextClasses) {\n classes = getTextClasses(word, weight, fontSize, distance, theta);\n } else {\n classes = settings.classes;\n }\n\n var dimension;\n var bounds = info.bounds;\n dimension = {\n x: (gx + bounds[3]) * g,\n y: (gy + bounds[0]) * g,\n w: (bounds[1] - bounds[3] + 1) * g,\n h: (bounds[2] - bounds[0] + 1) * g\n };\n\n elements.forEach(function(el) {\n if (el.getContext) {\n var ctx = el.getContext('2d');\n var mu = info.mu;\n\n // Save the current state before messing it\n ctx.save();\n ctx.scale(1 / mu, 1 / mu);\n\n ctx.font = settings.fontWeight + ' ' +\n (fontSize * mu).toString(10) + 'px ' + settings.fontFamily;\n ctx.fillStyle = color;\n\n // Translate the canvas position to the origin coordinate of where\n // the text should be put.\n ctx.translate((gx + info.gw / 2) * g * mu,\n (gy + info.gh / 2) * g * mu);\n\n if (rotateDeg !== 0) {\n ctx.rotate(- rotateDeg);\n }\n\n // Finally, fill the text.\n\n // XXX: We cannot because textBaseline = 'top' here because\n // Firefox and Chrome uses different default line-height for canvas.\n // Please read https://bugzil.la/737852#c6.\n // Here, we use textBaseline = 'middle' and draw the text at exactly\n // 0.5 * fontSize lower.\n ctx.textBaseline = 'middle';\n ctx.fillText(word, info.fillTextOffsetX * mu,\n (info.fillTextOffsetY + fontSize * 0.5) * mu);\n\n // The below box is always matches how s are positioned\n /* ctx.strokeRect(info.fillTextOffsetX, info.fillTextOffsetY,\n info.fillTextWidth, info.fillTextHeight); */\n\n // Restore the state.\n ctx.restore();\n } else {\n // drawText on DIV element\n var span = document.createElement('span');\n var transformRule = '';\n transformRule = 'rotate(' + (- rotateDeg / Math.PI * 180) + 'deg) ';\n if (info.mu !== 1) {\n transformRule +=\n 'translateX(-' + (info.fillTextWidth / 4) + 'px) ' +\n 'scale(' + (1 / info.mu) + ')';\n }\n var styleRules = {\n 'position': 'absolute',\n 'display': 'block',\n 'font': settings.fontWeight + ' ' +\n (fontSize * info.mu) + 'px ' + settings.fontFamily,\n 'left': ((gx + info.gw / 2) * g + info.fillTextOffsetX) + 'px',\n 'top': ((gy + info.gh / 2) * g + info.fillTextOffsetY) + 'px',\n 'width': info.fillTextWidth + 'px',\n 'height': info.fillTextHeight + 'px',\n 'lineHeight': fontSize + 'px',\n 'whiteSpace': 'nowrap',\n 'transform': transformRule,\n 'webkitTransform': transformRule,\n 'msTransform': transformRule,\n 'transformOrigin': '50% 40%',\n 'webkitTransformOrigin': '50% 40%',\n 'msTransformOrigin': '50% 40%'\n };\n if (color) {\n styleRules.color = color;\n }\n span.textContent = word;\n for (var cssProp in styleRules) {\n span.style[cssProp] = styleRules[cssProp];\n }\n if (attributes) {\n for (var attribute in attributes) {\n span.setAttribute(attribute, attributes[attribute]);\n }\n }\n if (classes) {\n span.className += classes;\n }\n el.appendChild(span);\n }\n });\n };\n\n /* Help function to updateGrid */\n var fillGridAt = function fillGridAt(x, y, drawMask, dimension, item) {\n if (x >= ngx || y >= ngy || x < 0 || y < 0) {\n return;\n }\n\n grid[x][y] = false;\n\n if (drawMask) {\n var ctx = elements[0].getContext('2d');\n ctx.fillRect(x * g, y * g, maskRectWidth, maskRectWidth);\n }\n\n if (interactive) {\n infoGrid[x][y] = { item: item, dimension: dimension };\n }\n };\n\n /* Update the filling information of the given space with occupied points.\n Draw the mask on the canvas if necessary. */\n var updateGrid = function updateGrid(gx, gy, gw, gh, info, item) {\n var occupied = info.occupied;\n var drawMask = settings.drawMask;\n var ctx;\n if (drawMask) {\n ctx = elements[0].getContext('2d');\n ctx.save();\n ctx.fillStyle = settings.maskColor;\n }\n\n var dimension;\n if (interactive) {\n var bounds = info.bounds;\n dimension = {\n x: (gx + bounds[3]) * g,\n y: (gy + bounds[0]) * g,\n w: (bounds[1] - bounds[3] + 1) * g,\n h: (bounds[2] - bounds[0] + 1) * g\n };\n }\n\n var i = occupied.length;\n while (i--) {\n var px = gx + occupied[i][0];\n var py = gy + occupied[i][1];\n\n if (px >= ngx || py >= ngy || px < 0 || py < 0) {\n continue;\n }\n\n fillGridAt(px, py, drawMask, dimension, item);\n }\n\n if (drawMask) {\n ctx.restore();\n }\n };\n\n /* putWord() processes each item on the list,\n calculate it's size and determine it's position, and actually\n put it on the canvas. */\n var putWord = function putWord(item) {\n var word, weight, attributes;\n if (Array.isArray(item)) {\n word = item[0];\n weight = item[1];\n } else {\n word = item.word;\n weight = item.weight;\n attributes = item.attributes;\n }\n var rotateDeg = getRotateDeg();\n\n // get info needed to put the text onto the canvas\n var info = getTextInfo(word, weight, rotateDeg);\n\n // not getting the info means we shouldn't be drawing this one.\n if (!info) {\n return false;\n }\n\n if (exceedTime()) {\n return false;\n }\n\n // If drawOutOfBound is set to false,\n // skip the loop if we have already know the bounding box of\n // word is larger than the canvas.\n if (!settings.drawOutOfBound) {\n var bounds = info.bounds;\n if ((bounds[1] - bounds[3] + 1) > ngx ||\n (bounds[2] - bounds[0] + 1) > ngy) {\n return false;\n }\n }\n\n // Determine the position to put the text by\n // start looking for the nearest points\n var r = maxRadius + 1;\n\n var tryToPutWordAtPoint = function(gxy) {\n var gx = Math.floor(gxy[0] - info.gw / 2);\n var gy = Math.floor(gxy[1] - info.gh / 2);\n var gw = info.gw;\n var gh = info.gh;\n\n // If we cannot fit the text at this position, return false\n // and go to the next position.\n if (!canFitText(gx, gy, gw, gh, info.occupied)) {\n return false;\n }\n\n // Actually put the text on the canvas\n drawText(gx, gy, info, word, weight,\n (maxRadius - r), gxy[2], rotateDeg, attributes);\n\n // Mark the spaces on the grid as filled\n updateGrid(gx, gy, gw, gh, info, item);\n\n return {\n gx: gx,\n gy: gy,\n rot: rotateDeg,\n info: info\n };\n };\n\n while (r--) {\n var points = getPointsAtRadius(maxRadius - r);\n\n if (settings.shuffle) {\n points = [].concat(points);\n shuffleArray(points);\n }\n\n // Try to fit the words by looking at each point.\n // array.some() will stop and return true\n // when putWordAtPoint() returns true.\n for (var i = 0; i < points.length; i++) {\n var res = tryToPutWordAtPoint(points[i]);\n if (res) {\n return res;\n }\n }\n\n // var drawn = points.some(tryToPutWordAtPoint);\n // if (drawn) {\n // // leave putWord() and return true\n // return true;\n // }\n }\n // we tried all distances but text won't fit, return null\n return null;\n };\n\n /* Send DOM event to all elements. Will stop sending event and return\n if the previous one is canceled (for cancelable events). */\n var sendEvent = function sendEvent(type, cancelable, detail) {\n if (cancelable) {\n return !elements.some(function(el) {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(type, true, cancelable, detail || {});\n return !el.dispatchEvent(evt);\n }, this);\n } else {\n elements.forEach(function(el) {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(type, true, cancelable, detail || {});\n el.dispatchEvent(evt);\n }, this);\n }\n };\n\n /* Start drawing on a canvas */\n var start = function start() {\n // For dimensions, clearCanvas etc.,\n // we only care about the first element.\n var canvas = elements[0];\n\n if (canvas.getContext) {\n ngx = Math.ceil(canvas.width / g);\n ngy = Math.ceil(canvas.height / g);\n } else {\n var rect = canvas.getBoundingClientRect();\n ngx = Math.ceil(rect.width / g);\n ngy = Math.ceil(rect.height / g);\n }\n\n // Sending a wordcloudstart event which cause the previous loop to stop.\n // Do nothing if the event is canceled.\n if (!sendEvent('wordcloudstart', true)) {\n return;\n }\n\n // Determine the center of the word cloud\n center = (settings.origin) ?\n [settings.origin[0]/g, settings.origin[1]/g] :\n [ngx / 2, ngy / 2];\n\n // Maxium radius to look for space\n maxRadius = Math.floor(Math.sqrt(ngx * ngx + ngy * ngy));\n\n /* Clear the canvas only if the clearCanvas is set,\n if not, update the grid to the current canvas state */\n grid = [];\n\n var gx, gy, i;\n if (!canvas.getContext || settings.clearCanvas) {\n elements.forEach(function(el) {\n if (el.getContext) {\n var ctx = el.getContext('2d');\n ctx.fillStyle = settings.backgroundColor;\n ctx.clearRect(0, 0, ngx * (g + 1), ngy * (g + 1));\n ctx.fillRect(0, 0, ngx * (g + 1), ngy * (g + 1));\n } else {\n el.textContent = '';\n el.style.backgroundColor = settings.backgroundColor;\n el.style.position = 'relative';\n }\n });\n\n /* fill the grid with empty state */\n gx = ngx;\n while (gx--) {\n grid[gx] = [];\n gy = ngy;\n while (gy--) {\n grid[gx][gy] = true;\n }\n }\n } else {\n /* Determine bgPixel by creating\n another canvas and fill the specified background color. */\n var bctx = document.createElement('canvas').getContext('2d');\n\n bctx.fillStyle = settings.backgroundColor;\n bctx.fillRect(0, 0, 1, 1);\n var bgPixel = bctx.getImageData(0, 0, 1, 1).data;\n\n /* Read back the pixels of the canvas we got to tell which part of the\n canvas is empty.\n (no clearCanvas only works with a canvas, not divs) */\n var imageData =\n canvas.getContext('2d').getImageData(0, 0, ngx * g, ngy * g).data;\n\n gx = ngx;\n var x, y;\n while (gx--) {\n grid[gx] = [];\n gy = ngy;\n while (gy--) {\n y = g;\n singleGridLoop: while (y--) {\n x = g;\n while (x--) {\n i = 4;\n while (i--) {\n if (imageData[((gy * g + y) * ngx * g +\n (gx * g + x)) * 4 + i] !== bgPixel[i]) {\n grid[gx][gy] = false;\n break singleGridLoop;\n }\n }\n }\n }\n if (grid[gx][gy] !== false) {\n grid[gx][gy] = true;\n }\n }\n }\n\n imageData = bctx = bgPixel = undefined;\n }\n\n // fill the infoGrid with empty state if we need it\n if (settings.hover || settings.click) {\n\n interactive = true;\n\n /* fill the grid with empty state */\n gx = ngx + 1;\n while (gx--) {\n infoGrid[gx] = [];\n }\n\n if (settings.hover) {\n canvas.addEventListener('mousemove', wordcloudhover);\n }\n\n if (settings.click) {\n canvas.addEventListener('click', wordcloudclick);\n canvas.addEventListener('touchstart', wordcloudclick);\n canvas.addEventListener('touchend', function (e) {\n e.preventDefault();\n });\n canvas.style.webkitTapHighlightColor = 'rgba(0, 0, 0, 0)';\n }\n\n canvas.addEventListener('wordcloudstart', function stopInteraction() {\n canvas.removeEventListener('wordcloudstart', stopInteraction);\n\n canvas.removeEventListener('mousemove', wordcloudhover);\n canvas.removeEventListener('click', wordcloudclick);\n hovered = undefined;\n });\n }\n\n i = 0;\n var loopingFunction, stoppingFunction;\n if (settings.wait !== 0) {\n loopingFunction = window.setTimeout;\n stoppingFunction = window.clearTimeout;\n } else {\n loopingFunction = window.setImmediate;\n stoppingFunction = window.clearImmediate;\n }\n\n var addEventListener = function addEventListener(type, listener) {\n elements.forEach(function(el) {\n el.addEventListener(type, listener);\n }, this);\n };\n\n var removeEventListener = function removeEventListener(type, listener) {\n elements.forEach(function(el) {\n el.removeEventListener(type, listener);\n }, this);\n };\n\n var anotherWordCloudStart = function anotherWordCloudStart() {\n removeEventListener('wordcloudstart', anotherWordCloudStart);\n stoppingFunction(timer);\n };\n\n addEventListener('wordcloudstart', anotherWordCloudStart);\n\n var timer = loopingFunction(function loop() {\n if (i >= settings.list.length) {\n stoppingFunction(timer);\n sendEvent('wordcloudstop', false);\n removeEventListener('wordcloudstart', anotherWordCloudStart);\n\n return;\n }\n escapeTime = (new Date()).getTime();\n var drawn = putWord(settings.list[i]);\n var canceled = !sendEvent('wordclouddrawn', true, {\n item: settings.list[i], drawn: drawn });\n if (exceedTime() || canceled) {\n stoppingFunction(timer);\n settings.abort();\n sendEvent('wordcloudabort', false);\n sendEvent('wordcloudstop', false);\n removeEventListener('wordcloudstart', anotherWordCloudStart);\n return;\n }\n i++;\n timer = loopingFunction(loop, settings.wait);\n }, settings.wait);\n };\n\n // All set, start the drawing\n start();\n };\n\n WordCloud.isSupported = isSupported;\n WordCloud.minFontSize = minFontSize;\n\n // Expose the library as an AMD module\n if (typeof define === 'function' && define.amd) {\n define('wordcloud', [], function() { return WordCloud; });\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = WordCloud;\n } else {\n global.WordCloud = WordCloud;\n }\n\n})(this); //jshint ignore:line","module.exports = require('./src/wordCloud');","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\nvar largeLayout = _barGrid.largeLayout;\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/BarSeries\");\n\nrequire(\"./bar/BarView\");\n\nrequire(\"../component/gridSimple\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(echarts.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Use higher prority to avoid to be blocked by other overall layout, which do not\n// only exist in this module, but probably also exist in other modules, like `barPolar`.\n\necharts.registerLayout(echarts.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\necharts.registerVisual({\n seriesType: 'bar',\n reset: function (seriesModel) {\n // Visual coding for legend\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\n }\n});","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar utilsLite = require('utils-lite');\nrequire('echarts-wordcloud');\nvar Core = _interopDefault(require('./core'));\n\nfunction getSeries(args) {\n var dimension = args.dimension,\n metrics = args.metrics,\n rows = args.rows,\n color = args.color,\n sizeMax = args.sizeMax,\n sizeMin = args.sizeMin,\n shape = args.shape;\n\n\n var baseType = {\n type: 'wordCloud',\n textStyle: {\n normal: {\n color: !utilsLite.isArray(color) && !!color ? color : function () {\n return 'rgb(' + [Math.round(Math.random() * 160), Math.round(Math.random() * 160), Math.round(Math.random() * 160)].join(',') + ')';\n }\n }\n },\n shape: shape,\n sizeRange: [sizeMin, sizeMax]\n };\n\n var len = utilsLite.isArray(color) ? color.length : 0;\n var data = rows.slice().map(function (row) {\n var text = {\n name: row[dimension],\n value: row[metrics]\n };\n\n if (len > 0) {\n text.textStyle = {\n normal: {\n color: color[Math.floor(Math.random() * len)]\n }\n };\n }\n return text;\n });\n\n baseType.data = data;\n\n return [baseType];\n}\n\nfunction getTooltip(args) {\n var tooltipFormatter = args.tooltipFormatter;\n\n\n return {\n show: true,\n formatter: function formatter(params) {\n var _params$data = params.data,\n name = _params$data.name,\n value = _params$data.value;\n\n\n if (tooltipFormatter) {\n return tooltipFormatter.apply(null, params);\n }\n\n return name + ': ' + value;\n }\n };\n}\n\nvar wordcloud = function wordcloud(columns, rows, settings, extra) {\n var _settings$dimension = settings.dimension,\n dimension = _settings$dimension === undefined ? columns[0] : _settings$dimension,\n _settings$metrics = settings.metrics,\n metrics = _settings$metrics === undefined ? columns[1] : _settings$metrics,\n _settings$color = settings.color,\n color = _settings$color === undefined ? '' : _settings$color,\n _settings$sizeMax = settings.sizeMax,\n sizeMax = _settings$sizeMax === undefined ? 60 : _settings$sizeMax,\n _settings$sizeMin = settings.sizeMin,\n sizeMin = _settings$sizeMin === undefined ? 12 : _settings$sizeMin,\n _settings$shape = settings.shape,\n shape = _settings$shape === undefined ? 'circle' : _settings$shape;\n var tooltipVisible = extra.tooltipVisible,\n tooltipFormatter = extra.tooltipFormatter;\n\n\n var series = getSeries({ dimension: dimension, metrics: metrics, rows: rows, color: color, sizeMax: sizeMax, sizeMin: sizeMin, shape: shape });\n var tooltip = tooltipVisible && getTooltip({ tooltipFormatter: tooltipFormatter });\n\n return {\n series: series,\n tooltip: tooltip\n };\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar index = _extends({}, Core, {\n name: 'VeWordcloud',\n data: function data() {\n this.chartHandler = wordcloud;\n return {};\n }\n});\n\nmodule.exports = index;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var resetDefines = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {\n return;\n }\n\n resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\n });\n return resetDefines;\n }\n}); // Only support color.\n\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var visualMetaList = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n if (visualMapModel.isTargetSeries(seriesModel)) {\n var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n stops: [],\n outerColors: []\n };\n var concreteDim = visualMapModel.getDataDimension(data);\n var dimInfo = data.getDimensionInfo(concreteDim);\n\n if (dimInfo != null) {\n // visualMeta.dimension should be dimension index, but not concrete dimension.\n visualMeta.dimension = dimInfo.index;\n visualMetaList.push(visualMeta);\n }\n }\n }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n seriesModel.getData().setVisual('visualMeta', visualMetaList);\n }\n}); // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n var mappings = visualMapModel.targetVisuals[valueState];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n var resultVisual = {\n color: seriesModel.getData().getVisual('color') // default color.\n\n };\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n mapping && mapping.applyVisual(value, getVisual, setVisual);\n }\n\n return resultVisual.color;\n\n function getVisual(key) {\n return resultVisual[key];\n }\n\n function setVisual(key, value) {\n resultVisual[key] = value;\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(option) {\n var visualMap = option && option.visualMap;\n\n if (!zrUtil.isArray(visualMap)) {\n visualMap = visualMap ? [visualMap] : [];\n }\n\n each(visualMap, function (opt) {\n if (!opt) {\n return;\n } // rename splitList to pieces\n\n\n if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n opt.pieces = opt.splitList;\n delete opt.splitList;\n }\n\n var pieces = opt.pieces;\n\n if (pieces && zrUtil.isArray(pieces)) {\n each(pieces, function (piece) {\n if (zrUtil.isObject(piece)) {\n if (has(piece, 'start') && !has(piece, 'min')) {\n piece.min = piece.start;\n }\n\n if (has(piece, 'end') && !has(piece, 'max')) {\n piece.max = piece.end;\n }\n }\n });\n }\n });\n}\n\nfunction has(obj, name) {\n return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getBarItemStyle: function (excludes) {\n var style = getBarItemStyle(this, excludes);\n\n if (this.getBorderLineDash) {\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n }\n\n return style;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = require(\"../../model/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('visualMap', function (option) {\n // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CandlestickSeries = SeriesModel.extend({\n type: 'series.candlestick',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n\n /**\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'open',\n defaultTooltip: true\n }, {\n name: 'close',\n defaultTooltip: true\n }, {\n name: 'lowest',\n defaultTooltip: true\n }, {\n name: 'highest',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n clip: true,\n itemStyle: {\n color: '#c23531',\n // 阳线 positive\n color0: '#314656',\n // 阴线 negative '#c23531', '#314656'\n borderWidth: 1,\n // FIXME\n // ec2中使用的是lineStyle.color 和 lineStyle.color0\n borderColor: '#c23531',\n borderColor0: '#314656'\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2\n }\n },\n barMaxWidth: null,\n barMinWidth: null,\n barWidth: null,\n large: true,\n largeThreshold: 600,\n progressive: 3e3,\n progressiveThreshold: 1e4,\n progressiveChunkMode: 'mod',\n animationUpdate: false,\n animationEasing: 'linear',\n animationDuration: 300\n },\n\n /**\n * Get dimension for shadow in dataZoom\n * @return {string} dimension name\n */\n getShadowDim: function () {\n return 'open';\n },\n brushSelector: function (dataIndex, data, selectors) {\n var itemLayout = data.getItemLayout(dataIndex);\n return itemLayout && selectors.rect(itemLayout.brushRect);\n }\n});\nzrUtil.mixin(CandlestickSeries, seriesModelMixin, true);\nvar _default = CandlestickSeries;\nmodule.exports = _default;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',[_c('el-main',[_c('h1',[_vm._v(\"1小时直播弹幕\")]),_c('ve-wordcloud',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.hawkProxyH.length),expression:\"!hawkProxyH.length\"}],attrs:{\"settings\":{ sizeMax: 96, sizeMin: 12 },\"data\":{ columns: ['word', 'weight'], rows: _vm.hawkProxyH },\"extend\":_vm.wordCloudExtend}}),_c('h1',[_vm._v(\"24小时直播弹幕\")]),_c('ve-wordcloud',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.hawkProxyDay.length),expression:\"!hawkProxyDay.length\"}],attrs:{\"settings\":{ sizeMax: 96, sizeMin: 12 },\"data\":{ columns: ['word', 'weight'], rows: _vm.hawkProxyDay },\"extend\":_vm.wordCloudExtend}}),_c('h1',[_vm._v(\"虚拟世界宏观经济走势\")]),_c('el-row',[_c('el-col',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.vtbMacro.length),expression:\"!vtbMacro.length\"}],attrs:{\"xs\":24,\"span\":12}},[_c('h1',[_vm._v(\"直播势:\")]),_c('ve-line',{attrs:{\"data\":{rows:_vm.vtbMacro},\"settings\":_vm.vtb,\"extend\":_vm.vtbExtend,\"data-zoom\":_vm.dataZoomDay,\"not-set-unchange\":['dataZoom']}}),(!_vm.fullVtb)?_c('el-button',{attrs:{\"size\":\"mini\",\"loading\":_vm.loading,\"title\":\"载入完整\"},on:{\"click\":_vm.loadVtbMacroAll}},[_vm._v(\"(一周)\")]):_vm._e()],1),_c('el-col',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.guardMacro.length),expression:\"!guardMacro.length\"}],attrs:{\"xs\":24,\"span\":12}},[_c('h1',[_vm._v(\"虚拟世界舰团:\")]),_c('ve-line',{attrs:{\"data\":{rows:_vm.guardMacro},\"settings\":_vm.guard,\"extend\":_vm.guardExtend,\"data-zoom\":_vm.dataZoomWeek,\"not-set-unchange\":['dataZoom']}})],1)],1),_c('guardMarcoK'),_c('el-row',[_c('el-col',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.vupMacro.length),expression:\"!vupMacro.length\"}],attrs:{\"span\":24}},[_c('h1',[_vm._v(\"视频势:\")]),_c('ve-line',{attrs:{\"data\":{rows:_vm.vupMacro},\"settings\":_vm.vup,\"data-zoom\":_vm.dataZoomWeek,\"not-set-unchange\":['dataZoom']}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-row',[_c('el-col',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.guardMacroK.length),expression:\"!guardMacroK.length\"}],attrs:{\"xs\":24,\"span\":12}},[_c('h1',[_vm._v(\"舰团日K:\")]),_c('ve-candle',{attrs:{\"data\":{rows:_vm.guardMacroK},\"settings\":_vm.guardK,\"not-set-unchange\":['dataZoom']}})],1),_c('el-col',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(!_vm.guardMacroWeekK.length),expression:\"!guardMacroWeekK.length\"}],attrs:{\"xs\":24,\"span\":12}},[_c('h1',[_vm._v(\"舰团周K:\")]),_c('ve-candle',{attrs:{\"data\":{rows:_vm.guardMacroWeekK},\"settings\":_vm.guardWeekK,\"not-set-unchange\":['dataZoom']}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./guardMarcoK.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./guardMarcoK.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./guardMarcoK.vue?vue&type=template&id=55f583b9&\"\nimport script from \"./guardMarcoK.vue?vue&type=script&lang=js&\"\nexport * from \"./guardMarcoK.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Macro.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Macro.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Macro.vue?vue&type=template&id=4cd644bd&scoped=true&\"\nimport script from \"./Macro.vue?vue&type=script&lang=js&\"\nexport * from \"./Macro.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4cd644bd\",\n null\n \n)\n\nexport default component.exports","var echarts = require('echarts/lib/echarts');\n\nfunction getShallow(model, path) {\n return model && model.getShallow(path);\n}\n\necharts.extendChartView({\n\n type: 'wordCloud',\n\n render: function (seriesModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n\n var data = seriesModel.getData();\n\n var gridSize = seriesModel.get('gridSize');\n\n seriesModel.layoutInstance.ondraw = function (text, size, dataIdx, drawn) {\n var itemModel = data.getItemModel(dataIdx);\n var textStyleModel = itemModel.getModel('textStyle.normal');\n var emphasisTextStyleModel = itemModel.getModel('textStyle.emphasis');\n\n var textEl = new echarts.graphic.Text({\n style: echarts.graphic.setTextStyle({}, textStyleModel, {\n x: drawn.info.fillTextOffsetX,\n y: drawn.info.fillTextOffsetY + size * 0.5,\n text: text,\n textBaseline: 'middle',\n textFill: data.getItemVisual(dataIdx, 'color'),\n fontSize: size\n }),\n scale: [1 / drawn.info.mu, 1 / drawn.info.mu],\n position: [\n (drawn.gx + drawn.info.gw / 2) * gridSize,\n (drawn.gy + drawn.info.gh / 2) * gridSize\n ],\n rotation: drawn.rot\n });\n\n group.add(textEl);\n\n data.setItemGraphicEl(dataIdx, textEl);\n\n echarts.graphic.setHoverStyle(\n textEl,\n echarts.graphic.setTextStyle({}, emphasisTextStyleModel, null, {forMerge: true}, true)\n );\n };\n\n this._model = seriesModel;\n },\n\n remove: function () {\n this.group.removeAll();\n\n this._model.layoutInstance.dispose();\n },\n\n dispose: function () {\n this._model.layoutInstance.dispose();\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = require(\"../graphic\");\n\nvar extendShape = _graphic.extendShape;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Sausage: similar to sector, but have half circle on both sides\n * @public\n */\nvar _default = extendShape({\n type: 'sausage',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var dr = (r - r0) * 0.5;\n var rCenter = r0 + dr;\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitStartX = Math.cos(startAngle);\n var unitStartY = Math.sin(startAngle);\n var unitEndX = Math.cos(endAngle);\n var unitEndY = Math.sin(endAngle);\n var lessThanCircle = clockwise ? endAngle - startAngle < Math.PI * 2 : startAngle - endAngle < Math.PI * 2;\n\n if (lessThanCircle) {\n ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\n ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\n }\n\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\n ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/component/visualMap/VisualMapModel} visualMapModel\\\n * @param {module:echarts/ExtensionAPI} api\n * @param {Array.} itemSize always [short, long]\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\n */\nfunction getItemAlign(visualMapModel, api, itemSize) {\n var modelOption = visualMapModel.option;\n var itemAlign = modelOption.align;\n\n if (itemAlign != null && itemAlign !== 'auto') {\n return itemAlign;\n } // Auto decision align.\n\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n var reals = paramsSet[realIndex];\n var fakeValue = [0, null, 10];\n var layoutInput = {};\n\n for (var i = 0; i < 3; i++) {\n layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n }\n\n var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\n * dataIndexInside means filtered index.\n */\n\n\nfunction makeHighDownBatch(batch, visualMapModel) {\n zrUtil.each(batch || [], function (batchItem) {\n if (batchItem.dataIndex != null) {\n batchItem.dataIndexInside = batchItem.dataIndex;\n batchItem.dataIndex = null;\n }\n\n batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\n });\n return batch;\n}\n\nexports.getItemAlign = getItemAlign;\nexports.makeHighDownBatch = makeHighDownBatch;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar actionInfo = {\n type: 'selectDataRange',\n event: 'dataRangeSelected',\n // FIXME use updateView appears wrong\n update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'visualMap',\n query: payload\n }, function (model) {\n model.setSelected(payload.selected);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar seriesModelMixin = {\n /**\n * @private\n * @type {string}\n */\n _baseAxisDim: null,\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // When both types of xAxis and yAxis are 'value', layout is\n // needed to be specified by user. Otherwise, layout can be\n // judged by which axis is category.\n var ordinalMeta;\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n var xAxisType = xAxisModel.get('type');\n var yAxisType = yAxisModel.get('type');\n var addOrdinal; // FIXME\n // Consider time axis.\n\n if (xAxisType === 'category') {\n option.layout = 'horizontal';\n ordinalMeta = xAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else if (yAxisType === 'category') {\n option.layout = 'vertical';\n ordinalMeta = yAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else {\n option.layout = option.layout || 'horizontal';\n }\n\n var coordDims = ['x', 'y'];\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n var axisModels = [xAxisModel, yAxisModel];\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n // MUST create a new data, consider setOption({}) again.\n\n if (data && addOrdinal) {\n var newOptionData = [];\n zrUtil.each(data, function (item, index) {\n var newItem;\n\n if (item.value && zrUtil.isArray(item.value)) {\n newItem = item.value.slice();\n item.value.unshift(index);\n } else if (zrUtil.isArray(item)) {\n newItem = item.slice();\n item.unshift(index);\n } else {\n newItem = item;\n }\n\n newOptionData.push(newItem);\n });\n option.data = newOptionData;\n }\n\n var defaultValueDimensions = this.defaultValueDimensions;\n var coordDimensions = [{\n name: baseAxisDim,\n type: getDimensionTypeByAxis(baseAxisType),\n ordinalMeta: ordinalMeta,\n otherDims: {\n tooltip: false,\n itemName: 0\n },\n dimsDef: ['base']\n }, {\n name: otherAxisDim,\n type: getDimensionTypeByAxis(otherAxisType),\n dimsDef: defaultValueDimensions.slice()\n }];\n return createListSimply(this, {\n coordDimensions: coordDimensions,\n dimensionsCount: defaultValueDimensions.length + 1,\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n });\n },\n\n /**\n * If horizontal, base axis is x, otherwise y.\n * @override\n */\n getBaseAxis: function () {\n var dim = this._baseAxisDim;\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n }\n};\nexports.seriesModelMixin = seriesModelMixin;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({}, opt);\n var source = seriesModel.getSource();\n var dimensionsInfo = createDimensions(source, opt);\n var list = new List(dimensionsInfo, seriesModel);\n list.initData(source, nameList);\n return list;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _labelHelper = require(\"../helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n if (!option || !zrUtil.isArray(option.series)) {\n return;\n } // Translate 'k' to 'candlestick'.\n\n\n zrUtil.each(option.series, function (seriesItem) {\n if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n seriesItem.type = 'candlestick';\n }\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar numberUtil = require(\"../../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n type: 'visualMap',\n dependencies: ['series'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n stateList: ['inRange', 'outOfRange'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n /**\n * [lowerBound, upperBound]\n *\n * @readOnly\n * @type {Array.}\n */\n dataBound: [-Infinity, Infinity],\n\n /**\n * @readOnly\n * @type {string|Object}\n */\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n zlevel: 0,\n z: 4,\n seriesIndex: 'all',\n // 'all' or null/undefined: all series.\n // A number or an array of number: the specified series.\n // set min: 0, max: 200, only for campatible with ec2.\n // In fact min max should not have default value.\n min: 0,\n // min value, must specified if pieces is not specified.\n max: 200,\n // max value, must specified if pieces is not specified.\n dimension: null,\n inRange: null,\n // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n outOfRange: null,\n // 'color', 'colorHue', 'colorSaturation',\n // 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n left: 0,\n // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n right: null,\n // The same as left.\n top: null,\n // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n bottom: 0,\n // The same as top.\n itemWidth: null,\n itemHeight: null,\n inverse: false,\n orient: 'vertical',\n // 'horizontal' ¦ 'vertical'\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n // 值域边框颜色\n contentColor: '#5793f3',\n inactiveColor: '#aaa',\n borderWidth: 0,\n // 值域边框线宽,单位px,默认为0(无边框)\n padding: 5,\n // 值域内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n textGap: 10,\n //\n precision: 0,\n // 小数精度,默认为0,无小数点\n color: null,\n //颜色(deprecated,兼容ec2,顺序同pieces,不同于inRange/outOfRange)\n formatter: null,\n text: null,\n // 文本,如['高', '低'],兼容ec2,text[0]对应高值,text[1]对应低值\n textStyle: {\n color: '#333' // 值域文字颜色\n\n }\n },\n\n /**\n * @protected\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {Array.}\n */\n this._dataExtent;\n /**\n * @readOnly\n */\n\n this.targetVisuals = {};\n /**\n * @readOnly\n */\n\n this.controllerVisuals = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * [width, height]\n * @readOnly\n * @type {Array.}\n */\n\n this.itemSize;\n this.mergeDefaultAndTheme(option, ecModel);\n },\n\n /**\n * @protected\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option; // FIXME\n // necessary?\n // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n this.textStyleModel = this.getModel('textStyle');\n this.resetItemSize();\n this.completeVisualOption();\n },\n\n /**\n * @protected\n */\n resetVisual: function (supplementVisualOption) {\n var stateList = this.stateList;\n supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n },\n\n /**\n * @protected\n * @return {Array.} An array of series indices.\n */\n getTargetSeriesIndices: function () {\n var optionSeriesIndex = this.option.seriesIndex;\n var seriesIndices = [];\n\n if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n this.ecModel.eachSeries(function (seriesModel, index) {\n seriesIndices.push(index);\n });\n } else {\n seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n }\n\n return seriesIndices;\n },\n\n /**\n * @public\n */\n eachTargetSeries: function (callback, context) {\n zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n }, this);\n },\n\n /**\n * @pubilc\n */\n isTargetSeries: function (seriesModel) {\n var is = false;\n this.eachTargetSeries(function (model) {\n model === seriesModel && (is = true);\n });\n return is;\n },\n\n /**\n * @example\n * this.formatValueText(someVal); // format single numeric value to text.\n * this.formatValueText(someVal, true); // format single category value to text.\n * this.formatValueText([min, max]); // format numeric min-max to text.\n * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n *\n * @param {number|Array.} value Real value, or this.dataBound[0 or 1].\n * @param {boolean} [isCategory=false] Only available when value is number.\n * @param {Array.} edgeSymbols Open-close symbol when value is interval.\n * @return {string}\n * @protected\n */\n formatValueText: function (value, isCategory, edgeSymbols) {\n var option = this.option;\n var precision = option.precision;\n var dataBound = this.dataBound;\n var formatter = option.formatter;\n var isMinMax;\n var textValue;\n edgeSymbols = edgeSymbols || ['<', '>'];\n\n if (zrUtil.isArray(value)) {\n value = value.slice();\n isMinMax = true;\n }\n\n textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n if (zrUtil.isString(formatter)) {\n return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n } else if (zrUtil.isFunction(formatter)) {\n return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n }\n\n if (isMinMax) {\n if (value[0] === dataBound[0]) {\n return edgeSymbols[0] + ' ' + textValue[1];\n } else if (value[1] === dataBound[1]) {\n return edgeSymbols[1] + ' ' + textValue[0];\n } else {\n return textValue[0] + ' - ' + textValue[1];\n }\n } else {\n // Format single value (includes category case).\n return textValue;\n }\n\n function toFixed(val) {\n return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n }\n },\n\n /**\n * @protected\n */\n resetExtent: function () {\n var thisOption = this.option; // Can not calculate data extent by data here.\n // Because series and data may be modified in processing stage.\n // So we do not support the feature \"auto min/max\".\n\n var extent = asc([thisOption.min, thisOption.max]);\n this._dataExtent = extent;\n },\n\n /**\n * @public\n * @param {module:echarts/data/List} list\n * @return {string} Concrete dimention. If return null/undefined,\n * no dimension used.\n */\n getDataDimension: function (list) {\n var optDim = this.option.dimension;\n var listDimensions = list.dimensions;\n\n if (optDim == null && !listDimensions.length) {\n return;\n }\n\n if (optDim != null) {\n return list.getDimension(optDim);\n }\n\n var dimNames = list.dimensions;\n\n for (var i = dimNames.length - 1; i >= 0; i--) {\n var dimName = dimNames[i];\n var dimInfo = list.getDimensionInfo(dimName);\n\n if (!dimInfo.isCalculationCoord) {\n return dimName;\n }\n }\n },\n\n /**\n * @public\n * @override\n */\n getExtent: function () {\n return this._dataExtent.slice();\n },\n\n /**\n * @protected\n */\n completeVisualOption: function () {\n var ecModel = this.ecModel;\n var thisOption = this.option;\n var base = {\n inRange: thisOption.inRange,\n outOfRange: thisOption.outOfRange\n };\n var target = thisOption.target || (thisOption.target = {});\n var controller = thisOption.controller || (thisOption.controller = {});\n zrUtil.merge(target, base); // Do not override\n\n zrUtil.merge(controller, base); // Do not override\n\n var isCategory = this.isCategory();\n completeSingle.call(this, target);\n completeSingle.call(this, controller);\n completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n completeController.call(this, controller);\n\n function completeSingle(base) {\n // Compatible with ec2 dataRange.color.\n // The mapping order of dataRange.color is: [high value, ..., low value]\n // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n // Notice: ec2 has no inverse.\n if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n // So adding color only when no inRange defined.\n && !base.inRange) {\n base.inRange = {\n color: thisOption.color.slice().reverse()\n };\n } // Compatible with previous logic, always give a defautl color, otherwise\n // simple config with no inRange and outOfRange will not work.\n // Originally we use visualMap.color as the default color, but setOption at\n // the second time the default color will be erased. So we change to use\n // constant DEFAULT_COLOR.\n // If user do not want the default color, set inRange: {color: null}.\n\n\n base.inRange = base.inRange || {\n color: ecModel.get('gradientColor')\n }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n each(this.stateList, function (state) {\n var visualType = base[state];\n\n if (zrUtil.isString(visualType)) {\n var defa = visualDefault.get(visualType, 'active', isCategory);\n\n if (defa) {\n base[state] = {};\n base[state][visualType] = defa;\n } else {\n // Mark as not specified.\n delete base[state];\n }\n }\n }, this);\n }\n\n function completeInactive(base, stateExist, stateAbsent) {\n var optExist = base[stateExist];\n var optAbsent = base[stateAbsent];\n\n if (optExist && !optAbsent) {\n optAbsent = base[stateAbsent] = {};\n each(optExist, function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n if (defa != null) {\n optAbsent[visualType] = defa; // Compatibable with ec2:\n // Only inactive color to rgba(0,0,0,0) can not\n // make label transparent, so use opacity also.\n\n if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n optAbsent.opacity = [0, 0];\n }\n }\n });\n }\n }\n\n function completeController(controller) {\n var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n var inactiveColor = this.get('inactiveColor');\n each(this.stateList, function (state) {\n var itemSize = this.itemSize;\n var visuals = controller[state]; // Set inactive color for controller if no other color\n // attr (like colorAlpha) specified.\n\n if (!visuals) {\n visuals = controller[state] = {\n color: isCategory ? inactiveColor : [inactiveColor]\n };\n } // Consistent symbol and symbolSize if not specified.\n\n\n if (visuals.symbol == null) {\n visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n }\n\n if (visuals.symbolSize == null) {\n visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n } // Filter square and none.\n\n\n visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n }); // Normalize symbolSize\n\n var symbolSize = visuals.symbolSize;\n\n if (symbolSize != null) {\n var max = -Infinity; // symbolSize can be object when categories defined.\n\n eachVisual(symbolSize, function (value) {\n value > max && (max = value);\n });\n visuals.symbolSize = mapVisual(symbolSize, function (value) {\n return linearMap(value, [0, max], [0, itemSize[0]], true);\n });\n }\n }, this);\n }\n },\n\n /**\n * @protected\n */\n resetItemSize: function () {\n this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n },\n\n /**\n * @public\n */\n isCategory: function () {\n return !!this.option.categories;\n },\n\n /**\n * @public\n * @abstract\n */\n setSelected: noop,\n\n /**\n * @public\n * @abstract\n * @param {*|module:echarts/data/List} valueOrData\n * @param {number} dataIndex\n * @return {string} state See this.stateList\n */\n getValueState: noop,\n\n /**\n * FIXME\n * Do not publish to thirt-part-dev temporarily\n * util the interface is stable. (Should it return\n * a function but not visual meta?)\n *\n * @pubilc\n * @abstract\n * @param {Function} getColorVisual\n * params: value, valueState\n * return: color\n * @return {Object} visualMeta\n * should includes {stops, outerColors}\n * outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n */\n getVisualMeta: noop\n});\nvar _default = VisualMapModel;\nmodule.exports = _default;"],"sourceRoot":""}