{"version":3,"sources":["unknown"],"names":["global","factory","exports","module","define","amd","self","echarts","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__spreadArrays","il","r","k","a","j","jl","Browser","firefox","ie","edge","weChat","Env","browser","node","wxa","worker","canvasSupported","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","env","wx","getSystemInfoSync","document","navigator","detect","userAgent","ua","match","test","version","createElement","getContext","SVGRect","window","BUILTIN_OBJECT","TYPED_ARRAY","objToString","toString","arrayProto","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","ctorFunction","protoFunction","methods","$override","name","fn","idStart","guid","logError","args","_i","console","error","clone","source","result","typeStr","isPrimitive","len","Ctor","from","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","mergeAll","targetAndSources","extend","defaults","overlay","keysArr","keys","createCanvas","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","override","getOwnPropertyNames","keyList","isArrayLike","data","each","arr","cb","context","push","reduce","memo","find","obj","bindPolyfill","func","concat","bind","isFunction","curry","isString","isStringSafe","isNumber","type","isTypedArray","nodeType","ownerDocument","isGradientObject","colorStops","isPatternObject","image","isRegExp","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","get","removeKey","createHashMap","concatArray","newArray","offset","createObject","proto","properties","StyleCtor","hasOwn","own","noop","zrUtil","freeze","x","y","copy","out","v","clone$1","add","v1","v2","scaleAndAdd","sub","Math","sqrt","lenSquare","lengthSquare","mul","div","dot","scale","normalize","distance","dist","distanceSquare","distSquare","negate","lerp","applyTransform","m","min","max","vector","Param","e","topTarget","Draggable","handler","on","_dragStart","_drag","_dragEnd","draggingTarget","draggable","parent","_draggingTarget","dragging","_x","offsetX","_y","offsetY","dispatchToElement","event","dx","dy","drift","dropTarget","findHover","lastDropTarget","_dropTarget","Eventful","eventProcessors","_$eventProcessor","query","_$handlers","_h","eventProcessor","normalizeQuery","h","wrap","ctx","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","eventName","off","eventType","newList","l","trigger","argLen","hItem","afterTrigger","triggerWithContext","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","round","subRowMask","subRowStart","sum","colLocalIdx","colTag","buildTransformer","src","dest","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","_calcOut","transformLocalCoord","elFrom","elTarget","inX","inY","transformCoordWithViewport","el","inverse","getBoundingClientRect","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","style","idxLR","idxTB","cssText","join","appendChild","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","rect","ii","left","top","offsetLeft","offsetTop","nodeName","toUpperCase","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut$1","clientToLocal","calculate","calculateZrXY","layerX","zrX","zrY","layerY","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","wheelDelta","getWheelDeltaMayPolyfill","zrDelta","detail","touch","targetTouches","changedTouches","button","which","undefined","rawWheelDelta","deltaX","deltaY","delta","abs","sign","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","GestureMgr","_track","recognize","root","_doTrack","_recognize","clear","touches","trackItem","points","pos","recognizers","gestureInfo","dist$1","pointPair","center","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","zrByTouch","stopEvent","EmptyProxy","_super","_this","dispose","setCursor","HoveredResult","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","setHandlerProxy","_draggingMgr","mousemove","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","__zr","hovered","hoveredTarget","cursor","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","resize","dispatch","eventArgs","setCursorStyle","cursorStyle","silent","eventKey","eventPacket","__hostTarget","eachOtherLayer","layer","exclude","list","getDisplayList","hoverCheckResult","ignore","isHover","processGesture","stage","_gestureMgr","gestureMgr","dom","res","_downEl","_downPoint","_upEl","displayable","rectHover","ignoreClip","clipPath","getClipPath","contain","hostEl","handlerInstance","getWidth","getHeight","create$1","identity","copy$1","mul$1","m1","m2","out0","out1","out2","out3","out4","out5","translate","rotate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","scale$1","vx","vy","invert","clone$2","matrix","mIdentity","EPSILON","isNotAroundZero","scaleTmp","tmpTransform","originTransform","Transformable","setPosition","setScale","scaleX","scaleY","setOrigin","originX","originY","needLocalTransform","rotation","updateTransform","parentHasTransform","transform","getLocalTransform","_resolveGlobalScaleRatio","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","getComputedTransform","transformNode","ancestors","pop","setLocalTransform","atan2","PI","decomposeTransform","ox","oy","transformCoordToLocal","transformCoordToGlobal","getLineScale","initDefaultProps","easing","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Clip","opts","_initialized","_startTime","_pausedTime","_paused","_life","life","_delay","delay","loop","gap","onframe","ondestroy","onrestart","step","globalTime","deltaTime","percent","easing$1","easingFunc","schedule","_restart","remainder","pause","resume","Entry","LinkedList","_len","insert","entry","insertEntry","head","tail","next","prev","remove","LRU","maxSize","_list","_maxSize","_map","put","removed","_lastRemovedEntry","leastUsedEntry","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","f","parseCssInt","charAt","parseFloat","parseInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","parse","cached","toLowerCase","strLen","iv","op","ep","fname","substr","params","split","alpha","hsla2rgba","hsla","rgba","rgba2hsla","R","G","B","vMin","vMax","L","H","S","deltaR","deltaG","deltaB","lift","color","level","colorArr","stringify","toHex","fastLerp","normalizedValue","colors","leftIndex","floor","rightIndex","ceil","leftColor","rightColor","dv","fastMapToColor","lerp$1","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","lum","backgroundLum","random","arraySlice","interpolateNumber","p0","p1","interpolate1DArray","interpolate2DArray","len2","add1DArray","add2DArray","fillArray","val0","val1","arrDim","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isNaN","is1DArraySame","catmullRomInterpolate","p2","p3","t2","t3","v0","catmullRomInterpolate1DArray","catmullRomInterpolate2DArray","cloneValue","ret","rgba2String","guessArrayDim","tmpRgba","Track","propName","keyframes","maxTime","interpolable","_needsSort","_isAllValueEqual","_lastFrame","_lastFramePercent","isFinished","_finished","setFinished","_additiveTrack","needsAnimate","getAdditiveTrack","addKeyframe","time","arrayDim","lastFrame","colorArray","isValueColor","kf","prepare","additiveTrack","kfs","sort","kfsLen","lastKf","startValue","additiveValue","isAdditive","valueKey","kfsNum","frameIdx","start","nextFrame","frame","range","w","targetArr","_additiveValue","useSpline","_addToTarget","Animator","additiveTo","_tracks","_trackKeys","_maxTime","_started","_clip","_target","_loop","_additiveAnimators","getTarget","changeTarget","when","props","whenWithKeys","propNames","track","initialValue","_getAdditiveTrack","lastFinalKf","isPaused","_doneCallback","_setTracksFinished","doneList","_doneList","_abortedCallback","animation","abortedList","_abortedList","removeClip","tracksKeys","trackName","additiveAnimators","getTrack","forceAnimate","clip","stillHasAdditiveAnimator","onframeList","_onframeList","addClip","forwardToLast","during","done","aborted","getClip","stopTracks","allAborted","saveFinalToTarget","trackKeys","__changeFinalValue","finalProps","Point","other","equal","scalar","toArray","fromArray","input","onet","mathMin","mathMax","lt","rb","lb","rt","minTv","maxTv","BoundingRect","width","height","union","calculateTransform","intersect","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","Infinity","dMax","d0","d1","d2","d3","plain","isZero","tx","ty","maxX","maxY","textWidthCache","DEFAULT_FONT","_ctx","_cachedFont","defaultMeasureText","text","font","measureText","methods$1","cacheOfFont","innerGetBoundingRect","textAlign","textBaseline","getLineHeight","adjustTextX","adjustTextY","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","lastIndexOf","calculateTextPosition","textPosition","position","halfHeight","textVerticalAlign","align","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","Element","id","animators","currentStates","states","_init","attr","markRedraw","beforeUpdate","afterUpdate","update","__dirty","updateInnerText","forceUpdate","textEl","_textContent","textConfig","isLocal","local","attachedTransform","textStyleChanged","innerOrigin","layoutRect","textOrigin","origin","relOriginX","relOriginY","textOffset","isInside","inside","innerTextDefaultStyle","_innerTextDefaultStyle","textFill","textStroke","autoStroke","canBeInsideText","insideFill","insideStroke","getInsideTextFill","getInsideTextStroke","outsideFill","outsideStroke","getOutsideFill","getOutsideStroke","fill","stroke","setDefaultTextStyle","dirtyStyle","isDarkMode","backgroundColor","getBackgroundColor","isDark","traverse","attrKV","setTextConfig","setTextContent","setClipPath","extra","hide","show","keyOrObj","saveCurrentToNormalState","toState","_innerSaveToNormal","normalState","_normalState","animator","fromStateTransition","__fromStateTransition","targetName","_savePrimaryToNormal","primaryKeys","hasState","getState","ensureState","clearStates","noAnimation","useState","stateName","keepCurrentStates","toNormalState","hasStates","animationCfg","stateTransition","state","stateProxy","useHoverLayer","hoverLayer","_toggleHoverLayerFlag","_applyStateObj","__inHover","duration","_textGuide","_updateAnimationTargets","REDARAW_BIT","useStates","stateObjects","notChange","stateObj","mergedState","_mergeStates","removeState","idx","replaceState","oldState","newState","forceAdd","newStateExists","toggleState","enable","mergedTextConfig","transition","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","_transitionState","_attachComponent","componentEl","zr","addSelfToZr","_detachComponent","removeSelfFromZr","_clipPath","removeClipPath","getTextContent","previousTextContent","removeTextContent","cfg","getTextGuideLine","setTextGuideLine","guideLine","removeTextGuideLine","textGuide","refreshHover","refresh","dirty","inHover","textContent","addAnimator","removeAnimator","animate","updateDuringAnimation","wakeUp","stopAnimation","scope","leftAnimators","animateTo","animationProps","animateFrom","getPaintRect","elProto","isGroup","logs","logDeprecatedError","xKey","yKey","warn","createLegacyProperty","privateKey","defineProperty","enhanceArray","animatable","reverse","animateToShallow","finishCount","doneHappened","cfgDone","cfgAborted","doneCb","abortedCb","force","copyArrShallow","is2DArray","copyValue","sourceArr","len0","len1","topKey","animatableKeys","changedKeys","targetKeys","additive","setToFinal","animateAll","innerKey","keyLen","existsAnimators","existsAnimatorsOnSameTarget","revertedSource","reversedTarget","sourceClone","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","pivot","right","mid","gallopLeft","hint","lastOffset","maxOffset","tmp","gallopRight","TimSort","minGallop","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","exit","customCursor","customDest","remaining","ts","minRun","invalidZErrorLogged","logInvalidZError","shapeCompareFunc","zlevel","z","z2","Storage","_roots","_displayList","_displayListLen","displayableSortFunc","includeIgnore","displayList","updateDisplayList","roots","_updateAndAddDisplayable","clipPaths","userSetClipPath","currentClipPath","parentClipPath","childrenRef","children","child","disp","__clipPaths","decalEl","getDecalElement","addRoot","delRoot","delAllRoots","getRoots","requestAnimationFrame","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout","requestAnimationFrame$1","Animation","_running","_time","_pauseStart","_clipsHead","_clipsTail","notTriggerFrameAndStageUpdate","Date","getTime","nextClip","finished","_startLoop","options","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","pointer","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","setTouchTimer","touching","touchTimer","clearTimeout","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","domBelongToZr","parentNode","stopImmediatePropagation","currentTarget","localDOMHandlers","mousedown","__mayPointerCapture","downPoint","__togglePointerCapture","mouseup","__pointerCapturing","element","toElement","relatedTarget","wheel","mousewheel","touchstart","__lastTouchMoment","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","isPointerCapturing","globalHandlerScope","STYLE_MAGIC_KEY","DEFAULT_COMMON_STYLE","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","opacity","blend","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS$1","Displayable","useStyle","beforeBrush","afterBrush","innerBeforeBrush","innerAfterBrush","shouldBePainted","viewWidth","viewHeight","considerClipPath","considerAncestors","invisible","culling","isDisplayableCulled","isZeroArea","parent_1","rectContain","coord","_paintRect","elRect","shadowSize","tolerance","dirtyRectTolerance","setPrevPaintRect","paintRect","_prevPaintRect","getPrevPaintRect","animateStyle","targetKey","setStyle","STYLE_CHANGED_BIT","_rect","styleChanged","styleUpdated","createStyle","__hoverStyle","isStyleObject","_mergeStyle","targetStyle","sourceStyle","getAnimationStyleProps","mergedStyle","dispProto","incremental","tmpRect","viewRect","mathPow","mathSqrt","EPSILON$1","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero$1","cubicAt","cubicDerivativeAt","cubicRootAt","c","A","C","t1","disc","K","discSqrt","Y1","Y2","T","theta","acos","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x1","y1","x2","y2","x3","y3","interval","_t","cubicLength","iteration","px","py","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","mathMin$1","mathMax$1","mathSin","mathCos","PI2","end","extremity","fromPoints","bottom","fromLine","xDim","yDim","fromCubic","cubicExtrema$1","cubicAt$1","fromQuadratic","quadraticExtremum$1","quadraticAt$1","fromArc","rx","ry","startAngle","endAngle","anticlockwise","min$1","max$1","vec2Min","vec2Max","diff","angle","CMD","M","Q","Z","tmpOutX","tmpOutY","min2","max2","mathMin$2","mathMax$2","mathCos$1","mathSin$1","mathSqrt$1","mathAbs","PI2$1","hasTypedArray","Float32Array","tmpAngles","modPI2","radian","normalizeArcAngles","angles","newStartAngle","newEndAngle","PathProxy","notSaveData","_version","_xi","_yi","_x0","_y0","_saveData","increaseVersion","getVersion","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","beginPath","reset","_lineDash","_dashOffset","_pathSegLen","_pathLen","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","arcTo","radius","closePath","toStatic","setLineDash","lineDash","_dashIdx","lineDashSum","_dashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","newData","dashSum","nDash","dash","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","isFirst","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","rebuildPath","drawPart","accumLength","displayedLength","psi","isEllipse","breakBuild","ellipse","d_1","containStroke","lineWidth","_l","_a","_b","_s","containStroke$1","containStroke$2","PI2$2","normalizeRadian","PI2$3","containStroke$3","windingLine","dir","x_","CMD$1","PI2$4","EPSILON$2","isAroundEqual","swapExtrema","windingCubic","nRoots","nExtrema","y0_","y1_","unit","windingQuadratic","y_","windingArc","dTheta","tmp_1","containPath","isStroke","pathProxy","containStroke$4","DEFAULT_PATH_STYLE","strokePercent","fillOpacity","strokeOpacity","lineDashOffset","lineCap","miterLimit","strokeNoScale","strokeFirst","DEFAULT_PATH_ANIMATION_PROPS","pathCopyParams","Path","decal","_decalEl","buildPath","shape","decalElStyle","getDefaultShape","defaultStyle","getDefaultStyle","hasFill","pathFill","fillLum","isDarkLabel","shapeCfg","inBundle","pathUpdated","SHAPE_CHANGED_BIT","createPathProxy","hasStroke","needsUpdateRect","firstInvoke","rectWithStroke","_rectWithStroke","lineScale","strokeContainThreshold","localPos","dirtyShape","animateShape","setShape","shapeChanged","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","defaultProps","Sub","init","pathProto","subPixelOptimize","autoBatch","CMD$2","mathSqrt$2","mathAtan2","transformPath","nPoint","p_1","mathSqrt$3","mathSin$2","mathCos$2","PI$1","vMag","vRatio","u","vAngle","processArc","fa","fs","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","cpx","cpy","subpathX","subpathY","prevCmd","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","pathData","SVGPath","isPathProxy","createPathOptions","innerOpts","createFromString","extendFromString","defaultOpts","mergePath","pathEls","pathList","pathEl","pathBundle","Group","_children","childAt","childOfName","childCount","_doAdd","addBefore","nextSibling","replaceAt","index","old","removeAll","eachChild","stopped","includeChildren","tmpMat","childRect","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sWidth","sHeight","isImageLike","ZRImage","_getSize","dim","size","imageSource","__image","otherDim","otherDimSize","CircleShape","Circle","r1","r2","r3","r4","total","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originWidth","originHeight","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","Rect","optimizedShape","EllipseShape","Ellipse","subPixelOptimizeOutputShape$1","LineShape","Line","pointAt","interpolate","smoothSpline","isLoop","distance$1","segs","w2","w3","smoothBezier","smooth","constraint","cps","prevPoint","nextPoint","point","cp0","cp1","shift","buildPath$1","controlPoints","smoothConstraint","cp2","PolygonShape","Polygon","PolylineShape","Polyline","Gradient","addColorStop","LinearGradient","globalCoord","DEFAULT_TSPAN_STYLE","TSpan","setBoundingRect","tspanProto","DILIMITER_REG","parseXML","svg","parser","DOMParser","parseFromString","svgNode","firstChild","nodeParsers","SVGParser","_defs","_root","_isDefine","_isText","xml","viewBox","getAttribute","parseAttributes","_parseNode","viewBoxRect","viewBoxTransform","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","parentGroup","defineParsers","def","_parseText","_textX","_textY","inheritStyle","textStyle","fontSize","fontFamily","fontStyle","fontWeight","internalField","circle","line","pointsStr","pointsArr","parsePoints","polygon","polyline","img","gradient","_parseGradientColorStops","offsetStr","stopColor","__inheritedStyle","pointsString","attributesMap","defs","onlyInlineStyle","zrStyle","parseTransformAttribute","parseStyleAttribute","svgAttrName","attrValue","getPaint","urlRegex","urlMatch","url","transformRegex","transformOps_1","valueArr","styleRegex","styleList","styleRegResult","exec","parseSVG","PI$2","PI2$5","mathSin$3","mathCos$3","mathACos","mathATan2","mathAbs$1","mathSqrt$4","mathMax$3","mathMin$3","x10","y10","x32","y32","computeCornerTangents","cr","clockwise","x01","y01","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","buildPath$2","innerRadius","r0","hasRadius","hasInnerRadius","cornerRadius","innerCornerRadius","halfRd","icr","cr0","cr1","xrs","yrs","xire","yire","xre","yre","xirs","yirs","it_1","ct0","ct1","SectorShape","Sector","CMD$3","PI2$6","PROP_XY","PROP_WH","tmpArr","aroundEqual","pathToBezierCurves","bezierArray","currentSubpath","createNewSubpath","addLine","addArc","tan","c1","s1","c2","s2","x4","y4","hx","hy","nextAngle","alignSubpath","subpath1","subpath2","shorterPath","shorterLen","shorterBezierCount","eachCurveSubDivCount","newSubpath","remained","tmpSegX","tmpSegY","actualSubDivCount","createSubpath","lastSubpathSubpath","otherSubpath","lastX","lastY","alignBezierCurves","array1","array2","lastSubpath1","lastSubpath2","newArray1","newArray2","newSubpath1","newSubpath2","centroid","signedArea","findBestRingOffset","fromSubBeziers","toSubBeziers","fromCp","toCp","bezierCount","bestScore","bestOffset","cursorOffset","score","newArr","findBestMorphingRotation","fromArr","toArr","searchAngleIteration","searchAngleRange","fromNeedsReverse","fromSubpathBezier","toSubpathBezier","newFromSubpathBezier","newToSubpathBezier","bestAngle","tmpArr_1","sa","ca","newX1","newY1","i_1","to","morphPath","fromPath","toPath","animationOpts","fromPathProxy","toPathProxy","isIndividualMorphingPath","__oldBuildPath","fromBezierCurves","toBezierCurves","morphingData","becomeIndividualMorphingPath","oldDone","oldAborted","oldDuring","__morphT","restoreIndividualMorphingPath","morphingPathBuildPath","__morphingData","newCp","item","morphT","updateIndividualMorphingPath","morphingPath","isCombiningPath","__combiningSubList","isInAnyMorphing","combine","fromPathList","copyPropsIfDivided","fromIndividuals","separateCount","fromCombiningSubList","dividingMethod","toPathSplittedList","divideShape","doneCount","abortedCalled","morphAnimationOpts","restoreCombiningPath","becomeCombiningPath","toIndividuals","count","combiningSubList","updateCombiningPathSubList","combiningPath","__oldAddSelfToZr","__oldRemoveSelfFromZr","combiningAddSelfToZr","combiningRemoveSelfFromZr","combiningChildrenRef","combiningPathSubListAddRemoveWithZr","method","separate","toPathList","toPathListLen","copyProps","duplicateShape","splitShape","resultPaths","toPathShape","splitPropIdx","propWH","propXY","subWH","xyCurr","subShape","splitted","endAngleNormalized","normalizeRadian$1","angleCurr","ctor","CompoundPath","_updatePathDirty","paths","dirtyPath","IncrementalDisplayble","notClear","_displayables","_temporaryDisplayables","_cursor","getCursor","clearDisplaybles","clearTemporalDisplayables","addDisplayable","notPersistent","addDisplayables","displayables","getDisplayables","getTemporalDisplayables","eachPendingDisplayable","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","createOrUpdateImage","onload","cbPayload","__zrImageSrc","pendingWrap","isImageReady","pending","Image","onerror","imageOnLoad","__cachedImgObj","STYLE_REG","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","preparedOpts","maxIterations","minChar","cnCharWidth","ascCharWidth","placeholder","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","charCodeAt","parsePlainText","overflow","padding","truncate","calculatedLineHeight","lineHeight","truncateLineOverflow","lineOverflow","lines","wrapText","contentHeight","lineCount","outerHeight","outerWidth","truncateMinChar","maxWidth","RichTextToken","RichTextLine","tokens","RichTextContentBlock","parseRichText","contentBlock","topWidth","topHeight","wrapInfo","accumWidth","breakAll","matchedIndex","pushTokens","substring","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","outer","token","tokenStyle","styleName","rich","textPadding","paddingH","tokenHeight","innerHeight","styleTokenWidth","tokenWidthNotSpecified","percentWidth","textBackgroundColor","bgImg","remainTruncWidth","block","isEmptyStr","newLine","strLines","linesWidths","tokenPadding","tokenPaddingH","outerWidth_1","parsePercent$1","isLineHolder","tokensLen","isLatin","ch","code","breakCharMap","isWordBreakChar","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","chWidth","inWord","DEFAULT_RICH_TEXT_COLOR","DEFAULT_STROKE_LINE_WIDTH","DEFAULT_TEXT_ANIMATION_PROPS","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","borderColor","borderWidth","borderRadius","ZRText","_defaultStyle","_updateSubTexts","_childCursor","normalizeTextStyle","_updateRichTexts","_updatePlainTexts","defaultTextStyle","sourceRich","targetRich","_mergeRich","richNames","richName","_getOrCreateChild","textFont","getStyleText","needDrawBg","needDrawBackground","bgColorDrawn","baseX","baseY","textX","textY","boxX","boxY","_renderBackground","getTextXForPadding","defaultLineWidth","useDefaultFill","getFill","getStroke","hasShadow","fixedBoundingRect","subElStyle","xLeft","lineTop","xRight","tokenCount","remainedWidth","lineXLeft","lineXRight","_placeToken","parentBgColorDrawn","textWidth","textHeight","topStyle","textBorderWidth","textBorderColor","isPlainBg","textBorderRadius","rectEl","imgEl","rectShape","rectStyle","imgStyle","borderDash","borderDashOffset","commonStyle","makeFont","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","middle","normalizeStyle","ArcShape","Arc","unitX","unitY","BezierCurveShape","cpx1","cpy1","someVectorAt","isTangent","cpx2","cpy2","BezierCurve","tangentAt","DropletShape","Droplet","HeartShape","Heart","PI$3","IsogonShape","Isogon","dStep","deg","RingShape","Ring","sin$1","cos$1","RoseShape","Rose","PI$4","cos$2","sin$2","StarShape","Star","xStart","yStart","ri","cos$3","sin$3","TrochoidShape","location","Trochoid","num","RadialGradient","extent","extent2","minTv$1","maxTv$1","OrientedBoundingRect","_corners","_axes","_origin","fromBoundingRect","corners","axes","overlapped","noMtv","_intersectCheckOneSide","axis","_getProjMinMaxOnAxis","dist0","dist1","proj","proj_1","useVML","painterCtors","instances","delInstance","totalLum","ZRender","_sleepAfterStill","_stillFrameAccum","_needsRefresh","_needsRefreshHover","_darkMode","rendererType","renderer","vml","useDirtyRect","handerProxy","getViewportRoot","_flush","configLayer","zLevel","config","setBackgroundColor","_backgroundColor","setDarkMode","darkMode","refreshImmediately","fromInside","flush","triggerRendered","refreshHoverImmediately","elapsedTime","setSleepAfterStill","stillFramesCount","addHover","removeHover","clearHover","getType","clearAnimation","pathToImage","eventHandler","disposeAll","getInstance","registerPainter","zrender","RADIAN_EPSILON","_trim","linearMap","domain","clamp","subDomain","subRange","parsePercent$2","all","NaN","round$1","precision","returnStr","toFixed","asc","getPrecision","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","dataExtent","pixelExtent","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","NEGATIVE_INFINITY","maxId","MAX_SAFE_INTEGER","remRadian","pi2","isRadianAroundZero","TIME_REG","parseDate","hour","UTC","quantity","quantityExponent","exp","nice","exponent","exp10","nf","quantile","ascArr","reformIntervals","littleThan","curr","currClose","close_1","close","lg","numericToNumber","valFloat","isNumeric","getRandomIdBase","getGreatestCommonDividor","getLeastCommonMultiple","numberUtil","ECHARTS_PREFIX","storedLogs","hasConsole","deprecateLog","deprecateReplaceLog","oldOpt","newOpt","consoleLog","makePrintable","hintInfo","msg","makePrintableStringIfPossible_1","toISOString","arg","printableStr","JSON","err","throwError","DUMMY_COMPONENT_NAME_PREFIX","INTERNAL_COMPONENT_ID_PREFIX","normalizeToArray","defaultEmphasis","subOpts","emphasis","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","dataItem","isDataItemOption","mappingToExists","existings","newCmptOptions","mode","isNormalMergeMode","isReplaceMergeMode","isReplaceAllMode","existingIdIdxMap","cmptOption","isValidIdOrName","warnInvalidateIdOrName","prepareResult","mappingById","mappingByName","mappingByIndex","mappingInReplaceAllMode","makeIdAndName","existing","isComponentIdInternal","newOption","keyInfo","brandNew","optionId","makeComparableKey","existingIdx","resultItem","keyExistAndEqual","nextIdx","mapResult","idMap","idNum","obj1","obj2","key1","convertOptionIdName","key2","idOrName","defaultValue","isNameSpecified","componentModel","makeInternalComponentId","idSuffix","setComponentTypeToKeyInfo","mappingResult","mainType","componentModelCtor","subType","determineSubType","newCmptOption","existComponent","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","seriesId","dataIndices","dataIndex","otherDataIndices","lenj","isData","queryDataIndex","payload","dataIndexInside","indexOfRawIndex","indexOfName","makeInner","innerUniqueIndex","hostObj","parseFinder","ecModel","finderInput","finder","queryOptionMap","mainTypeSpecified","parsedKey","queryType","includeMainTypes","queryOption","defaultMainType","queryResult","queryReferringComponents","useDefault","enableAll","enableNone","models","SINGLE_REFERRING","MULTIPLE_REFERRING","userOption","indexOption","idOption","nameOption","specified","firstCmpt","getComponent","queryComponents","setAttribute","getTooltipRenderMode","renderModeOption","groupData","getKey","buckets","interpolateRawValues","sourceValue","targetValue","isAutoPrecision","interpolated","leftArr","rightArr","length_1","info","getDimensionInfo","leftVal","rightVal","TYPE_DELIMITER","IS_CONTAINER","IS_EXTENDED_CLASS","parseClassType","componentType","main","typeArr","checkClassType","isExtendedClass","clz","enableClassExtend","rootClz","mandatoryMethods","$constructor","ExtendedClass","isESClass","ins","superCall","superApply","Function","mountExtend","SubClz","SupperClz","classBase","enableClassCheck","classAttr","isInstance","methodName","enableClassManagement","registerClass","componentFullType","componentTypeInfo","container","makeContainer","getClass","throwWhenNotFound","getClassesByMainType","o","hasClass","getAllClassMainTypes","types","hasSubTypes","registerWhenExtend","originalExtend_1","makeStyleMapper","ignoreParent","model","excludes","includes","getShallow","AREA_STYLE_KEY_MAP","getAreaStyle","AreaStyleMixin","getECData","_highlightNextDigit","_highlightKeyMap","getSavedStates","HOVER_STATE_NORMAL","HOVER_STATE_BLUR","HOVER_STATE_EMPHASIS","SPECIAL_STATES","DISPLAY_STATES","Z2_EMPHASIS_LIFT","Z2_SELECT_LIFT","HIGHLIGHT_ACTION_TYPE","DOWNPLAY_ACTION_TYPE","SELECT_ACTION_TYPE","UNSELECT_ACTION_TYPE","TOGGLE_SELECT_ACTION_TYPE","hasFillOrStroke","fillOrStroke","liftedColorCache","liftColor","color$1","liftedColor","doChangeHoverState","hoverStateEnum","onHoverStateChange","hoverState","singleEnterEmphasis","singleLeaveEmphasis","singleEnterBlur","singleLeaveBlur","singleEnterSelect","selected","singleLeaveSelect","updateElementState","updater","commonParam","traverseUpdateState","setStatesFlag","getFromStateStyle","toStateName","fromState","createEmphasisDefaultState","targetStates","hasSelect","cloned","store","fromFill","selectFill","normalFill","fromStroke","selectStroke","normalStroke","emphasisStyle","z2EmphasisLift","createSelectDefaultState","z2SelectLift","createBlurDefaultState","hasBlur","currentOpacity","blurStyle","elementStateProxy","setDefaultStateProxy","enterEmphasisWhenMouseOver","shouldSilent","__highByOuter","leaveEmphasisWhenMouseOut","enterEmphasis","highlightDigit","leaveEmphasis","enterBlur","leaveBlur","enterSelect","leaveSelect","__highDownSilentOnTouch","allLeaveBlur","api","getModel","eachComponent","view","getViewOfSeriesModel","getViewOfComponentModel","group","toggleSeriesBlurState","targetSeriesIndex","focus","blurScope","isBlur","leaveBlurOfIndices","itemEl","getItemGraphicEl","targetSeriesModel","getSeriesByIndex","targetCoordSys","coordinateSystem","master","blurredSeries","eachSeries","seriesModel","sameSeries","coordSys","sameCoordSys","getData","dataTypes","blurSeries","toggleSeriesBlurStateFromPayload","isHighDownPayload","isHighlight","seriesIndex","dataType","current","ecData","focus_1","toggleSelectionFromPayload","isSelectChangePayload","updateSeriesElementSelection","allData","getAllData","eachItemGraphicEl","isSelected","getAllSelectedIndices","getSelectedDataIndices","enableHoverEmphasis","setAsHighDownDispatcher","enableHoverFocus","OTHER_STATES","defaultStyleGetterMap","itemStyle","lineStyle","areaStyle","setStatesStylesFromModel","itemModel","styleType","getter","asDispatcher","disable","extendedEl","highDownSilentOnTouch","__highDownDispatcher","isHighDownDispatcher","getHighlightDigit","highlightKey","payloadType","savePathStates","selectState","select","mathMax$4","mathMin$4","_customShapeMap","extendShape","extendPathFromString","extendPath","registerShape","ShapeClass","getShapeClass","makePath","layout","centerGraphic","resizePath","makeImage","imageUrl","zrImg","boundingRect","aspect","mergePath$1","pathRect","subPixelOptimizeLine$1","param","subPixelOptimizeRect$1","subPixelOptimize$1","animateOrSetProps","animationType","animatableModel","isFrom","removeOpt","isUpdate","isRemove","animationPayload","updatePayload","getUpdatePayload","animationEnabled","isAnimationEnabled","animationEasing","animationDelay","getAnimationDelayParams","updateProps","initProps","removeElement","isElementRemoved","fadeOutDisplayable","removeElementWithFadeOut","doRemove","getTransform","ancestor","mat","applyTransform$1","invert$1","transformDirection","direction","hBase","vBase","vertex","isNotGroup","isPath","groupTransition","g1","g2","getElMap","elMap","anid","getAnimatableProps","elMap1","oldEl","newProp","clipPointsByRect","clipRectByRect","targetRect","createIcon","iconStr","linePolygonIntersect","a1x","a1y","a2x","a2y","lineLineIntersect","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","nearZero","b1a1x","b1a1y","q","graphic","Text","IncrementalDisplayable","EMPTY_OBJ","setLabelText","label","labelTexts","oldStates","normal","getLabelText","stateModels","overrideValue","labelFetcher","labelDataIndex","labelDimIndex","normalModel","baseText","getFormattedLabel","defaultText","statesText","stateModel","setLabelStyle","targetEl","labelStatesModels","stateSpecified","isSetOnText","needsCreateText","labelStatesTexts","showNormal","normalStyle","createTextStyle","createTextConfig","stateShow","targetElEmphasisState","enableTextSetter","labelInner","getLabelStatesModels","labelName","statesModels","textStyleModel","specifiedTextStyle","isNotNormal","isAttached","setTextStyleCommon","labelPosition","labelRotate","labelDistance","labelOffset","defaultOutsidePosition","inheritColor","globalTextStyle","option","richItemNames","getRichItemNames","richResult","name_1","richTextStyle","setTokenTextStyle","margin","richItemNameMap","richKeys","richKey","parentModel","TEXT_PROPS_WITH_GLOBAL","TEXT_PROPS_SELF","TEXT_PROPS_BOX","isBlock","inRich","fillColor","strokeColor","textBorderType","textBorderDashOffset","defaultOpacity","baseline","disableBox","borderType","getFont","gTextStyleModel","setLabelValueAnimation","getDefaultText","prevValue","normalLabelModel","valueAnimation","defaultInterpolatedText","animateLabelValue","labelInnerStore","currentValue","labelText","PATH_COLOR","tmpRichText","TextStyleMixin","getTextColor","isEmphasis","getTextRect","LINE_STYLE_KEY_MAP","getLineStyle","LineStyleMixin","ITEM_STYLE_KEY_MAP","getItemStyle","ItemStyleMixin","Model","rest","mergeOption","_doGet","parsePath","hasPath","pathFinal","resolveParentPath","isEmpty","restoreData","pathArr","base","getUID","enableSubTypeDefaulter","subTypeDefaulters","registerSubTypeDefaulter","defaulter","componentTypeMain","enableTopologicalTravel","entity","dependencyGetter","topologicalTravel","targetNameList","fullNameList","callback","makeDepndencyGraph","graph","noEntryList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","originalDeps","successor","removeEdgeAndAdd","removeEdge","errMsg","succComponentType","entryCount","thisItem","createDependencyGraphItem","availableDeps","getAvailableDependencies","dependentName","predecessor","thatItem","dep","inheritDefaultOption","superOption","subOption","langEN","month","monthAbbr","dayOfWeek","dayOfWeekAbbr","legend","selector","toolbox","brush","title","lineX","lineY","keep","dataView","lang","dataZoom","zoom","back","magicType","bar","stack","tiled","restore","saveAsImage","series","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","heatmap","parallel","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","partialData","langZH","LOCALE_ZH","LOCALE_EN","DEFAULT_LOCALE","localeStorage","localeModels","SYSTEM_LANG","langStr","documentElement","language","browserLanguage","registerLocale","locale","localeObj","createLocaleObject","getLocaleModel","getDefaultLocaleModel","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","defaultLeveledFormatter","year","day","minute","second","millisecond","none","fullDayFormatter","fullLeveledFormatter","primaryTimeUnits","timeUnits","pad","getPrimaryTimeUnit","timeUnit","isPrimaryTimeUnit","getDefaultFormatPrecisionOfInterval","format","template","isUTC","date","fullYearGetterName","monthGetterName","dateGetterName","hoursGetterName","minutesGetterName","secondsGetterName","millisecondsGetterName","localeModel","timeModel","leveledFormat","tick","formatter","defaults$1","mergedFormatter","inherit","getUnitFromValue","targetId","levelId","isSecond","isMinute","isHour","isDay","isMonth","isYear","getUnitValue","fullYearSetterName","monthSetterName","dateSetterName","hoursSetterName","minutesSetterName","secondsSetterName","millisecondsSetterName","addCommas","parts","toCamelCase","upperCaseFirst","group1","normalizeCssArray$1","replaceReg","replaceMap","encodeHTML","makeValueReadable","valueType","useUTC","USER_READABLE_DEFUALT_TIME_PATTERN","stringToUserReadable","isNumberUserReadable","isTypeTime","isValueDate","numericResult","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","formatTpl","tpl","paramsList","encode","seriesLen","$vars","alias","formatTplSimple","getTooltipMarker","inOpt","extraCssText","renderMode","markerId","content","formatTime","utc","capitalFirst","convertToColorString","defaultColor","windowOpen","link","blank","open","opener","href","formatUtil","each$1","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","maxHeight","currentLineMaxSize","nextChild","nextChildRect","nextX","nextY","moveX","newline","moveY","vbox","hbox","getAvailableSize","positionInfo","containerRect","containerHeight","getLayoutRect","verticalMargin","horizontalMargin","positionElement","hv","boundingMode","sizeCalculable","hvIdx","fetchLayoutMode","layoutMode","mergeLayoutParam","targetOption","ignoreSize","hResult","vResult","names","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","hasValue","getLayoutParams","copyLayoutParams","inner","ComponentModel","uid","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","optionUpdated","newCptOption","isInit","defaultOption","fields","optList","getReferringComponents","indexKey","idKey","getBoxLayoutParams","boxLayoutModel","protoInitialize","componentIndex","getDependencies","deps","dependencies","unshift","platform","decalColor","globalDefault","gradientColor","decals","dashArrayX","dashArrayY","symbolSize","symbol","dashLineOffset","blendMode","stateAnimation","animationDuration","animationDurationUpdate","animationEasingUpdate","animationThreshold","progressiveThreshold","progressive","hoverLayerThreshold","VISUAL_DIMENSIONS","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_UNKNOWN","SERIES_LAYOUT_BY_COLUMN","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","innerGlobalModel","resetSourceDefaulter","datasetMap","inheritSourceMetaRawOption","upstream","newMetaRawOption","parentMetaRawOption","metaRawOption","seriesLayoutBy","sourceHeader","startIndex","dimensions","dimensionsDefine","makeSeriesEncodeForAxisCoordSys","coordDimensions","datasetModel","querySeriesUpstreamDatasetModel","encodeItemName","encodeSeriesName","baseCategoryDimIndex","categoryWayValueDimStart","coordDimInfoLoose","coordDimIdx","coordDimInfo","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","coordDimName","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","sourceFormat","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","fulfilled","nameDimIndex","thisData","queryDatasetUpstreamDatasetModels","guessOrdinal","dimIndex","maxLoop","dimName","dimType","dimDefItem","dataArrayRows","sample","detectValue","row","dataObjectRows","dataKeyedColumns","dataOriginal","beStr","internalOptionCreatorMap","registerInternalOptionCreator","creator","concatInternalOptions","newCmptOptionList","internalOptionCreator","internalOptions","innerColor","innerDecal","PaletteMixin","getColorFromPalette","requestNum","defaultPalette","layeredPalette","getFromPalette","clearColorPalette","clearPalette","getDecalFromPalette","defaultDecals","getNearestPalette","palettes","requestColorNum","paletteNum","that","scopeFields","paletteIdx","paletteNameMap","palette","pickedPaletteItem","reCreateSeriesIndices","assertSeriesInitialized","initBase","OPTION_INNER_KEY","GlobalModel","theme","optionManager","_theme","_locale","_optionManager","setOption","optionPreprocessorFuncs","innerOpt","normalizeSetOptionInput","_resetOption","resetOption","optionChanged","baseOption","mountOption","_mergeOption","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","_componentsMap","componentsCount","_componentsCount","newCmptTypes","newCmptTypeMap","replaceMergeMainTypeMap","componentOption","mainTypeInReplaceMerge","visitComponent","oldCmptList","mergeMode","optionsByMainType","cmptsByMainType","cmptsCountByMainType","ComponentModelClass","extraOpt","__requireNewView","_seriesIndices","getOption","optInMainType","realLen","metNonInner","getLocale","localePosition","setUpdatePayload","_payload","cmpt","cmpts","queryByIdOrName","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","ctxForAll_1","cbForAll_1","getSeriesByName","nameStr","oneSeries","getSeriesByType","getSeries","getSeriesCount","rawSeriesIndex","eachRawSeries","eachSeriesByType","eachRawSeriesByType","isSeriesFiltered","_seriesIndicesMap","getCurrentSeriesIndices","filterSeries","newSeriesIndices","seriesRawIdx","componentTypes","components","component","isNotTargetSeries","seriesIndices","airaOption","enabled","mergeTheme","notMergeColorLayer","colorLayer","themeItem","keyMap_1","idOrNameItem","idName","idName_1","replaceMerge","availableMethods","ExtensionAPI","ecInstance","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","coordinateSystems","creater","getCoordinateSystems","register","QUERY_REG","OptionManager","_timelineOptions","_mediaList","_currentMediaIndices","_api","rawOption","dataset","optionBackup","_optionBackup","newParsedOption","parseRawOption","_newBaseOption","timelineOptions","mediaList","mediaDefault","isRecreate","_mediaDefault","timelineModel","getCurrentIndex","ecWidth","ecHeight","indices","applyMediaQuery","indicesEquals","isNew","declaredBaseOption","timelineOnRoot","timeline","timelineOptionsOnRoot","mediaOnRoot","media","hasMedia","hasTimeline","singleMedia","doPreprocess","preProcess","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indices1","indices2","each$2","isObject$1","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","textPropName","compatEC3CommonStyles","processSeries","seriesOpt","markPoint","markLine","markArea","nodes","edgeData","links","edges","categories","mpData","mlData","breadcrumb","levels","leaves","toObj","globalCompatStyle","isTheme","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","nameGap","axisNameGap","geo","geoOpt","regions","regionObj","timelineOpt","toolboxOpt","feature","featureOpt","tooltip","set$1","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","BAR_ITEM_STYLE_MAP","compatBarItemStyle","oldName","newName","compatPieLabel","alignTo","edgeDistance","compatSunburstState","downplay","blur","compatGraphFocus","focusNodeAdjacency","traverseTree","globalBackwardCompat","seriesType","clipOverflow","clockWise","hoverOffset","scaleSize","pointerColor","backgroundStyle","highlightPolicy","mapType","mapLocation","hoverAnimation","dataRange","visualMap","componentName","dataStack","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","getCalculationInfo","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","setCalculationInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","dims","targetData","byValue","stackedDataRawIndex","getRawIndex","stackedOver","rawIndexOf","getByRawIndex","hostModel","SourceImpl","dimensionsDetectedCount","encodeDefine","isSourceInstance","createSource","sourceData","thisMetaRawOption","detectSourceFormat","determined","determineSourceDimensions","makeEncodeDefine","createSourceFromSeriesDataOption","cloneSourceShallow","normalizeDimensionsOption","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","firstIndex","dimensions_1","nameMap","rawItem","displayName","exist","_c","providerMethods","mountMethods","DefaultDataProvider","sourceParam","dimSize","_source","_data","_offset","_dimSize","getSource","getItem","appendData","clean","pure","persistent","provider","getMethodMapKey","getItemForTypedArray","countForTypedArray","fillStorage","fillStorageForTypedArray","rawItemGetter","getRawSourceItemGetter","rawCounter","getRawSourceDataCounter","dimExtent","appendDataSimply","newCol","oldCol","getItemSimply","rawData","rawSourceItemGetterMap","col","countSimply","rawSourceDataCounterMap","getRawValueSimply","rawSourceValueGetterMap","getRawSourceValueGetter","retrieveRawValue","getRawDataItem","getProvider","dimInfo","DIMENSION_LABEL_REG","DataFormatMixin","getDataParams","rawValue","getRawValue","rawDataIndex","getName","itemOpt","getItemVisual","isSeries","userOutput","componentSubType","dimensionNames","status","extendParams","getItemModel","dimensionIndex","formatTooltip","multipleSeries","normalizeTooltipFormatResult","markupText","markupFragment","createTask","Task","_reset","_plan","plan","_count","_onDirty","onDirty","_dirty","perform","performArgs","upTask","_upstream","skip","outputData","__pipeline","currentTask","planResult","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","forceFirstProgress","_doReset","_outputDueEnd","_dueEnd","_progress","_dueIndex","progress","_doProgress","outputDueEnd","_settedOutputEnd","unfinished","iterator","_callingProgress","downstream","_downstream","pipe","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","winCount","it","sStep","sCount","modNext","sequentialNext","parseDataValue","ordinalMeta","parseAndCollect","valueParserMap","getRawValueParser","ORDER_COMPARISON_OP_MAP","lval","rval","lte","gt","gte","FilterOrderComparator","_opFn","_rvalFloat","evaluate","SortOrderComparator","order","incomparable","isDesc","_resultLT","_incomparable","lvalTypeof","rvalTypeof","lvalFloat","rvalFloat","lvalNotNumeric","rvalNotNumeric","lvalIsStr","rvalIsStr","FilterEqualityComparator","isEq","_rval","_isEQ","_rvalTypeof","eqResult","createFilterComparator","ExternalSource","getRawData","cloneRawData","cloneAllDimensionInfo","retrieveValue","retrieveValueFromItem","convertValue","rawVal","createExternalSource","internalSource","externalTransform","extSource","sourceHeaderCount","dimsByName","dimDef","dimDefExt","__isBuiltIn","rawValueGetter","externalTransformMap","registerExternalTransform","typeParsed","isBuiltIn","applyDataTransform","rawTransOption","sourceList","infoForPrint","pipedTransOption","pipeLen","transOption","applySingleDataTransform","upSourceList","pipeIndex","transType","extUpSourceList","upSource","resultList","upstreamList","print","printStrArr","pipeIndexStr","datasetIndex","resultData","resultMetaRawOption","SourceManager","sourceHost","_sourceList","_upstreamSignList","_versionSignBase","_sourceHost","_setLocalSource","upstreamSignList","_getVersionSign","prepareSource","_isDirty","_createSource","upSourceMgrList","_getUpstreamSourceManagers","hasUpstream","resultSourceList","upSourceMgr","_getSourceMetaRawOption","_applyTransform","upMgrList","transformOption","fromTransformResult","doThrow","upMgr","upSrcMgr","sourceIndex","getSourceManager","disableTransformOptionMerge","TOOLTIP_NAME_TEXT_STYLE_CSS","TOOLTIP_TEXT_STYLE_RICH","TOOLTIP_VALUE_TEXT_STYLE_CSS","TOOLTIP_VALUE_TEXT_STYLE_RICH","TOOLTIP_LINE_HEIGHT_CSS","HTML_GAPS","RICH_TEXT_GAPS","createTooltipMarkup","getBuilder","fragment","builderMap","section","planLayout","subBlockLen","blocks","thisBlockHasInnerGap","noHeader","thisGapLevelBetweenSubBlocks","subBlock","subGapLevel","__gapLevelBetweenSubBlocks","build","topMarginForOuterGap","gaps","getGap","subMarkupText","buildSubBlocks","html","displayableHeader","header","wrapInlineNameRichText","richText","wrapBlockHTML","nameValue","noName","noValue","noMarker","markerType","markerStr","markupStyleCreator","makeTooltipMarker","markerColor","readableName","valueTypeOption","readableValueList","valueAlignRight","valueCloseToMarker","wrapInlineValueRichText","wrapInlineNameHTML","wrapInlineValueHTML","subMarkupTextList","subBlocks","orderMode","sortBlocks","orderMap","valueAsc","valueDesc","comparator_1","sortParam","buildTooltipMarkup","builder","gapLevelBetweenSubBlocks","encodedContent","topGap","clearfix","marginCSS","leftHasMarker","marginCss","alignRight","paddingStr","alignCSS","wrapRichTextStyle","styles","paddingLeft","retrieveVisualColorForTooltipMarker","visualDrawType","getPaddingFromTooltipModel","TooltipMarkupStyleCreator","richTextStyles","_nextStyleNameId","_generateStyleName","finalStl","defaultSeriesFormatTooltip","tooltipDims","mapDimensionsAll","tooltipDimLen","isValueArr","inlineValue","inlineValueType","formatArrResult","formatTooltipArrayValue","inlineValues","inlineValueTypes","seriesNameSpecified","inlineName","isValueMultipleLine","dimItem","setEachItem","otherDims","inner$1","getSelectionKey","getId","SeriesModel","_selectedDataIndicesMap","dataTask","dataTaskCount","dataTaskReset","sourceManager","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","_initSelectedMapFromData","themeSubType","fillDataTextStyle","newSeriesOption","task","getCurrentTask","getLinkedData","mainData","getLinkedDataAll","getBaseAxis","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","innerDataIndices","_innerSelect","unselect","selectedMap","nameOrId","toggleSelect","selectedDataIndicesMap","nameOrIds","selectedMode","lastDataIndex","hasItemOption","useColorPaletteOnData","ignoreStyleOnData","hasSymbolVisual","defaultSymbol","visualStyleAccessPath","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","CHANGABLE_METHODS","DOWNSAMPLE_METHODS","wrapMethod","onDataChange","scheduler","pipeline","getPipeline","agentStubMap","ComponentView","render","updateView","updateLayout","updateVisual","seriesModels","createRenderPlanner","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","inner$2","renderPlanner","ChartView","renderTask","renderTaskPlan","renderTaskReset","highlight","toggleHighlight","markUpdateMethod","updateMethod","elSetState","dataIdx","progressMethodMap","incrementalPrepareRender","incrementalRender","ORIGIN_METHOD","RATE","THROTTLE_TYPE","throttle","debounce","currCall","lastCall","lastExec","timer","debounceNextCall","cbArgs","thisDelay","thisDebounce","debounceDelay","createOrUpdate","fnAttr","rate","throttleType","originFn","lastThrottleType","lastRate","inner$3","defaultStyleMappers","defaultColorKey","getStyleMapper","stylePath","styleMapper","visualStyleMapper","getDefaultColorKey","colorKey","seriesStyleTask","createOnAllSeries","performRawSeries","styleModel","getStyle","globalStyle","decalOption","setVisual","colorCallback","dataEach","dataParams","setItemVisual","sharedModel","dataStyleTask","getVisual","existsStyle","ensureUniqueItemVisual","dataColorPaletteTask","overallReset","paletteScopeGroupByType","colorScope","dataAll","idxMap","rawIdx","fromPalette","dataCount","PI$5","defaultLoading","textColor","maskColor","showSpinner","spinnerRadius","mask","labelRect","Scheduler","dataProcessorHandlers","visualHandlers","_stageTaskMap","_dataProcessorHandlers","_visualHandlers","_allHandlers","taskRecord","overallTask","getPerformArgs","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","pipelineId","updateStreamModes","dataLen","threshold","restorePipelines","pipelineMap","preventIncremental","_pipe","prepareStageTasks","stageTaskMap","record","_createSeriesStageTask","_createOverallStageTask","prepareView","__block","performDataProcessorTasks","_performStageTasks","performVisualTasks","stageHandlers","stageHandler","visualType","stageHandlerRecord","seriesTaskMap","overallNeedDirty_1","stub","needSetDirty","performArgs_1","setDirty","dirtyMap","performSeriesTasks","oldSeriesTaskMap","newSeriesTaskMap","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","overallTaskReset","oldAgentStubMap","newAgentStubMap","overallProgress","shouldOverallTaskDirty","createStub","stubReset","stubOnDirty","agent","wrapStageHandler","detectSeriseType","stubProgress","clearAllVisual","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","legacyFunc","ecModelMock","apiMock","mockMethods","cond","Clz","colorAll","lightTheme","contrastColor","axisCommon","axisLine","splitLine","splitArea","minorSplitLine","colorPalette","crossStyle","subtextStyle","iconStyle","brushStyle","handleStyle","moveHandleStyle","fillerColor","dataBackground","selectedDataBackground","controlStyle","dayLabel","monthLabel","yearLabel","timeAxis","logAxis","valueAxis","categoryAxis","axisLabel","color0","borderColor0","DatasetModel","_sourceManager","DatasetView","mapDataStorage","registerMap","mapName","rawDef","rawSpecialAreas","records","specialAreas","geoSource","geoJson","geoJSON","features","parsers","retrieveMap","svgXML","ECEventProcessor","cptQuery","dataQuery","otherQuery","condCptType","suffixes_1","dataKeys_1","reserved","propSuffix","suffixPos","eventInfo","packedEvent","check","filterForExposedEvent","host","propOnHost","seriesSymbolTask","legendSymbol","symbolType","keepAspect","symbolRotate","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","seriesSymbolRotate","symbolKeepAspect","dataSymbolTask","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","getItemVisualFromData","getVisualFromData","setItemVisualFromData","PI2$7","CMD$4","DEFAULT_SEARCH_SPACE","getCandidateAnchor","outPt","outDir","projectPointToArc","projectPointToLine","limitToEnds","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","minDist","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelLineModel","labelLine","labelGuideConfig","textGuideLineConfig","searchSpace","candidates","anchorPoint","anchor","targetTransform","targetInversedTransform","candidate","limitTurnAngle","tmpArr$1","tmpProjPoint","linePoints","minTurnAngle","angleCos","minTurnAngleCos","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","newAngle","setLabelLineState","isNormal","styleObj","buildLabelLinePath","moveLen","midPoint0","midPoint2","midPoint1","setLabelLineStyle","labelIgnoreNormal","isLabelIgnored","showAbove","labelLineConfig","getLabelLineStatesModels","labelLineName","prepareLayoutList","defaultAttr","localRect","isAxisAligned","minMargin","globalRect","obb","priority","layoutOption","computedLayoutOption","axisAligned","shiftLayout","xyDim","sizeDim","minBound","maxBound","balanceShift","lastPos","adjusted","totalShifts","shiftList","first","last","minGap","maxGap","updateMinMaxGap","squeezeGaps","takeBoundsGap","squeezeWhenBailout","gapThisBound","gapOtherBound","moveDir","moveFromMaxGap","maxSqeezePercent","totalGaps","prevItemRect","squeezePercent","movement","moveForEachLabel","shiftLayoutOnX","leftBound","rightBound","shiftLayoutOnY","topBound","bottomBound","hideOverlap","labelList","displayedLabels","hideEl","emphasisState","labelItem","existsTextCfg","labelGuideIgnore","cloneArr","newPoints","prepareLayoutCallbackParams","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","labelStyle","labelTransform","labelGuide","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","needsUpdateLabelLine","labelLayoutStore","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","ignoreLabelLineUpdate","_updateLabelLine","_animateLabels","visualStyle","disableLabelAnimation","layoutStore","oldLayout","newProps","oldOpacity","prevStates","oldLayoutSelect","oldLayoutEmphasis","layoutSelect","layoutEmphasis","newLayout","createLegacyDataSelectAction","ecRegisterAction","getSeriesIndices","eventsMap","dispatchAction","handleSeriesLegacySelectEvents","eventPostfix","ecIns","legacyEventName","fromActionPayload","handleLegacySelectEvents","messageCenter","isFromClick","fromAction","createLinearGradient","canvasGradient","createRadialGradient","getCanvasGradient","isClipPathChanged","prevClipPaths","normalizeLineDash","lineType","pathProxyForDraw","styleHasStroke","styleHasFill","doFillPath","originalGlobalAlpha","globalAlpha","doStrokePath","createCanvasPattern","pattern","canvasPattern","createPattern","repeat","DOMMatrix","rotateSelf","scaleSelf","translateSelf","setTransform","brushPath","inBatch","strokePart","firstDraw","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","fillStyle","strokeStyle","ctxLineDash","lineScale_1","needsRebuild","brushImage","drawImage","brushText","hasLineDash","lineScale_2","strokeText","fillText","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","flushPathDrawn","globalCompositeOperation","bindPathAndTextCommonStyle","prevEl","newLineWidth","bindImageStyle","setContextTransform","updateClipStatus","allClipped","isTransformChanged","m0","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","canPathBatch","batchFill","batchStroke","brushSingle","isLast","__isRendered","prevElClipPaths","forceSetTransform","forceSetStyle","save","canBatchPath","lastDrawType","brushIncremental","temporalDisplayables","innerScope","len_1","returnFalse","createDom","newDom","newDomStyle","Layer","motionBlur","lastFrameAlpha","virtual","maxRepaintRectCount","__firstTimePaint","__used","__drawIndex","__startIndex","__endIndex","__prevStartIndex","__prevEndIndex","domStyle","onselectstart","webkitUserSelect","userSelect","webkitTapHighlightColor","domBack","ctxBack","getElementCount","initContext","setUnpainted","createBackBuffer","createRepaintRects","prevList","mergedRepaintRects","full","pendingRect","addRectToMergePool","isMerged","minDeltaArea","bestRectToMergeIdx","mergedRect","pendingRect_1","aArea","bArea","pendingArea","deltaArea","shouldPaint","prevRect","curRect","hasIntersections","_paintRects","debugGetPaintRects","clearAll","clearColor","repaintRects","haveMotionBLur","doClear","clearRect","clearColorGradientOrPattern","__canvasGradient","__painter","fillRect","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","createRoot","domRoot","CanvasPainter","_zlevelList","_prevDisplayList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","_opts","_singleCanvas","rootStyle","innerHTML","zlevelList","layers","_width","_height","_domRoot","rootCanvas","mainLayer","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","_paintHoverList","_hoverlayer","getLayer","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_doPaintList","needsRefreshHover","_compositeManually","self_1","eachLayer","eachBuiltinLayer","layerList","zi","_loop_1","this_1","useTimer","now","startTime","firstEl","repaint","repaintRect","_doPaintEl","dTime","draw","currentLayer","insertLayer","layersMap","prevLayer","prevDom","insertBefore","getLayers","updatePrevLayer","incrementalLayerCount","prevZlevel","_clearLayer","layerConfig","_zlevel","delLayer","removeChild","display","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","ctx_1","renderToCanvas","whIdx","wh","cwh","plt","prb","defaultView","getComputedStyle","canvas","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","imgShape","findEventDispatcher","returnFirstMatch","found","wmUniqueIndex","WeakMap","_id","_guard","enumerable","configurable","has","TypeError","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","diamond","pin","arrow","triangle","symbolShapeMakers","thickness","symbolBuildProxies","SymbolClz","proxySymbol","symbolPathSetColor","symbolStyle","__isEmptyBrush","createSymbol","symbolPath","setColor","decalMap","decalCache","decalKeys","createOrUpdatePatternFromDecal","decalObject","getDevicePixelRatio","getZr","isSVG","oldPattern","decalOpt","maxTileWidth","maxTileHeight","setPatternnSource","isValidKey","cache","svgElement","normalizeDashArrayX","normalizeDashArrayY","symbolArray","normalizeSymbolArray","lineBlockLengthsX","getLineBlockLengthX","lineBlockLengthY","getLineBlockLengthY","svgRoot","createSVGElement","pSize","getPatternSize","brushDecal","svgWidth","svgHeight","xlen","symbolRepeats","attrName","ySum","yId","yIdTotal","xId0","symbolYId","xId1","xId1Total","xSum","top_1","symbolXId","brushSymbol","isAllString","dashValue","isAllNumber","dashValue_1","blockLength","decalVisual","hasItemVisual","assert$1","each$3","isFunction$1","isObject$2","version$1","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_DEFAULT","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_CHART_DATA_CUSTOM","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_BRUSH","PRIORITY_VISUAL_ARIA","PRIORITY_VISUAL_DECAL","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","CHART_ITEM","ARIA","DECAL","IN_MAIN_PROCESS_KEY","OPTION_UPDATED_KEY","STATUS_NEEDS_UPDATE_KEY","ACTION_REG","CONNECT_STATUS_KEY","CONNECT_STATUS_PENDING","CONNECT_STATUS_UPDATING","CONNECT_STATUS_UPDATED","createRegisterEventWithLowercaseECharts","isDisposed","disposedWarning","toLowercaseNameAndCallEventful","createRegisterEventWithLowercaseMessageCenter","MessageCenter","messageCenterProto","updateDirectly","updateMethods","doConvertPixel","doDispatchAction","flushPendingActions","triggerUpdatedEvent","bindRenderedEvent","bindMouseEvent","renderComponents","renderSeries","performPostUpdateFuncs","createExtensionAPI","enableConnect","setTransitionOpt","markStatusToUpdate","applyChangedStates","ECharts","_chartsViews","_chartsMap","_componentsViews","_pendingActions","themeStorage","_dom","defaultRenderer","defaultUseDirtyRect","__ECHARTS__DEFAULT__RENDERER__","devUseDirtyRect","__ECHARTS__DEFAULT__USE_DIRTY_RECT__","_zr","_throttledZrFlush","_coordSysMgr","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_messageCenter","_labelManager","_initEvents","_onframe","remainTime","_model","getDom","notMerge","lazyUpdate","transitionOpt","setTheme","getSvgDataURL","toDataURL","getDataURL","excludeComponents","excludesComponentViews","__viewId","getConnectedDataURL","isSvg","groupId","MAX_NUMBER","connectedGroups","left_1","right_1","bottom_1","canvasList_1","dpr_1","instances$1","chart","getSvgDom","targetCanvas","zr_1","content_1","getSvgRoot","connectedBackgroundColor","convertToPixel","convertFromPixel","containPixel","findResult","containPoint","parsedFinder","MOUSE_EVENT_NAMES","eveName","isGlobalOut","dataModel","eventData","eventActionMap","actionType","DOM_ATTRIBUTE_KEY","_loadingFX","showLoading","hideLoading","loadingEffects","makeActionFromEvent","eventObj","actions","updateLabelLayout","labelManager","isComponent","viewList","viewMap","__alive","doPrepare","requireNewView","viewId","classType","Clazz","__id","__ecComponentInfo","callView","excludeSeriesId","excludeSeriesIdMap","modelId","notBlur","prepareAndUpdate","coordSysMgr","componentDirtyList","componentView","seriesDirtyMap","coordSysList","chartsMap","escapeConnect","actionWrap","actionInfo","cptTypeTmp","cptType","payloads","batched","batch","eventObjBatch","isSelectChange","isStatusChange","batchItem","action","newObj","pendingActions","dispatcher","dirtyList","updateZ","updateStates","__transientTransitionOpt","updateBlend","updateHoverLayerStatus","postUpdateFuncs","applyElementStates","newStates","elCount","preventUsingHoverLayer","preventAutoZ","stateAnimationModel","enableAnimation","class_1","getComponentByElement","modelInfo","updateConnectedChartsStatus","charts","otherChart","action_1","otherCharts_1","transOpt","fromOpt","toOpt","finderOpt","fromResult","toResult","toSeries","dimension","echartsProto","one","wrapped","args2","postInitFuncs","idBase","groupIdBase","init$1","existInstance","getInstanceByDom","clientWidth","clientHeight","postInitFunc","connect","disConnect","disconnect","dispose$1","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","processor","normalizeRegister","registerPostInit","registerPostUpdate","postUpdateFunc","registerAction","registerCoordinateSystem","coordSysCreator","getCoordinateSystemDimensions","getDimensionsInfo","registerLayout","layoutTask","registerVisual","visualTask","targetList","defaultPriority","__raw","registerLoading","loadingFx","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","getMap","registerTransform","dataTool","dataIndexMapValueLength","valNumOrArrLengthMoreThan2","defaultKeyGetter","DataDiffer","oldArr","oldKeyGetter","newKeyGetter","diffMode","_old","_new","_oldKeyGetter","_newKeyGetter","_diffModeMultiple","_add","_update","updateManyToOne","_updateManyToOne","updateOneToMany","_updateOneToMany","_remove","execute","_executeOneToOne","newDataIndexMap","oldDataKeyArr","newDataKeyArr","_initIndexMap","oldKey","newIdxMapVal","newIdxMapValLen","newIdx","_performRestAdd","_executeMultiple","oldDataIndexMap","oldIdxMapVal","oldIdxMapValLen","newKey","idxMapValLen","keyArr","keyGetterName","cbModeMultiple","idxMapVal","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","defaultTooltip","encodeArr","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","encodeTooltip","getDimensionTypeByAxis","axisType","DataDimensionInfo","mathFloor","isObject$3","map$1","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","defaultDimValueGetters","prepareInvertedIndex","getIndicesCtor","prepareStorage","getRawIndexWithoutIndices","getRawIndexWithIndices","getIdNameFromStore","makeIdFromName","normalizeDimensions","validateDimensions","cloneListForMapAndSample","getInitialExtent","setItemDataAndSeriesIndex","transferProperties","List","_rawCount","_storage","_storageArr","_nameList","_idList","_visual","_layout","_itemVisuals","_itemLayouts","_graphicEls","_rawExtent","_extent","_approximateExtent","_calculationInfo","TRANSFERABLE_METHODS","dimensionInfos","invertedIndicesMap","dimInfoInput","dimensionInfo","dimensionName","createInvertedIndices","_nameDimIdx","_nameOrdinalMeta","itemId","_idDimIdx","_idOrdinalMeta","_dimensionInfos","_dimensionsSummary","_invertedIndicesMap","getDimension","getDimensionsOnCoord","mapDimension","dimensionsSummary","initData","nameList","dimValueGetter","notProvider","_rawData","_indices","_dontMakeIdFromName","_nameRepeatCount","defaultDimValueGetter","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","appendValues","values","dimLen","rawExtent","rawExtentArr","storageArr","emptyDataItem","sourceIdx","dimIdx","dimRawExtent","append","dimensionInfoMap","idList","isFormatOriginal","dimStorage","getIndices","newIndices","thisCount","buffer","getByDimIdx","dimStore","getValues","getDataExtent","dimData","initialExtent","currEnd","useRaw","getApproximateExtent","setApproximateExtent","getSum","getMedian","dimDataArray","sortedDimDataArray","invertedIndices","rawIndex","indicesOfNearest","maxDistance","nearestIndices","minDiff","nearestIndicesLen","ctxCompat","fCtx","dimNames","dimIndices","filterSelf","dim0","selectRange","originalCount","quickFinished","dimStorage2","val2","dimk","mapArray","tmpRetValue","retValue","rawExtentOnDim","downSample","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","sampleFrameIdx","lttbDownSample","valueDimension","sampledIndex","currentRawIndex","maxArea","area","nextRawIndex","nextFrameStart","nextFrameEnd","avgX","avgY","frameStart","frameEnd","pointAX","pointAY","otherList","thisList","visual","kvObj","itemVisual","itemVisuals","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","setItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","__wrappedMethods","getDimValueSimply","objectRows","keyedColumns","original","typedArray","chunk","DataCtor","oldStore","oldLen","newStore","excludeDimensions","allDimensions","originalStorage","cloneChunk","originalChunk","childECData","thisECData","nameDimIdx","idDimIdx","nameRepeatCount","nmCnt","completeDimensions","sysDims","dataDimNameMap","coordDimNameMap","getDimCount","dimDefItemRaw","userDimName","encodeDef","encodeDefaulter","encodeDefMap","dataDimsRaw","validDataDims","resultDimIdxOrName","resultDimIdx","applyDim","availDimIdx","sysDimItemRaw","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItem","sysDimItemDimsDefItem","generateCoord","generateCoordCount","fromZero","genName","optDimCount","createDimensions","dimensionsCount","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","fetch","fetchers","cartesian2d","xAxisModel","yAxisModel","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","axisIndex","axisModel","axisDim","enableDataStack","byIndex","stackedCoordDimension","mayStack","stackedByDimInfo","stackedDimInfo","stackedDimCoordDim_1","stackedDimType","stackedDimCoordIndex_1","isCalculationCoord","isDimensionStacked","stackedDim","getStackedDimension","targetDim","createListFromArray","registeredCoordSys","coordSysInfo","coordSysDimDefs","useEncodeDefaulter","dimInfoList","hasNameEncode","categoryAxisModel","getOrdinalMeta","stackCalculationInfo","isNeedCompleteOrdinalData","sampleItem","firstDataNotNull","Scale","setting","_setting","getSetting","unionExtent","unionExtentFromData","getExtent","setExtent","thisExtent","isInExtentRange","isBlank","_isBlank","setBlank","OrdinalMeta","_needCollect","needCollect","_deduplication","deduplication","createByAxisModel","dedplication","getOrdinal","category","_getOrCreateMap","roundNumber","intervalScaleNiceTicks","splitNumber","minInterval","maxInterval","span","intervalPrecision","getIntervalPrecision","niceTickExtent","fixExtent","contain$1","normalize$1","scale$2","OrdinalScale","_ordinalMeta","_categorySortInfo","getCategoryIndex","getTicks","ticks","getMinorTicks","setCategorySortInfo","getCategorySortInfo","beforeSortIndex","displayIndex","ordinalNumber","getLabel","cateogry","niceTicks","niceExtent","roundNumber$1","IntervalScale","_interval","_intervalPrecision","getInterval","setInterval","_niceExtent","expandToNicedExtent","safeLimit","lastNiceTick","minorTicks","nextTick","prevTick","minorTicksGroup","minorInterval","minorTick","dataNum","expandSize","fixMax","fixMin","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","getSeriesStackId","getAxisKey","getLayoutOnAxis","baseAxis","axisKey","bandWidth","getBandWidth","stackId","widthAndOffsets","doCalBarWidthAndOffset","offsetCenter","prepareLayoutBarSeries","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cartesian","cnt","axisMinGaps","valuesInAxis","makeColumnLayout","seriesInfoList","axisExtent","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","columnsMap","seriesInfo","columnsOnAxis","autoWidthCount","categoryGap","stacks","minWidth","categoryGapPercent","columnCount","barGapPercent","autoWidth","column","finalWidth","widthSum","lastColumn","retrieveColumnLayout","barWidthAndOffset","lastStackCoords","columnLayoutInfo","columnOffset","columnWidth","getOtherAxis","barMinHeight","valueDim","baseDim","stacked","isValueAxisH","isHorizontal","valueAxisStart","getValueAxisStart","baseValue","baseCoord","dataToPoint","largeLayout","coordLayout","getRect","valueAxisHorizontal","valueDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","toGlobalCoord","dataToCoord","bisect","TimeScale","settings","_minLevelUnit","labelFormatter","innerTicks","getIntervalTicks","_approxInterval","getFullYear","getMonth","getDate","approxTickNum","scaleIntervalsLen","scaleIntervals","isUnitValueSame","valueA","valueB","dateA","dateB","isSame","isSameYear","isSameMonth","isSameDay","isSameHour","isSameMinute","isSameSecond","isSameMilliSecond","getDateInterval","approxInterval","daysInMonth","getMonthInterval","APPROX_ONE_MONTH","getHourInterval","getMinutesAndSecondsInterval","isMinutes","getMillisecondsInterval","getFirstTimestampOfUnit","unitName","outDate","bottomUnitName","unitNames","iter","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","isDate","dateTime","notAdd","addLevelTicks","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","startTick","endTick","getterName","setterName","levelsTicks","currentLevelTicks","tickCount","lastLevelTickCount","primaryTimeUnit","nextPrimaryTimeUnit","levelTicksRemoveDuplicated","tickValue","targetTickNum","levelsTicksInExtent","maxLevel","scaleProto","intervalScaleProto","getPrecisionSafe$1","roundingErrorFix","mathFloor$1","mathCeil","mathPow$1","mathLog","LogScale","_originalScale","originalScale","originalExtent","powVal","_fixMin","fixRoundingError","_fixMax","originalVal","ScaleRawExtentInfo","_prepareParams","_dataMin","_dataMax","isOrdinal","_isOrdinal","_needCrossZero","getNeedCrossZero","modelMinRaw","_modelMinRaw","_modelMinNum","parseAxisModelMinMax","modelMaxRaw","_modelMaxRaw","_modelMaxNum","_axisDataLen","getCategories","boundaryGap","boundaryGapArr","_boundaryGapInner","dataMin","dataMax","axisDataLen","boundaryGapInner","minFixed","maxFixed","determinedMin","_determinedMin","determinedMax","_determinedMax","modifyDataMinMax","minMaxName","frozen","DATA_MIN_MAX_ATTR","setDeterminedMinMax","DETERMINED_MIN_MAX_ATTR","ensureScaleRawExtentInfo","rawExtentInfo","minMax","getScaleExtent","scaleType","rawExtentResult","barSeriesModels","isBaseAxisAndHasBarSeries_1","adjustedScale","adjustScaleForOverflow","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","extentInfo","createScaleByModel","ifAxisCrossZero","makeLabelFormatter","getLabelModel","categoryTickStart","getAxisRawValue","estimateLabelUnionRect","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","unrotatedSingleRect","singleRect","rotateTextRect","textRect","rotateRadians","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","dataDimMap","unionAxisExtentFromData","seriesExtent","AxisModelCommonMixin","getCoordSysModel","createList","dataStack$1","createScale","mixinAxisModelCommonMethods","helper","EPSILON$3","isAroundEqual$1","contain$2","Region","geometries","cp","exterior","loopGeo","interiors","transformTo","newRegion","decode","json","UTF8Encoding","jsonCompressed","encodeScale","UTF8Scale","geometry","coordinates","decodePolygon","encodeOffsets","coordinate","prevX","prevY","parseGeoJSON","nameProperty","featureObj","region","inner$4","createAxisLabels","makeCategoryLabels","makeRealNumberLabels","createAxisTicks","tickModel","makeCategoryTicks","labelModel","makeCategoryLabelsActually","labels","labelCategoryInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","numericLabelInterval","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","ticksCache","optionTickInterval","tickCategoryInterval","labelsResult","formattedLabel","rawLabel","autoInterval","calculateCategoryInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","getRotate","categoryInterval","onlyTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tickObj","NORMALIZED_EXTENT","Axis","onBand","containData","fixExtentWithBands","coordToData","pointToData","getTicksCoords","getTickModel","ticksCoords","tickVal","alignWithLabel","fixOnBandTicksCoords","getMinorTicksCoords","minorTickModel","minorTicksCoords","getViewLabels","nTick","ticksLen","diffSize","crossLen","shift_1","ticksItem","parseGeoJson","number","format$1","ecUtil","GRAPHIC_KEYS","graphic$1","RELATIONAL_EXPRESSION_OP_ALIAS_MAP","RegExpEvaluator","rVal","condValue","_condVal","RegExp","lVal","ConstConditionInternal","AndConditionInternal","OrConditionInternal","NotConditionInternal","RelationalConditionInternal","needParse","valueParser","getValue","tarValRaw","valueGetterParam","tarValParsed","subCondList","parseOption","exprOption","getters","isObjectNotArray","and","parseAndOrOption","or","not","parseNotOption","parseRelationalOption","subOptionArr","prepareGetValue","exprKeys","parserName","keyRaw","valueGetterAttrMap","condValueRaw","condValueParsed","evaluator","ConditionalExpressionParsed","_cond","parseConditionalExpression","filterTransform","dimLoose","sampleLog","sortTransform","orderExprList","orderDefList","orderExpr","errMsg_1","errMsg_2","comparator","item0","item1","orderDef","LineSeriesModel","legendHoverLink","endLabel","smoothMonotone","showSymbol","showAllSymbol","connectNulls","sampling","getDefaultLabel","labelDims","vals","getDefaultInterpolatedLabel","interpolatedValue","Symbol","seriesScope","updateData","_createSymbol","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","getSymbolSize","disableAnimation","_updateCommon","_sizeX","_sizeY","_seriesModel","emphasisItemStyle","blurItemStyle","selectItemStyle","symbolOffset","hoverScale","emphasisModel","visualColor","pathStyle","symbolInnerColor","liftZ","z2Origin","_z2","useNameLabel","getLabelDefaultText","scaleRatio","setSymbolScale","fadeOut","animationOpt","fadeLabel","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","oldData","symbolUpdateOpt","getSymbolPoint","symbolEl","oldIdx","_getSymbolPoint","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","prepareDataCoordInfo","valueOrigin","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDataOffset","stackResultDim","dataDimsForPoint","getStackedOnPoint","dataCoordInfo","stackedData","supportFloat32Array","Float32ArrayCtor","createFloat32Array","diffData","diffResult","idx1","lineAnimationDiff","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","oldPoints","diffItem","pointAdded","oldIdx2","newIdx2","currentX","currentY","newDataDimsForPoint","oldPt","stackedOnPoint","oldDataDimsForPoint","newPt","newStackedOnPt","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","i2","idx2","stackedOnCurrent","stackedOnNext","mathMin$5","mathMax$5","isPointNull","drawSegment","segLen","allLen","cpx0","cpy0","tmpK","ratioNextSeg","nextCpx0","nextCpy0","lenPrevSeg","lenNextSeg","ECPolylineShape","ECPolyline","getPointOn","xOrY","isDimX","nRoot","t_1","ECPolygonShape","ECPolygon","stackedOnPoints","stackedOnSmooth","createGridClipPath","hasAnimation","getArea","isAxisInversed","duringCb","createPolarClipPath","sectorArea","isRadial","createClipPath","isCoordinateSystemType","isPointsSame","points1","points2","bboxFromPoints","minX","minY","getBoundingDiff","min1","max1","getSmooth","getStackedOnPoints","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","nextPt","stepPt2","getVisualGradient","visualMetaList","visualMeta","getAxis","stops","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","getIsIgnoreFunc","isAuto","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","availSize","isPointNull$1","getLastIndexNotNull","getPointAtIndex","getIndexRange","prevIndex","nextIndex","createLineClipPath","lineView","endLabelModel_1","showEndLabel","valueAnimation_1","data_1","labelAnimationRecord_1","lastFrameIndex","clipRect","_endLabelOnDuring","_endLabel","originalX","originalY","getEndLabelStateSpecified","endLabelModel","isBaseInversed","LineView","lineGroup","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","_polyline","_polygon","isAreaChart","isIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","_step","_initSymbolLabelAnimation","_newPolyline","_newPolygon","_initOrUpdateEndLabel","_stackedOnPoints","_points","_doUpdateAnimation","lineJoin","emphasisLineStyle","stackedOnSeries","changePolyState","_changePolyState","_valueOrigin","isHorizontalOrRadial","isAxisInverse","seriesDuration","seriesDalay","seriesDalayValue","polarClip","pointToCoord","gridClip","ratio","data_2","animationRecord","dataIndexRange","endValue","__points","updatedDataInfo","diffStatus","ptIdx","pointsLayout","forceStoreInTypedArray","useTypedArray","dimInfo0","dimInfo1","dimIdx0","dimIdx1","tmpIn","tmpOut","samplers","average","nearest","indexSampler","dataSample","sampler","nameLocation","nameRotate","nameTruncate","nameTextStyle","triggerEvent","onZero","onZeroAxisIndex","axisTick","showMinLabel","showMaxLabel","primary","logBase","axisDefault","AXIS_TYPES","axisModelCreator","BaseAxisModelClass","extraDefaultOption","AxisModel","getAxisType","thisOption","__ordinalMeta","CartesianAxisModel","extraOption","categorySortInfo","PI$6","AxisBuilder","nameDirection","tickDirection","labelDirection","handleAutoShown","transformGroup","_transformGroup","hasBuilder","builders","getGroup","innerTextLayout","axisRotation","textRotation","rotationDiff","makeAxisEventDataBase","isLabelSilent","tooltipOpt","shown","arrows","arrowSize","arrowOffset","symbolWidth_1","symbolHeight_1","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","gapSignal","isNameLocationCenter","labelLayout","nameRotation","axisNameAvailableWidth","endTextLayout","truncateOpt","nameTruncateMaxWidth","formatterParams","__fullText","targetType","textRotate","onLeft","tickEls","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","lastTick","ignoreEl","isTwoLabelOverlapped","firstRect","nextRect","mRotationBack","createTicks","tickTransform","tickEndCoord","tickLineStyle","anidPrefix","tickCoord","tickEl","minorTickLineStyle","minorTicksEls","axisLabelShow","labelMargin","labelRotation","rawCategoryData","itemLabelModel","rawCategoryItem","collect","axesInfo","seriesInvolved","coordSysAxesInfo","coordSysMap","collectAxesInfo","collectSeriesInfo","globalTooltipModel","globalAxisPointerModel","linksOption","linkGroups","axisPointerEnabled","coordSysKey","makeKey","axesInfoInCoordSys","coordSysModel","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","cross","tooltipAxes","baseAxes","otherAxes","fromTooltip","triggerTooltip","axisPointerModel","axisPointerShow","isHandleTrigger","makeAxisPointerModel","snap","involveSeries","axisInfo","useHandle","linkGroup","groupIndex","getLinkGroupIndex","mapper","tooltipAxisPointerModel","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","seriesTooltipTrigger","seriesTooltipShow","seriesDataCount","linkOption","checkPropInLink","linkPropValue","axisPropValue","fixValue","getAxisInfo","getAxisPointerModel","axisPointerClazz","AxisView","axisPointerClass","_doUpdateAxisPointerClass","updateAxisPointer","_axisPointer","_disposeAxisPointer","forceRender","getAxisPointerClass","registerAxisPointerClass","layout$1","gridModel","grid","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","axisPosition","rectBound","axisOffset","posBound","onZeroCoord","dirMap","labelInside","isCartesian2DSeries","findAxisModels","axisModelMap","inner$5","rectCoordAxisBuildSplitArea","axisView","axisGroup","splitAreaModel","areaColors","gridRect","areaColorsLen","lastSplitAreaColors","splitAreaColors","newSplitAreaColors","colorIndex","cIndex","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","axisBuilder","elementType","cartesians","getCartesians","otherAxisType","axisElementBuilders","splitLineModel","lineColors","minorSplitLineModel","CartesianXAxisView","CartesianYAxisView","seriesModelMap","seriesRecords","axisRecordMap","prepareDataExtentOnAxis","calculateFilteredExtent","shrinkAxisExtent","axesModelMap","xAxis","yAxis","xRawExtentInfo","yRawExtentInfo","prepareAxisRecord","condExtent","seriesRecord","xAxisRecord","yAxisRecord","condDimMap","tarDimMap","condAxis","tarAxisRecord","addCondition","axisRecord","addTarget","condDims","tarDims","tarDimExtents","initExtent","condDimsLen","tarDimsLen","singleCondDim","singleTarDim","condVal","tarDimExtent","tarAxisExtent","tarExtent","GridModel","containLabel","GridView","Cartesian","_dimList","addAxis","cartesian2DDimensions","canCalculateAffineTransform","Cartesian2D","calcAffineTransform","_transform","_invTransform","xAxisScale","yAxisScale","xScaleExtent","yScaleExtent","xScaleSpan","yScaleSpan","translateX","translateY","axisX","axisY","toLocalCoord","xVal","yVal","clampData","xScale","yScale","xAxisExtent","yAxisExtent","xExtent","getGlobalExtent","yExtent","Axis2D","coordExtent","Grid","_coordsMap","_coordsList","_axesMap","_axesList","_initCartesian","axesMap","_updateScale","onZeroRecords","fixAxisOnZero","ignoreContainLabel","boxLayoutParams","isContainLabel","axesList","adjustAxes","labelUnionRect","updateAxisTransform","axesMapOnDim","getCartesian","xAxisIndex","yAxisIndex","coordList","_findConvertTarget","coordsList","axisPositionUsed","axesCount","createAxisCreator","isAxisUsedInTheGrid","otherAxis","grids","otherAxisDim","canOnZeroToAxis","getOnZeroRecordKey","coordBase","axisExtentSum","BaseBarSeriesModel","getMarkerPosition","offsetIndex","barMinAngle","largeThreshold","progressiveChunkMode","BarSeriesModel","brushSelector","selectors","roundCap","showBackground","realtimeSort","SausageShape","SausagePath","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","lessThanCircle","BAR_BORDER_WIDTH_QUERY","BAR_BORDER_RADIUS_QUERY","_eventPos","mathMax$6","mathMin$6","getClipArea","coordSysClipArea","expandWidth","BarView","_isFirstFrame","removeOnRenderedListener","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","_clear","_updateLargeClip","_incrementalRenderLarge","isLargeDraw","animationModel","axis2DModel","_initSort","_onRendered","_updateSort","needsClip","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","isInitSort","isChangeOrder","createBackground","bgLayout","bgEl","createBackgroundEl","isClipped","elementCreator","updateStyle","updateRealtimeAnimation","newIndex","oldIndex","createBackgroundShape","bgGroup","_backgroundGroup","createLarge","_removeBackground","_dataSort","mappedValue","_isDataOrderChanged","oldOrder","oldCount","lastValue","isOrderChanged","newOrder","axisId","sortInfo","coordSysBoundingRect","signWidth","signHeight","clipped","signR","__dataIndex","animateProperty","sector","sectorShape","animateTarget","seriesTarget","axisTarget","fixedLineWidth","getLineWidth","signX","signY","isZeroOnPolar","isPolar","labelPositionOutside","rawLayout","LagePathShape","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","setLargeStyle","largePathUpdateDataIndex","largePath","largePathFindDataIndex","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","barBaseVal","barValueVal","ElementClz","createListSimply","dimensionsInfo","LegendVisualProvider","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","containName","dataWithEncodedVisual","PieSeriesModel","legendVisualProvider","_defaultLabelLine","labelLineNormalOpt","labelLineEmphasisOpt","minAngle","minShowLabelAngle","selectedOffset","percentPrecision","stillShowZeroSum","bleedMargin","distanceToLabelLine","avoidLabelOverlap","animationTypeUpdate","RADIAN","adjustSingleSide","viewLeft","viewTop","farthestX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","rA","rA2","recalculateX","items","topSemi","bottomSemi","labelAlignTo","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","rightmostX","isPositionCenter","isAlignToEdge","realTextWidth","targetTextWidth","pieLabelLayout","hasLabelRotate","minShowLabelRadian","setNotShow","isLabelShown","labelLineLen","labelLineLen2","midAngle","isLabelInside","notShowLabel","getSectorCornerRadius","PiePiece","firstCreate","_updateLabel","visualOpacity","PieView","sectorGroup","_sectorGroup","piePiece","itemLayout","PI2$8","RADIAN$1","getViewRect","pieLayout","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","angle_1","layout_1","layout_2","dataFilter","legendModels","ScatterSeriesModel","BOOST_SIZE_THRESHOLD","LargeSymbolPathShape","LargeSymbolPath","symbolProxy","symbolProxyShape","canBoost","softClipShape","findDataIndex","LargeSymbolDraw","_incremental","_setCommon","endIndex","byteOffset","_clearIncremental","isIncremental","extrudeShadow","ecData_1","ScatterView","_updateSymbolDraw","_getClipShape","clipArea","IndicatorAxis","radiusExtent","Radar","radarModel","_indicatorAxes","getIndicatorModels","indicatorModel","indicatorAxis","getIndicatorAxes","indicatorIndex","coordToPoint","minRadianDiff","closestAxis","closestAxisIdx","viewSize","indicatorAxes","radarSeries","increaseInterval","fixedMin","fixedMax","nicedSplitNumber","pixel","radarList","valueAxisDefault","defaultsShow","RadarModel","showName","nameFormatter","indicatorModels","indicatorOpt","iNameTextStyle","innerIndicatorOpt","indName","_indicatorModels","indicator","axisBuilderAttrs$1","RadarView","_buildAxes","_buildSplitLineAndArea","axisBuilders","showSplitLine","showSplitArea","splitLineColors","splitLineColorsArr","splitAreaColorsArr","splitLines","splitAreas","getColorIndex","areaOrLine","areaOrLineColorList","ticksRadius","realSplitNumber_1","axesTicksPoints","prevPoints","RadarSeriesModel","nameToDisplay","getTooltipPosition","radarIndex","normalizeSymbolSize","RadarView$1","createSymbol$1","updateSymbols","symbolGroup","__dimIdx","getInitialPoints","itemGroup","polygonIgnore","stateIgnore","itemHoverStyle","pathEmphasisState","radarLayout","isValidPoint","getValueMissingPoint","firstPoint","radarBackwardCompat","polarOptArr","polarNotRadar_1","polarOpt","polarIndex","geoCoord","points$1","fixNanhai","coordsOffsetMap","fixTextCoords","coordFix","geoCoordMap","fixGeoCoords","points$2","fixDiaoyuIsland","inner$6","geoJSONLoader","load","mapRecord","parsed","regionName","specialArea","getBoundingRect$1","regionRect","inner$7","geoSVGLoader","originRoot","buildGraphic","makeGraphic","hostKey","rootMap","originRootHostKey","removeGraphic","loaders","geoSourceManager","regionsMap","nameCoordMap","mapRecords","singleSource","results","mapNotExistsError","MapSeries","needsDrawMap","seriesGroup","getRegion","dataNameMap","toAppendNames","name_2","getMapType","getHostGeoModel","geoIndex","getRegionModel","seriesNames","otherIndex","originalData","setZoom","setCenter","aspectScale","showLegendSymbol","boundingCoords","scaleLimit","areaColor","ATTR","take","resourceKey","userKey","getStore","release","uKey","isTaken","RoamController","mousedownHandler","_mousedownHandler","mousemoveHandler","_mousemoveHandler","mouseupHandler","_mouseupHandler","mousewheelHandler","_mousewheelHandler","pinchHandler","_pinchHandler","controlType","_opt","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","isDragging","_dragging","isPinching","_pinching","setPointerChecker","pointerChecker","isAvailableBehavior","oldX","oldY","newX","newY","shouldZoom","shouldMove","absWheelDeltaDelta","factor","checkPointerAndTrigger","absDelta","scrollDelta","controller","behaviorToCheck","contollerEvent","updateViewOnPan","controllerHost","updateViewOnZoom","zoomDelta","zoomX","zoomY","zoomLimit","newZoom","zoomMin","zoomMax","zoomScale","IRRELEVANT_EXCLUDES","onIrrelevantElement","targetCoordSysModel","getFixedItemStyle","MapDraw","_controller","_controllerHost","_regionsGroup","mapOrGeoModel","fromView","isGeo","mapSeries","_updateBackground","regionsGroup","transformInfo","getTransformInfo","isFirstDraw","targetScaleX","targetScaleY","roamTransform","isVisualEncodedByVisualMap","regionGroup","compoundPath","regionModel","itemStyleModel","emphasisItemStyleModel","blurItemStyleModel","selectItemStyleModel","rawScaleX","rawScaleY","rawX","rawY","transformPoint","interior","points_1","showLabel","isDataNaN","centerPt","regionModel_1","groupRegions","__regions","_updateController","_updateMapSelectHandler","_mapName","getZoom","makeActionBase","_mouseDownFlag","getViewRectAfterRoam","mapDraw","MapView","mapModel","_mapDraw","_renderSymbols","originalDataIndex","fullData","mainSeries","fullIndex_1","updateCenterAndZoom","previousZoom","getCenter","fixX","fixY","v2ApplyTransform","View","_roamTransformable","_rawTransformable","setViewRect","_viewRect","rawTransform","_updateTransform","centerCoord","_center","_updateCenterAndZoom","_zoom","getDefaultCenter","rawRect","getRoamTransform","rawTransformMatrix","defaultCenter","roamTransformable","rawTransformable","_rawTransform","noRoam","getCoordSys","Geo","invertLongitute","_nameCoordMap","_regionsMap","_invertLongitute","containCoord","getRegionByCoord","addGeoCoord","getGeoCoord","getCoordSys$1","geoModel","resizeGeo","leftTop","rightBottom","centerOption","sizeOption","useCenterAndSize","boxLayoutOption","setGeoCoords","GeoCreator","geoList","mapModelGroupBySeries","nameMapList","singleMapSeries","getFilledRegions","originRegionArr","regionsArr","geoCreator","mapSymbolLayout","processedMapType","mapSymbolOffsets","subMapSeries","dataStatistics","datas","statisticType","mapKey","mapDataStatistic","seriesGroups","hostGeoModel","seriesList","inner$8","linkList","datasAttr","linkAll","transferInjection","cloneShallowInjection","changeInjection","isMainData","linkSingle","struct","structAttr","TreeNode","hostTree","depth","viewChildren","isExpand","isRemoved","eachNode","suppressVisitSub","updateDepthAndHeight","getNodeById","contains","getAncestors","includeSelf","getAncestorsIndices","currNode","getDescendantIndices","childNode","getLevelModel","levelModels","isAncestorOf","isDescendantOf","Tree","_nodes","getNodeByDataIndex","clearLayouts","createTree","dataRoot","beforeLink","listData","dimMax","buildHierarchy","dataNode","addChild","TreeSeriesModel","leavesModel","nodeData","treeDepth","expandAndCollapse","expandTreeDepth","initialTreeDepth","collapsed","getOrient","realRoot","edgeShape","edgeForkPosition","roam","nodeScaleRatio","curveness","init$2","inRoot","hierNode","defaultAncestor","prelim","modifier","change","thread","firstWalk","separation","siblings","subtreeW","executeShifts","midPoint","apportion","secondWalk","nodeX","defaultSeparation","radialCoordinate","getViewRect$1","subtreeV","nodeOutRight","nodeInRight","nodeOutLeft","nodeInLeft","sumOutRight","sumInRight","sumOutLeft","sumInLeft","nextRight","nextLeft","moveSubtree","nextAncestor","wl","wr","node1","node2","TreeEdgeShape","parentPoint","childPoints","TreePath","childLen","firstChildPos","lastChildPos","forkDim","forkPosition","tmpPoint","TreeView","_mainGroup","layoutInfo","_updateViewCoordSys","symbolNeedsDraw$1","updateNode","removeNode","_nodeScaleRatio","_updateNodeAndLinkScale","oldMin","_min","oldMax","_max","viewCoordSys","nodeScale","_getNodeGlobalScale","groupZoom","roamZoom","virtualRoot","sourceSymbolEl","sourceLayout","sourceOldLayout","__oldX","__oldY","__radialOldRawX","__radialOldRawY","targetLayout","__radialRawX","__radialRawY","rootLayout","isLeft","labelRotateRadian","focusDataIndices","drawEdge","__edge","parentEl","curvature","getEdgeShape","childLayout","removeAnimationOpt","sourceEdge","layoutOpt","radialCoor1","radialCoor2","radialCoor3","radialCoor4","eachAfter","eachBefore","treeLayout","commonLayout","separation$1","tx_1","kx_1","ky_1","coorX_1","coorY_1","finalCoor","orient_1","treeVisual","retrieveTargetInfo","validPayloadTypes","targetNode","targetNodeId","getPathToRoot","aboveViewRoot","viewRoot","viewPath","wrapTreePathInfo","treePathInfo","nodeDataIndex","enableAriaDecalForTree","decalPaletteScope","TreemapSeriesModel","completeTreeValue","designatedVisualItemStyle","designatedVisualModel","setDefault","levelDefine","levelModel","resetViewRoot","setLayoutInfo","mapIdToIndex","idIndexMap","_idIndexMap","_idIndexMapCount","getViewRoot","_viewRoot","enableAriaDecal","clipWindow","squareRatio","leafDepth","drillDownIcon","zoomToNodeRatio","nodeClick","emptyItemWidth","upperLabel","colorAlpha","colorSaturation","gapWidth","borderColorSaturation","visualDimension","visualMin","visualMax","colorMappingBy","visibleMin","childrenVisibleMin","childValue","thisValue","globalColorList","globalDecalList","hasColorDefine","hasDecalDefine","modelColor","modelDecal","level0","TEXT_PADDING","ITEM_GAP","ARRAY_LENGTH","Breadcrumb","containerGroup","onSelect","thisGroup","normalStyleModel","layoutParam","totalWidth","renderList","_prepare","_renderContent","itemWidth","availableSize","itemNode","makeItemPoints","onclick","packEventData","itemHeight","selfType","AnimationWrap","_elExistsMap","_finishedCallback","checkTerminate","createWrap","Group$1","Rect$1","DRAG_THRESHOLD","PATH_LABEL_NOAMAL","PATH_UPPERLABEL_NORMAL","Z_BASE","Z_BG","Z_CONTENT","getStateItemStyle","getItemStyleNormal","inner$9","TreemapView","_state","createStorage","_oldTree","thisStorage","reRoot","rootNodeGroup","nodeGroup","_giveContainerGroup","renderResult","_doRender","_doAnimation","renderFinally","_resetController","_renderBreadcrumb","_containerGroup","thisTree","oldTree","lastsForAnimation","oldStorage","willInvisibleEls","doRenderNode","thisNode","oldNode","renderNode","dualTravel","willDeleteEls","clearStorage","thisViewChildren","oldViewChildren","sameTree","processNode","storageName","delEls","willDelete","els","durationOption","easingOption","animationWrap","innerStore","nodeWidth","nodeHeight","targetX","targetY","oldShape","fadein","_onPan","_onZoom","_clearController","rootRect","mouseX","mouseY","findTarget","isLeafRoot","_rootToNode","_zoomToNode","linkTarget","_breadcrumb","background","thisLayout","nodeModel","isInView","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","upperHeight","isParent","itemStyleNormalModel","itemStyleEmphasisModel","itemStyleBlurModel","itemStyleSelectModel","giveGraphic","isAboveViewRoot","bg","renderBackground","upperLabelHeight","renderContent","useUpperLabel","processInvisible","visualBorderColor","selectStyle","upperLabelWidth","prepareText","nodeStyle","upperLabelRect","iconChar","isShow","addDrillDownIcon","textEmphasisState","lasts","prepareAnimationWhenHasOld","calculateZ","prepareAnimationWhenNoOld","lastCfg","parentOldX","parentOldY","parentOldBg","zInLevel","zb","noop$1","actionTypes","i$1","handleRootToNode","originViewRoot","each$4","isObject$4","CATEGORY_DEFAULT_VISUAL_INDEX","VisualMapping","mappingMethod","_normalizeData","normalizers","visualHandler","applyVisual","getColorMapper","_normalizedToVisual","normalizeVisualRange","preprocessForPiecewise","preprocessForSpecifiedCategory","mapValueToVisual","normalized","getNormalizer","listVisualTypes","isValidType","eachVisual","mapVisual","isPrimary","newVisual","newVal","retrieveVisuals","hasVisual","prepareVisualTypes","visualTypes","types_1","type1","type2","dependsOn","visualType1","visualType2","findPieceIndex","pieceList","findClosestWhenOutside","possibleI","pieceValue","updatePossible","piece","newAbs","makeApplyVisual","isNormalized","doMapCategory","returnRGBArray","parsedVisual","piecewise","getSpecifiedVisual","fixed","doMapFixed","colorHue","makePartialColorVisualHandler","colorLightness","createNormalizedToNumericVisual","setter","symbolCfg","doMapToArray","hasSpecialVisual","originIndex","categoryMap","cate","visualArr_1","setVisualToOption","visualArr","doNotNeedPair","applyValue","colorChannel","sourceExtent","pieceIndex","ITEM_STYLE_NORMAL","inner$a","treemapVisual","travelTree","designatedVisual","viewRootAncestors","nodeLayout","nodeItemStyleModel","visuals","buildVisuals","thisNodeColor","calculateColor","calculateBorderColor","mapping_1","buildVisualMapping","childVisual","visualName","getValueVisualDefine","rangeVisual","getRangeVisual","mapping","drColorMappingBy","childVisuals","mappingType","mathMax$7","mathMin$7","each$5","PATH_BORDER_WIDTH","PATH_GAP_WIDTH","PATH_UPPER_LABEL_SHOW","PATH_UPPER_LABEL_HEIGHT","treemapLayout","seriesOption","viewAbovePath","rootSize","estimateRootSize","sort_1","viewRootLayout_1","squarify","treeRoot","calculateRootPosition","prunning","hideChildren","halfGapWidth","getUpperLabelHeight","layoutOffset","layoutOffsetUpper","totalArea","initChildren","rowFixedLength","best","worst","orderBy","overLeafDepth","sort$1","statistic","filterByThreshold","orderedChildren","deletePoint","areaMax","areaMin","squareArea","idx0WhenH","idx1WhenH","xy","rowOtherLength","rowLen","wh1","remain","modWH","wh0","defaultSize","viewArea","currNodeValue","defaultPosition","targetCenter","nodeInViewAbovePath","childClipRect","generateNodeKey","Graph","directed","_nodesMap","_edgesMap","_directed","isDirected","addNode","nodesMap","GraphNode","hostGraph","getNodeByIndex","addEdge","n1","n2","edgesMap","GraphEdge","outEdges","inEdges","getEdgeByIndex","getEdge","eachEdge","breadthFirstTraverse","startNode","edgeType","__visited","queue","currentNode","otherNode","degree","inDegree","outDegree","getAdjacentDataIndices","adjacentEdge","createGraphDataProxyMixin","hostName","dataName","getGraphicEl","createGraphFromNodeEdge","linkNameList","validEdges","linkCount","coordSysCtor","KEY_DELIMITER","getAutoCurvenessParams","createCurveness","appendLength","autoCurvenessParmas","curvenessList","__curvenessList","getKeyOfEdges","getOppositeKey","getEdgeFromMap","__edgeMap","getTotalLengthBetweenNodes","getEdgeMapLengthWithKey","lenV","edgeMap","initCurvenessList","createEdgeMapForCurveness","oppositeEdges","isForward","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","edgeIndex","totalLen","curKey","parityCorrection","oppositeKey","resValue","GraphSeriesModel","getCategoriesData","_categoriesData","_updateCategoriesData","categoriesModels","_categoriesModels","categoryIdx","categoryModel","oldGetModel","newGetModel","newPathArr","getGraph","getEdgeData","sourceName","nodeMarkup","categoriesData","circular","rotateLabel","initLayout","repulsion","gravity","friction","edgeLength","layoutAnimation","edgeSymbol","edgeSymbolSize","edgeLabel","straightLineProto","bezierCurveProto","StraightLineShape","CurveShape","isStraightLine","ECLinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","lineData","symbolSizeArr","__specifiedRotation","createLine","setLinePoints","Line$1","_createLine","_updateCommonStl","getLinePath","blurLineStyle","selectLineStyle","lineState","lineStateStyle","stateStyle","labelNormalModel","__align","__verticalAlign","__position","__labelDistance","linePath","symbolFrom","symbolTo","invScale","fromPos","toPos","setSymbolRotation","specifiedRotation","tangent","distanceX","distanceY","halfPercent","LineDraw","LineCtor","_LineCtor","lineDraw","oldLineData","_lineData","makeSeriesScope$1","_doUpdate","isEffectObject","lineNeedsDraw","newLineData","isPointNaN","pts","getNodeGlobalScale","v3","v2DistSquare","mathAbs$2","intersectCurveCircle","curvePoints","radiusSquare","nextDiff","adjustEdge","tmp0","quadraticSubdivide$1","pts2","fromSymbol","toSymbol","__original","originalPoints","isViewCoordSys","GraphView","_lineDraw","_firstRender","groupNewProp","_layoutTimeout","forceLayout","_startForceLayoutIteration","warmUp","_layouting","setFixed","setUnfixed","circularRotateLabel","categoryFilter","graphSeries","categoryNames","categoryVisual","paletteScope","categoryNameIdxMap","symbolVisualList","symbolVisual","categoryStyle","visualList","normalize$2","graphEdgeVisual","simpleLayout","simpleLayoutEdge","graphSimpleLayout","PI$7","_symbolRadiansHalf","circularLayout","basedOn","_layoutNodesBasedOn","x12","y12","unitAngle","radianHalf","sumRadian","symbolRadianHalf","halfRemainRadian","graphCircularLayout","scaleAndAdd$1","inNodes","pp","initialFriction","beforeStepCallback","afterStepCallback","beforeStep","afterStep","v12","nLen","ignoreForceLayout","repFact","rep","graphForceLayout","preservedPoints_1","preservedPoints","graph_1","nodeData_1","forceModel","nodeDataExtent_1","edgeDataExtent_1","repulsionArr_1","edgeLengthArr_1","nodes_1","edgeModel","forceInstance","getViewRect$2","createViewCoordSys","coordSysType","positions","bbWidth","bbHeight","GaugeSeriesModel","icon","PointerShape","PointerPath","parsePosition","formatLabel","PI2$9","GaugeView","colorList","posInfo","_renderMain","axisLineModel","MainPath","showAxis","axisLineWidth","angleRangeSpan","prevEndAngle","getColor","_renderTicks","_renderTitleAndDetail","_renderAnchor","_renderPointer","minVal","maxVal","subSplitNumber","splitLineLen","tickLen","subStep","splitLineStyle","splitLineDistance","autoColor","tickLine","oldProgressData","_progressEls","progressList","showPointer","progressModel","showProgress","valueExtent","angleExtent","createPointer","pointerModel","pointerWidth","pointerLength","pointerStr","pointerOffset","pointerKeepAspect","createProgress","ProgressPath","isOverlap","progressWidth","isClip","previousPointer","previousRotate","previousProgress","previousEndAngle","anchorModel","showAnchor","anchorSize","anchorType","anchorKeepAspect","contentGroup","newTitleEls","newDetailEls","_titleEls","_detailEls","itemTitleModel","titleOffsetCenter","titleX","titleY","labelEl","itemDetailModel","detailOffsetCenter","detailX","detailY","detailColor","formatter_1","FunnelSeriesModel","minSize","funnelAlign","opacityAccessPath","FunnelPiece","FunnelView","funnelPiece","getViewRect$3","getSortedIndices","isAscending","funnelLayout","sizeExtent","itemSize","getLinePoints","val_1","parallelPreprocessor","createParallelIfNeeded","mergeAxisOptionFromParallel","hasParallelSeries","parallelAxis","axisOption","parallelIndex","parallelOption","ParallelAxis","sliderMove","handleEnds","handleIndex","minSpan","maxSpan","restrict","handleSpan","originalDistSign","getSpanSign","extentMinSpan","realExtent","currDistSign","each$6","mathMin$8","mathMax$8","mathFloor$2","mathCeil$1","round$2","PI$8","Parallel","_axesLayout","_updateAxesFromSeries","_makeLayoutInfo","axisBase","layoutBase","pixelDimIndex","pAxis","pLayout","layoutLength","_layoutAxes","layoutExtent","axisCount","axisExpandWidth","restrict$1","axisExpandCount","axisExpandable","axisExpandWindow","winSize","axisExpandCenter","axisCollapseWidth","winInnerIndices","axisExpandWindow0Pos","layoutAxisWithExpand","layoutAxisWithoutExpand","positionTable","horizontal","vertical","rotationTable","axisCoordToPoint","eachActiveState","dataDimensions","axisModels","hasActiveSet","hasAxisBrushed","activeState","getActiveState","axisLayout","getAxisLayout","getSlidedAxisExpandWindow","behavior","pointCoord","triggerArea","useJump","winSize2","create$2","ParallelAxisModel","activeIntervals","getAreaSelectStyle","setActiveIntervals","intervals","defaultOption$1","areaSelectStyle","realtime","ParallelModel","_initDimensions","setAxisExpand","axisExpandRate","axisExpandDebounce","axisExpandSlideTriggerArea","axisExpandTriggerOn","actionInfo$1","parallelAxisModel","BRUSH_PANEL_GLOBAL","mathMin$9","mathMax$9","mathPow$2","COVER_Z","UNSELECT_THRESHOLD","MIN_RESIZE_LINE_WIDTH","MUTEX_RESOURCE_KEY","DIRECTION_MAP","CURSOR_MAP","ne","sw","nw","se","DEFAULT_BRUSH_OPT","transformable","brushMode","removeOnClick","baseUID","BrushController","_covers","_handlers","_uid","pointerHandlers","enableBrush","brushOption","_mounted","_brushType","_doDisableBrush","brushType","_doEnableBrush","_enableGlobalPan","_brushOption","setPanels","panelOpts","panels_1","_panels","panelId","enableGlobalPan","updateCovers","coverConfigList","coverConfig","tmpIdPrefix","oldCovers","newCovers","creatingCover","_creatingCover","oldGetKey","addOrUpdate","cover","__brushOption","newBrushInternal","endCreating","createCover","updateCoverAfterCreation","unmount","clearCovers","coverRenderers","coverRenderer","getCoverRenderer","updateCoverShape","updateCommon","getPanelByPoint","localCursorPoint","panels","panel","pn","isTargetByCursor","getPanelByCover","covers","originalLength","trigger$1","areas","isEnd","shouldShowCover","getTrackEnds","createBaseRectCover","rectRangeConverter","edgeNameSequences","makeStyle","driftRect","ondragend","nameSequence","updateBaseRect","localRange","handleSize","xa","ya","x2a","y2a","widtha","heighta","updateRectShape","mainEl","globalDir","getGlobalDirection1","getGlobalDirection2","pointsToRect","clipByPanel","formatRectRange","getTransform$1","localDirName","inverseMap","localDirNameSeq","dirNameSequence","rectRange","toRectRange","localDelta","toLocalDelta","dirName","ind","fromRectRange","driftPolygon","localD","localZero","xmin","ymin","xmax","ymax","resetCursor","isOutsideZrArea","currPanel","rawE","mainShapeContain","updateCoverByMouse","_creatingPanel","thisBrushOption","eventParams","determineBrushType","coverBrushOption","getCreatingRange","defaultBrushType","handleDragEnd","getLineRenderer","returnInput","localTrack","ends","xyIndex","otherExtent","getLinearBrushOtherExtent","makeRectPanelClipPath","normalizeRect","localPoints","makeLinearBrushOtherExtent","specifiedXYIndex","brushWidth","makeRectIsTargetByCursor","targetModel","elementList","ParallelAxisView","_brushController","_onBrush","fromAxisAreaSelect","areaWidth","builderOpt","_refreshBrushController","extentLen","getCoverInfoList","eventParam","coverInfoList","coverInfo","parallelAxisId","CLICK_THRESHOLD","ParallelView","handlers","_throttledDispatchExpand","_dispatchExpand","checkTrigger","_mouseDownPoint","mouseDownPoint","triggerOn","ParallelSeriesModel","makeDefaultEncode","getRawIndicesByActiveState","theActiveState","inactiveOpacity","activeOpacity","dataDimIndex","convertDimNameToNumber","DEFAULT_SMOOTH","ParallelView$1","_dataGroup","dataGroup","makeSeriesScope$2","newDataIndex","addEl","updateElCommon","oldDataIndex","createLinePoints","createGridClipShape","isEmptyValue","opacityAccessPath$1","parallelVisual","opacityMap","active","inactive","itemOpacity","SankeySeriesModel","nodeDepth","setNodePosition","localPosition","localX","localY","rawDataOpt","edgeValue","edgeName","nodeValue","nodeGap","layoutIterations","nodeAlign","SankeyPathShape","SankeyPath","SankeyView","_focusAdjacencyDisabled","sankeyView","curve","n1Layout","node1Model","dragX1","dragY1","n2Layout","node2Model","dragX2","dragY2","edgeLayout","sourceColor","targetColor","dragX","dragY","createGridClipShape$1","sankeyLayout","getViewRect$4","computeNodeValues","filteredNodes","iterations","layoutSankey","computeNodeBreadths","computeNodeDepths","computeEdgeDepths","getEdgeValue","nodeRawValue","remainEdges","indegreeArr","zeroIndegrees","nextTargetNode","maxNodeDepth","isItemDepth","edgeIdx","indexEdge","nodeIndex","maxDepth","adjustNodeWithNodeAlign","kx","scaleNodeBreadths","isNodeDepth","nextSourceNode","remainNodes","skNodeHeight","moveSinksRight","nodesByBreadth","prepareNodesByBreadth","initializeNodeDepth","resolveCollisions","relaxRightToLeft","relaxLeftToRight","keyAttr","groupResult","minKy","ky","nodeDy","edgeDy","nodeDyAttr","weightedTarget","centerTarget","center$1","nodeY","weightedSource","centerSource","sankeyVisual","minValue_1","maxValue_1","mapValueToColor","customColor","WhiskerBoxCommonMixin","xAxisType","yAxisType","addOrdinal","coordDims","baseAxisDimIndex","_baseAxisDim","baseAxisType","newOptionData_1","newItem","defaultValueDimensions","BoxplotSeriesModel","boxWidth","BoxplotView","constDim","createNormalBox","updateNormalBoxData","BoxPathShape","BoxPath","transInit","initBaseline","boxplotVisual","each$7","boxplotLayout","groupSeriesByAxis","groupItem","calculateBase","layoutSingleSeries","boxOffsetList","boxWidthList","axisList","seriesCount","boundList","maxDataCount_1","boxWidthBound","availableWidth","boxGap","halfWidth","cDimIdx","vDimIdx","cDim","vDims","axisDimVal","median","getPoint","end1","end2","end4","end5","addBodyEnd","layEndLine","point1","point2","endCenter","prepareBoxplotData","boxData","outliers","boundIQR","useExtreme","ascList","Q1","Q2","Q3","bound","low","high","itemNameFormatter","outlier","boxplotTransform","CandlestickSeriesModel","getShadowDim","brushRect","SKIP_PROPS","CandlestickView","_incrementalRenderNormal","isSimpleBox","isNormalBoxClipped","createNormalBox$1","setBoxCommon","createLarge$1","NormalBoxPathShape","NormalBoxPath","__simpleBox","transInit$1","LargeBoxPathShape","LargeBoxPath","__sign","elP","elN","setLargeStyle$1","candlestickPreprocessor","seriesItem","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","candlestickVisual","getBorderColor","isLargeRender","LargeArr$1","candlestickLayout","candleWidth","calculateCandleWidth","openDim","closeDim","lowestDim","highestDim","largeProgress","normalProgress","openVal","closeVal","lowestVal","highestVal","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","getSign","makeBrushRect","pmin","pmax","EffectScatterSeriesModel","effectType","showEffectOn","rippleEffect","period","EFFECT_RIPPLE_NUMBER","normalizeSymbolSize$1","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","ripplePath","EffectSymbol","stopEffectAnimation","startEffectAnimation","effectOffset","rippleScale","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","EffectScatterView","effectSymbolDraw","_updateGroupTransform","Uint32Arr","Float64Arr","compatEc2","coords","fromName","toName","LinesSeriesModel","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","_getCoordsFromItemModel","getLineCoordsCount","getLineCoords","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","CoordSys","effect","constantSpeed","trailLength","EffectLine","_updateEffectSymbol","effectModel","_symbolScale","_updateEffectAnimation","delayExpr","_updateAnimationPoints","_getLineLength","_period","delayNum","__t","_updateSymbolPosition","__p1","__cp1","__p2","quadraticDerivativeAt$1","__lastT","Polyline$1","_createPolyline","hoverLineStyle","lineEmphasisState","EffectPolyline","accLenArr","_length","_offsets","offsets","LargeLinesPathShape","LargeLinesPath","LargeLineDraw","lineEl","linesLayout","isPolyline","isLarge","lineCoords","totalCoordsCount","LinesView","_updateLineDraw","_lastZlevel","_showEffect","notInIndividual_1","otherSeriesModel","hasEffect","_hasEffet","_isPolyline","normalize$3","linesVisual","HeatmapSeriesModel","blurSize","pointSize","maxOpacity","minOpacity","GRADIENT_LEVELS","HeatmapLayer","_gradientPixels","inRange","outOfRange","colorFunc","isInRange","_getBrush","gradientInRange","_getGradient","gradientOutOfRange","imageData","getImageData","pixels","pixelLen","diffOpacity","gradientOffset","putImageData","brushCanvas","_brushCanvas","gradientPixels","pixelsSingleState","Uint8ClampedArray","getIsInPiecewiseRange","dataSpan","getIsInContinuousRange","isGeoCoordSys","HeatmapView","visualMapOfThisSeries","eachTargetSeries","targetSeries","_incrementalDisplayable","_renderOnCartesianAndCalendar","_renderOnGeo","dataDimX","dataDimY","dataToRect","contentShape","visualMapModel","inRangeVisuals","targetVisuals","outOfRangeVisuals","hmLayer","_hmLayer","lng","lat","getPieceList","PictorialBarSeriesModel","symbolPosition","symbolMargin","symbolRepeat","symbolRepeatDirection","symbolClip","symbolBoundingData","symbolPatternSize","BAR_BORDER_WIDTH_QUERY$1","LAYOUT_ATTRS","posDesc","pathForLineWidth","PictorialBarView","coordSysRect","ecSize","coordSysExtent","categoryDim","symbolMeta","getSymbolMeta","createBar","updateCommon$1","pictorialShapeStr","getShapeStr","__pictorialShapeStr","updateBar","__pictorialSymbolMeta","removeBar","prepareBarLength","prepareSymbolSize","boundingLength","pxSign","prepareLineWidth","symbolScale","prepareLayoutInfo","valueLineWidth","repeatCutLength","outputSymbolMeta","zeroPx","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","categorySize","parsedSymbolSize","unitLength","pathLen","absBoundingLength","hasEndGap","symbolMarginNumeric","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","mDiff","sizeFix","pathPosition","bundlePosition","barRectShape","createPath","createOrUpdateRepeatSymbols","bundle","__pictorialBundle","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","updateAttr","makeTarget","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","pathes","immediateAttrs","animationAttrs","barPositionOutside","times","roundedTimes","SingleAxis","Single","_axis","_adjustAxis","_updateAxisTransform","extentSum","getCoordSys$2","singleModel","create$3","singles","layout$2","positionMap","directionMap","axisBuilderAttrs$2","selfBuilderAttrs$1","SingleAxisView","axisElementBuilders$1","SingleAxisModel","findPointFromSeries","isStacked","inner$b","axisTrigger","currTrigger","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputPayload","showValueMap","dataByCoordSys","updaters","showTooltip","coordSysContainsPoint","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","srcAxisInfo","srcKey","srcValItem","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","noSnap","outputFinder","payloadInfo","buildPayloadsBySeries","payloadBatch","snapToValue","seriesNestestValue","getAxisTooltipData","nestestValue","coordSysItem","coordSysId","coordSysIndex","coordSysMainType","dataByAxis","valueLabelOpt","seriesDataIndices","outputAxesInfo","valItem","tooltipOption","highDownKey","lastHighlights","newHighlights","toHighlight","toDownplay","inner$c","each$8","initGlobalListeners","initialized","useHandler","doEnter","onLeave","dis","makeDispatchAction","dispatchTooltipFinally","pendings","showLen","showTip","hideLen","hideTip","actuallyPayload","unregister","AxisPointerView","inner$d","clone$3","bind$1","BaseAxisPointer","_axisModel","_axisPointerModel","_lastValue","_lastStatus","_group","handle","_handle","elOption","makeElOption","graphicKey","_lastGraphicKey","moveAnimation","_moveAnimation","determineAnimation","createPointerEl","createLabelEl","doUpdateProps","updateProps$1","updatePointerEl","updateLabelEl","updateMandatoryProps","_renderHandle","isCategoryAxis","useSnap","pointerOption","pointerEl","updateLabelShowHide","updateHandleTransform","handleModel","onmousemove","onmousedown","_onHandleDragMove","_onHandleDragEnd","_moveHandleToValue","getHandleTransProps","getHandleTransform","trans","_payloadInfo","lastProp","_doDispatchAxisPointer","cursorPoint","buildLabel","xDimIndex","propsEqual","lastProps","equals_1","buildElStyle","axisPointerType","buildLabelElOption","labelPos","getValueLabel","paddings","confineInContainer","bgColor","params_1","axisDimension","seriesData","idxItem","getTransformedPosition","buildCartesianSingleLabelElOption","textLayout","makeLineShape","makeRectShape","makeSectorShape","CartesianAxisPointer","pixelValue","elStyle","pointerShapeBuilder","currPosition","cursorOtherValue","tooltipOptions","getAxisDimIndex","shadow","AxisPointerModel","shadowStyle","XY","WH","SingleAxisPointer","getPointDimIndex","pointerShapeBuilder$1","DATA_NAME_INDEX","ThemeRiverSeriesModel","fixData","rawDataLength","timeValueKeys","layerData","dataList","layerNum","timeValue","filterData","getLayerSeries","lenCount","indexArr","timeDim","layerSeries","index1","index2","nearestIdx","pointNum","theValue","singleAxisIndex","ThemeRiverView","layersSeries","keyGetter","dataDiffer","_layersSeries","newLayersGroups","process","oldLayersGroups","points0","layerGroup","createGridClipShape$2","themeRiverLayout","doThemeRiverLayout","layerPoints","singleLayer","computeBaseline","baseLine","baseY0","layerIndex","sums","temp","SunburstSeriesModel","completeTreeValue$1","renderLabelForZeroData","DEFAULT_SECTOR_Z","DEFAULT_TEXT_Z","SunburstPiece","_ecModel","labelMinAngle","isNormalShown","labelStateModel","isShown","getLabelAttr","sectorState","labelColor","labelPadding","rotateType","stateAttr","ROOT_TO_NODE_ACTION","HIGHLIGHT_ACTION","handleHighlight","UNHIGHLIGHT_ACTION","SunburstView","newRoot","newChildren","oldChildren","_oldChildren","renderRollUp","newNode","virtualPiece","targetFound","RADIAN$2","sunburstLayout","rootDepth","initChildren$1","renderRollupNode","rPerLevel","rStart","rEnd","siblingAngle_1","sortOrder","sort$2","sortTargets","isAsc_1","sunburstVisual","pickColor","treeHeight","dataToCoordSize","dataSize","halfSize","cartesianPrepareCustom","dataToCoordSize$1","geoPrepareCustom","dataToCoordSize$2","singlePrepareCustom","dataToCoordSize$3","polarPrepareCustom","radiusAxis","getRadiusAxis","angleAxis","getAngleAxis","dataToRadius","dataToAngle","calendarPrepareCustom","rangeInfo","getRangeInfo","cellWidth","getCellWidth","cellHeight","getCellHeight","weeks","dayCount","allDay","deprecatedLogs","isEC4CompatibleStyle","elType","hasOwnTextContentOption","hasOwnTextConfig","legacy","convertFromEC4CompatibleStyle","hostStyle","srcStyle","textContentStyle","hasOwnPos","textDistance","convertEC4CompatibleRichItem","richItem","textStrokeWidth","textLineHeight","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","convertToEC4StyleForCustomSerise","itemStl","txStl","txCfg","hostFill","convertToEC4RichItem","textFillNotSet","warnDeprecated","deprecated","insteadApproach","inner$e","TRANSFORM_PROPS","transformPropNamesStr","STYLE_VISUAL_TYPE","NON_STYLE_VISUAL_PROPS","EMPHASIS","NORMAL","BLUR","SELECT","STATES","PATH_ITEM_STYLE","PATH_LABEL","GROUP_DIFF_PREFIX","attachedTxInfoTmp","LEGACY_TRANSFORM_PROPS","tmpTransformable","prepareCustoms","CustomSeriesModel","currentZLevel","currentZ","CustomSeriesView","customSeries","renderItem","makeRenderItem","doRemoveEl","createOrUpdateItem","morphPreparation_1","MorphPreparation","createGetKey","findAndAddFrom","hasFrom","removeElementDirectly","applyMorphing","oldIndices","newLen","setIncrementalAndHoverLayer","elementName","diffByDimName","createEl","graphicType","getPathData","customPathData","customImagePath","customGraphicType","updateElNormal","isMorphTo","styleOpt","attachedTxInfo","isTextContent","transFromProps","allPropsFinal","elDisplayable","prepareShapeOrExtraTransitionFrom","prepareShapeOrExtraAllPropsFinal","prepareTransformTransitionFrom","prepareTransformAllPropsFinal","txCfgOpt","textOptionStyle","decalPattern","decalObj","isPath$1","__decalPattern","prepareStyleTransitionFrom","applyPropsFinal","applyTransitionFrom","originalDecalObj","userDuring","cfgDuringCall","duringCall","mainAttr","morphFromEl","attrOpt","elPropsInAttr","transFromPropsInAttr","enterFrom","enterFromKeys","transitionKeys","elVal","checkNonStyleTansitionRefer","elPropsInAttrKeys","isNonStyleTransitionEnabled","leaveTo","leaveToProps","getOrCreateLeaveToPropsFromEl","leaveToPropsInAttr","leaveToKeys","allProps","allPropsInAttr","keysInAttr","checkTransformPropRefer","fromTransformable","calcOldElLocalTransformBasedOnNewElParent","setTransformPropToTransitionFrom","setLagecyTransformProp","setTransformProp","fromEl","fromElStyle","transFromStyleProps","animationStyleProps","styleKeys","leaveToStyleProps","newEl","tmpM","oldGlobalTransform","newParent","optVal","usedIn","innerEl","tmpDuringScope","customDuringAPI","assertNotReserved","isShapeDirty","getShape","isStyleDirty","setExtra","getExtra","newstUserDuring","scopeUserDuring","updateElOnState","elStateOpt","isRoot","existingEmphasisState","updateZ$1","optZ2","updateZForEachState","retrieveStateOption","targetProps","legacyName","legacyArr","xyName","transitionFrom","userAPI","ordinalRawValue","styleEmphasis","barLayout","currentSeriesIndices","userParams","dataInsideLength","wrapEncodeDef","currDataIndexInside","currItemModel","currItemStyleModels","currLabelModels","seriesItemStyleModels","seriesLabelModels","getItemStyleModel","userProps","preFetchFromExtra","applyUserPropsAfter","style_1","morphPreparation","doCreateOrUpdateEl","toBeReplacedIdx","doesElNeedRecreate","elIsNewCreated","canMorph","morph","thisElIsMorphTo","conOpt","isLegacy","doCreateOrUpdateAttachedTx","doCreateOrUpdateClipPath","pendingAllPropsFinal","addTo","otherStateOpt","otherStyleOpt","retrieveStyleOptionOnState","mergeChildren","elInner","elOptionType","elOptionShape","elOptionStyle","hasOwnPathData","clipPathOpt","processTxInfo","txConOptNormal","txConOptEmphasis","txConOptBlur","txConOptSelect","txConStlOptNormal","txConOptOtherState","stateOpt","txConOpt","convertResult","txConOptNormal_1","stateOptionNormal","stateOption","$mergeChildren","byName","diffChildrenByName","diffGroupChildren","processAddUpdate","processRemove","childOption","_fromList","_toList","_toElOptionList","_allPropsFinalList","_toDataIndices","_morphConfigList","_transOpt","_type","fromList","toList","toListLen","fromListLen","toIdx","_oneToOneForSingleTo","fromSingleSegLen","fromIdxStart","fromCount","_manyToOneForSingleTo","toSingleSegLen","toIdxStart","fromIdx","toCount","_oneToManyForSingleFrom","toElOption","toDataIndex","elAnimationConfig","_getOrCreateMorphConfig","morphDuration","combineResult","copyPropsWhenDivided","_processResultIndividuals","morphFrom","combineFromList","separateToList","separateResult","combineSeparateResult","isSeparate","fromIndividual","toIndividual","morphConfigList","delayOption","srcPath","tarPath","willClone","getSeriesStackId$1","getAxisKey$1","barLayoutPolar","calRadialBar","clampLayout","radiusSpan","angleSpan","PolarModel","foundAxisModel","PolarAxisModel","AngleAxisModel","RadiusAxisModel","angleAxisExtraOption","radiusAxisExtraOption","RadiusAxis","radiusToData","inner$f","AngleAxis","angleToData","Polar","_radiusAxis","_angleAxis","maxAngle","getCoordSys$3","resizePolar","parsedRadius","updatePolarScale","isAngleAxisModel","setAxis","polarCreator","polarList","elementList$1","getAxisLineShape","rExtent","getRadiusIdx","fixAngleOverlap","firstItem","lastItem","AngleAxisView","ticksAngles","minorTickAngles","angelAxisElementsBuilders","rId","r0Id","tickAngleItem","tickAngles","commonLabelModel","labelTextAlign","labelTextVerticalAlign","prevAngle","axisBuilderAttrs$3","selfBuilderAttrs$2","RadiusAxisView","newAxisGroup","axisAngle","layoutAxis","axisElementBuilders$2","prevRadius","PolarAxisPointer","coordValue","pointerShapeBuilder$2","getLabelPosition","GeoView","_handleRegionClick","updateSelectStatus","geoId","GeoModel","_optionModelMap","optionModelMap","regionOpt","unSelect","toggleSelected","makeAction","PROXIMATE_ONE_DAY","Calendar","calendarModel","_rangeInfo","_sw","_sh","_orient","getFirstDayOfWeek","_firstDayOfWeek","getDateInfo","mStr","dStr","getDay","formatedDate","getNextNDay","setDate","_lineWidth","_getRangeInfo","_initRangeOption","whNames","cellSize","getCellSize","layoutParams","cellNumbers","cellSizeSpecified","whGlobal","calendarRect","dayInfo","week","nthWeek","pointToDate","tl","tr","br","bl","nthX","nthY","_getDateByWeeksAndDay","getCoordSys$4","normalizedRange","rangeStr","firstDay","setMonth","parsedRange","reversed","startDateNum","endDateNum","dateNum","fweek","lweek","nthDay","calendarList","calendarSeries","CalendarModel","mergeAndNormalizeLayoutParams","raw","cellSizeArr","MONTH_TEXT","EN","CN","WEEK_TEXT","CalendarView","rangeData","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","sh","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","addPoints","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","rs","poyline","parsedDate","tmpD","_formatterLabel","_yearTextPositionControl","aligns","xc","yc","posPoints","yearText","_monthTextPositionControl","isCenter","vAlign","termPoints","firstDayPoints","yyyy","yy","MM","monthText","_weekTextPositionControl","isStart","firstDayOfWeek","weekText","inner$g","_nonShapeGraphicElements","graphicOption","elements","GraphicComponentModel","existList","flattenedList","_flatten","elOptionsToUpdate","_elOptionsToUpdate","newElOption","setKeyInfoToNewElOption","mergeNewElOptionToExist","setLayoutInfoToExist","$action","optionList","parentOption","useElOptionsToUpdate","GraphicComponentView","_elMap","graphicModel","_lastGraphicModel","_updateElements","_relocate","rootGroup","elExisting","parentId","targetElParent","textContentOption","elOptionCleaned","getCleanedElOption","createEl$1","removeEl","textContentExisting","__ecGraphicWidthOption","__ecGraphicHeightOption","setEventData","elOptions","apiWidth","apiHeight","isParentRoot","parentElInner","__ecGraphicWidth","__ecGraphicHeight","containerInfo","bounding","__ecGraphicId","existElParent","isSetLoc","isSet","existElOption","newElParentOption","newElOptCopy","newType","existItem","existingGroupOpt","newGroupOpt","ToolboxFeature","registerFeature","getFeature","ToolboxModel","featureName","Feature","itemGap","showTitle","layout$3","viewportSize","makeBackground","ToolboxView","toolboxModel","featureOpts","_features","featureNames","_featureNames","processFeature","featureModel","newTitle","isUserFeatureName","unusable","createIconPaths","setIconStatus","iconName","iconPaths","iconStatus","iconStyleModel","iconStyleEmphasisModel","icons","getIcons","titles","iconsMap","titlesMap","tooltipModel","__title","hoverStyle","defaultTextPosition","titleText","emphasisTextConfig","emphasisTextState","emphasisTextStyle","needPutOnTop","topOffset","SaveAsImage","MouseEvent","$a","download","evt","bubbles","cancelable","dispatchEvent","msSaveOrOpenBlob","bstr","atob","u8arr","Uint8Array","blob","Blob","tab","write","INNER_STACK_KEYWORD","radioTypes","MagicType","availableIcons","seriesOptGenreator","generateNewSeriesTypes","newSeriesOpt","radio","currentType","isStack","BLOCK_SPLITER","ITEM_SPLITER","groupSeries","seriesGroupByCategoryAxis","otherSeries","meta","assembleSeriesWithCategoryAxis","groups","tables","headers","columns","assembleOtherSeries","getContentFromModel","trim$1","isTSVFormat","firstLine","itemSplitRegex","parseTSVContents","tsv","tsvLines","parseListContents","hasName","parseContents","blockMetaList","blockMeta","DataView","viewMain","textarea","optionToContent","contentToOption","htmlOrDom","readOnly","buttonContainer","buttonStyle","closeButton","refreshButton","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","tryMergeDataOption","newValIsObject","shouldDeleteName","newSeriesOptList","COORD_CONVERTS","INCLUDE_FINDER_MAIN_TYPES","BrushTargetManager","_targetInfoList","foundCpts","parseFinder$1","targetInfoBuilders","include","setOutputRanges","matchOutputRanges","coordRange","coordRanges","coordConvert","__rangeOffset","diffProcessor","xyMinMax","findTargetInfo","coordSyses","setInputRanges","rangeOffset","getScales","makePanelOpts","getDefaultBrushType","getPanelRect","controlSeries","targetInfoList","areaPanelId","targetInfoMatchers","formatMinMax","xAxisModels","yAxisModels","gridModels","gridModelMap","xAxesHas","yAxesHas","panelRectBuilders","xAxisDeclared","yAxisDeclared","geoModels","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","axisDiffProcessor","refer","scales","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","getSize","sizeOrigin","each$9","inner$h","newSnapshot","storedSnapshots","getStoreSnapshots","dataZoomId","snapshot","dataZoomModel","percentRange","getPercentRange","clear$1","snapshots","DATA_ZOOM_AXIS_DIMENSIONS","SERIES_COORDS","isCoordSupported","coordType","getAxisMainType","findEffectedDataZooms","axisRecords","effectedModels","effectedModelMap","addToEffected","foundNewLink","processSingle","isLinked","markAxisControlled","isLink","eachTargetAxis","axisIdxArr","collectReferCoordSysModelInfo","coordSysInfoWrap","infoList","infoMap","coordSysUid","DataZoomAxisInfo","indexList","indexMap","axisCmptIdx","DataZoomModel","_autoThrottle","_noTarget","_rangePropMode","inputRawOption","retrieveRawOption","settledOption","_doInit","_setDefaultThrottle","_updateRangeUse","_resetTarget","optionOrient","targetAxisIndexMap","_targetAxisInfoMap","hasAxisSpecified","_fillSpecifiedTargetAxis","_makeAutoOrientByTargetAxis","_fillAutoTargetAxisByOrient","refering","needAuto","setParallelAxis","gridModel_1","axModel","globalOption","rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","noTarget","getFirstTargetAxisModel","firstAxisModel","getAxisProxy","getAxisModel","__dzAxisProxy","setRawRange","setCalculatedRange","axisProxy","findRepresentativeAxisProxy","getDataPercentWindow","getValueRange","getDataValueWindow","firstProxy","axisDimList","hostedBy","getRangePropMode","filterMode","DataZoomView","SelectDataZoomModel","SelectDataZoomView","each$a","asc$1","AxisProxy","_dimName","_axisIndex","_dataZoomModel","_valueWindow","_percentWindow","getTargetSeriesModels","axisMainType","getMinMaxSpan","_minMaxSpan","calculateDataWindow","_dataExtent","percentExtent","percentWindow","valueWindow","hasPropModeValue","boundPercent","boundValue","spans","restrictSet","fromWindow","toWindow","fromExtent","toExtent","toValue","suffix","calculateDataExtent","_updateMinMaxSpan","dataWindow","_setAxisModel","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","minMaxSpan","percentSpan","valueSpan","eachAxisModel","proxyList","valueRange","each$b","DATA_ZOOM_ID_BASE","DataZoomFeature","brushController","updateZoomBtnStatus","updateBackBtnStatus","handlers$1","brushTargetManager","makeAxisFinder","setBatch","_dispatchZoomAction","findDataZoom","minValueSpan","maxValueSpan","dzModel","nextActive","isZoomActive","dataZoomSelectActive","dzFeatureModel","xAxisId","yAxisId","zoomActive","dzOptions","finderResult","buildInternalOptions","axisIndexPropName","$fromToolbox","RestoreOption","TooltipModel","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","transitionDuration","enterable","shouldTooltipConfine","confineOption","vendors","gCssText","mirrorPos","assembleArrow","arrowPosition","arrowPos","positionStyle","transformStyle","vendorPrefix","styleCss","assembleTransition","onlyFade","transitionCurve","transitionText","assembleFont","assembleCssText","enableTransition","boxShadow","borderName","camelCase","makeStyleCoord","appendToBody","zrPainter","zrViewportRoot","body","viewportRootOffset","TooltipHTMLContent","_show","_styleCoord","_enterable","_firstShow","_longHide","_appendToBody","_container","onmouseenter","_hideTimeout","_inContent","onmouseleave","hideLater","_hideDelay","currentStyle","_moveIfResized","className","nearPointColor","_longHideTimeout","styleCoord","offsetHeight","pointerEvents","setContent","setEnterable","ratioX","ratioY","visibility","getOuterSize","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","TooltipRichContent","makeStyleCoord$1","shadowOuterSize","calcShadowOuterSize","mathMaxWith0","bind$2","each$c","parsePercent$3","proxyRect","TooltipView","_renderMode","_tooltipContent","_tooltipModel","_alwaysShowContent","tooltipContent","_initGlobalListener","_keepShow","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","manuallyShowTip","_lastDataByCoordSys","makeDispatchAction$1","_ticket","_manuallyAxisShowTip","pointInfo","manuallyHideTip","tooltipCascadedModel","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","singleTooltipModel","cbParamsList","articleMarkup","markupTextArrLegacy","itemCoordSys","axisItem","axisValue","axisValueLabel","axisSectionMarkup","cbParams","seriesTooltipResult","positionExpr","builtMarkupText","blockBreak","allMarkupText","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","tooltipTrigger","asyncTicket","subTooltipModel","defaultHtml","nearPoint","_getNearestPoint","params0","isTimeAxis","cbTicket","tooltipDataParams","contentSize","boxLayoutPosition","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","indexAxis","lastIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","gapH","gapV","domWidth","domHeight","rectWidth","rectHeight","DEFAULT_TOOLBOX_BTNS","brushPreprocessor","brushComponents","brushComponentSpecifiedBtns","brushOpt","tbs","toolboxFeature","toolboxBrush","brushTypes","removeDuplicate","flag","each$d","hasKeys","createVisualMappings","stateList","supplementVisualOption","visualMappings","mappings","createMappings","visualData","mappingOption","__hidden","__alphaForOpacity","Creater","replaceVisualOption","getValueState","visualTypesMap","eachItem","valueOrIndex","rawDataItem","valueState","incrementalApplyVisual","makeBrushCommonSelectorForSeries","getLineSelectors","inLineRange","layoutRange","STATE_LIST","DISPATCH_METHOD","DISPATCH_FLAG","PRIORITY_BRUSH","layoutCovers","brushModel","brushSelected","throttleDelay","setBrushOption","brushIndex","thisBrushSelected","brushId","brushName","brushLink","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","boundingRectBuilders","selectableArea","linkOthers","brushed","rangeInfoList","stepAParallel","stepAOthers","brushModelNotControll","checkInRange","seriesBrushSelected","doDispatch","getBoundingRectFromMinMax","rg","DEFAULT_OUT_OF_BRUSH_COLOR","BrushModel","inBrush","outOfBrush","setAreas","generateBrushOption","BrushView","$from","ICON_TYPES","BrushFeature","isBrushed","_brushMode","command","TitleModel","subtext","subtarget","TitleView","titleModel","subtextStyleModel","subText","subTextEl","sublink","groupRect","alignStyle","timelinePreprocessor","compatibleEC2","ec2Types","transferItem","controlPosition","itemStyleEmphasis","labelNormal","excludeLabelAttr","currentIndex","setCurrentIndex","isIndexMax","setPlayState","playState","TimelineModel","_initData","autoPlay","getPlayState","dataArr","_names","processedDataArr","rewind","playInterval","SliderTimelineModel","checkpointStyle","showPlayBtn","showPrevBtn","showNextBtn","playIcon","stopIcon","nextIcon","prevIcon","prevBtnSize","nextBtnSize","TimelineView","TimelineAxis","PI$9","labelDataIndexStore","SliderTimelineView","layoutInfo_1","mainGroup_1","_createGroup","labelGroup","axis_1","_createAxis","_renderAxisLabel","_position","_doPlayStop","_updateTicksStatus","_clearTimer","labelPosOpt","getViewRect$5","parsedLabelPos","labelAlignMap","labelBaselineMap","rotationMap","mainLength","controlModel","showControl","controlSize","controlGap","sizePlusGap","playPosition","prevBtnPosition","nextBtnPosition","labelAlign","labelBaseline","mainGroup","_labelGroup","rotateOriginX","rotateOriginY","viewBound","getBound","mainBound","labelBound","mainPosition","labelsPosition","mainBoundIdx","toBound","targetGroup","boundIdx","createScaleByModel$1","newGroup","_renderAxisLine","progressLine","_progressLine","_currentPointer","_renderAxisTick","_tickSymbols","hoverStyleModel","progressStyleModel","symbolOpt","_changeTimeline","giveSymbol","_tickLabels","hoverLabelModel","progressLabelModel","_renderControl","makeBtn","_handlePlayClick","willRotate","iconSize","btn","makeControlIcon","_renderCurrentPointer","me","onCreate","_handlePointerDrag","_handlePointerDragend","pointerMoveTo","onUpdate","nextState","_pointerChangeTimeline","mousePos","toCoord","_toAxisCoord","targetDataIndex","_findNearestTick","_timer","axisCoord","tickSymbols","tickLabels","objPath","fillLabel","inner$i","MarkerModel","createdBySelf","hostSeries","__hostSeries","markerOpt","markerModel","createMarkerModelFromSeries","getMarkerModelFromSeries","MarkPointModel","masterMarkerModel","hasXOrY","hasXAndY","markerTypeCalculatorWithExtent","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","calcDataDim","numCalculate","coordArrValue","markerTypeCalculator","dataTransform","getAxisInfo$1","coordInfo","baseDataDim","valueDataDim","valueIndex","dataDimToCoordDim","dataFilter$1","sum_1","count_1","inner$j","MarkerView","markerGroupMap","markKeep","drawGroup","seriesModelList","updateMarkerLayout","xPx","yPx","MarkPointView","markPointModel","mpModel","symbolDrawMap","createList$1","coordDimsInfos","dataOpt","MarkLineModel","inner$k","markLineTransform","mlModel","itemArray","mlType","mlFrom","mlTo","normalizedItem","isInifinity","ifMarkLineHasOnlyDim","fromCoord","otherDimIndex","markLineFilter","updateSingleMarkerEndLayout","MarkLineView","markLineModel","mlData_1","fromData_1","toData_1","lineDrawMap","createList$2","fromData","toData","updateDataVisualAndLayout","fromSymbolRotate","fromSymbolSize","toSymbolRotate","toSymbolSize","optData","dimValueGetter$1","MarkAreaModel","inner$l","markAreaTransform","maModel","ltCoord","rbCoord","isInifinity$1","ifMarkAreaHasOnlyDim","markAreaFilter","getSingleMarkerEndPoint","dimPermutations","MarkAreaView","markAreaModel","areaData_1","areaGroupMap","polygonGroup","areaData","createList$3","xValue","yValue","getDefaultSelectorOptions","LegendModel","_updateSelector","_updateData","legendData","hasSelected","potentialData","availableNames","isPotential","_availableNames","allSelect","inverseSelect","inactiveColor","inactiveBorderColor","selectorLabel","selectorPosition","selectorItemGap","selectorButtonGap","legendSelectActionHandler","isToggleSelect","legendModel","isItemSelected","curry$1","each$e","Group$2","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","isFirstRender","resetInner","itemAlign","renderInner","mainRect","layoutInner","_backgroundEl","legendDrawnMap","selectMode","legendSymbolType","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","_createSelector","selectorGroup","createSelectorButton","selectorItem","emphasisLabelModel","legendModelItemStyle","itemIcon","legendGlobalTooltipModel","setSymbolStyle","legendSymbolCenter","hitRect","legendIndex","__legendDataIndex","contentRect","contentPos","selectorRect","selectorPos","orientIdx","hw","yx","isUseHoverLayer","legendFilter","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","mergeAndNormalizeLayoutParams$1","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","Group$3","WH$1","XY$1","ScrollableLegendView","_currentIndex","_controllerGroup","__rectSize","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","processMaxSize","_layoutContentAndController","controllerRect","showController","_showController","containerPos","controllerPos","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","legendId","canJump","pageText","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","itemRect","itemInfo","winStart","defaultIndex","legendDataIdx","SliderZoomModel","handleIcon","moveHandleSize","moveHandleIcon","showDetail","showDataShadow","zoomLock","brushSelect","Rect$2","DEFAULT_LOCATION_EDGE_GAP","DEFAULT_FRAME_BORDER_WIDTH","DEFAULT_FILLER_SIZE","DEFAULT_MOVE_HANDLE_SIZE","HORIZONTAL","VERTICAL","LABEL_GAP","SHOW_DATA_SHADOW_SERIES_TYPE","REALTIME_ANIMATION_CONFIG","SliderZoomView","_onBrushEnd","_buildView","_updateView","_brushing","_resetLocation","_resetInterval","barGroup","sliderGroup","_renderDataShadow","_positionGroup","showMoveHandle","coordRect","_findCoordRect","_location","_size","targetAxisModel","otherAxisInverse","_dataShadowInfo","_getViewExtent","clickPanel","_onClickPanel","_onBrushStart","_prepareDataShadowInfo","dataShadowSegs","otherDataExtent","otherOffset","otherShadowExtent","thisShadowExtent","areaPoints","thisCoord","stride","lastIsEmpty","otherCoord","createDataShadowGroup","isSelectedArea","thisAxis","getOtherDim","thisDim","handles","handleLabels","filler","_onDragMove","_onDragEnd","onmouseover","_showDataInfo","onmouseout","bRect","_handleHeight","_handleWidth","handleColor","actualMoveZone","moveHandleHeight","moveHandle_1","moveHandle","moveZoneExpandSize","moveZone","ondragstart","_range","viewExtent","_handleEnds","_updateInterval","viewExtend","lastRange","nonRealtime","displaybles","handleInterval","handleHeight","segIntervals","segGroup","_updateDataInfo","dataInterval","_formatLabel","orderedHandleEnds","setLabel","barTransform","textPoint","labelPrecision","valueStr","showOrHide","changed","localPoint","_brushStart","_brushStartTime","brushShape","brushEndTime","_updateBrushRect","brushStart","endPoint","coordSysInfoList","InsideZoomModel","disabled","inner$m","apiInner","coordSysRecordMap","coordSysRecord","dataZoomInfoMap","dzReferCoordSysWrap","dzCoordSysInfo","createCoordSysRecord","dzReferCoordSysInfo","getRange","firstDzInfo","firstDzKey","disposeCoordSysRecord","controllerParams","mergeControllerParams","containsPoint","setViewInfoToCoordSysRecord","dzInfo","disposeCoordSysRecordIfNeeded","coordSysKeyArr","dzUid","dispatchAction$1","typePriority","dataZoomInfo","oneType","InsideZoomView","pan","getRangeHandlers","scrollMove","directionInfo","getDirectionInfo","percentPoint","signal","pixelStart","pixelLength","makeMover","getPercentDelta","percentDelta","oldPoint","newPoint","each$f","visualMapPreprocessor","has$1","pieces","splitList","calculable","VISUAL_PRIORITY","isTargetSeries","getDataDimension","getVisualMeta","getColorVisual","concreteDim","resultVisual","visualDefault","defaultOption$2","mapVisual$1","isArray$1","each$g","asc$2","linearMap$1","VisualMapModel","replacableOptionKeys","dataBound","controllerVisuals","resetItemSize","completeVisualOption","resetVisual","getTargetSeriesIndices","optionSeriesIndex","is","formatValueText","edgeSymbols","isMinMax","textValue","resetExtent","optDim","listDimensions","completeSingle","completeInactive","completeController","stateExist","stateAbsent","optExist","optAbsent","defa","symbolExists","symbolSizeExists","max_1","setSelected","getSelected","contentColor","textGap","DEFAULT_BAR_BOUND","ContinuousModel","_resetRange","auto","findTargetDataIndices","oVals","getColorStopValues","iVals","setStop","iIdx","oIdx","iLen","oLen","stopsLen","hoverLink","indicatorIcon","indicatorSize","indicatorStyle","stopValues","VisualMapView","autoPositionValues","doRender","getControllerVisual","visualCluster","forceState","visualObj","visualMapping","convertOpacityToAlpha","positionGroup","paramsSet","getItemAlign","modelOption","realIndex","reals","fakeValue","layoutInput","rParam","makeHighDownBatch","linearMap$2","each$h","mathMin$a","mathMax$a","HOVER_LINK_SIZE","HOVER_LINK_OUT","ContinuousView","_shapes","_dataInterval","_hoverLinkDataIndices","_useHandle","_renderBar","dataRangeText","_renderEndsText","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","endsIndex","shapes","_createBarGroup","gradientBarGroup","createPolygon","getCursor$1","_dragHandle","textSize","handleThumbs","handleLabelPoints","_createHandle","_createIndicator","onDrift","onDragEnd","handleThumb","handleLabel","handleLabelPoint","indicatorLabel","indicatorLabelPoint","_firstShowIndicator","_hideIndicator","visualMapId","_hovering","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","barColor","barPoints","_updateHandle","_makeColorGradient","symbolSizes","_createBarPoints","handlesColor","sampleNumber","currValue","_showIndicator","cursorValue","rangeSymbol","halfHoverLinkSize","oldIndicatorPos","indicatorNewProps","labelNewProps","_hoverLinkFromSeriesMouseOver","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","getHalfHoverLinkSize","hoverRange","oldBatch","newBatch","resultBatches","_dispatchHighDown","hoverLinkDataSize","hoverLinkOnHandle","actionInfo$2","PiecewiseModel","_pieceList","_mode","_determineMode","resetMethods","_resetSelected","visualTypesInPieces","exists","getSelectedMapKey","hasSel_1","pIdx","getRepresentValue","representValue","pieceInterval","minOpen","maxOpen","itemSymbol","outPieceList","splitStep","normalizeReverse","pieceListItem","closeList","infinityList","useMinMax","PiecewiseVisualMapView","_getItemAlign","viewData","_getViewData","endsText","viewPieceList","_onItemClick","_enableHoverLink","indexInModelPieceList","_createItemSymbol","visualState","onHoverLink","shapeParam","DEFAULT_OPTION","inner$n","ariaVisual","ariaModel","setDecal","decalModel","useDecal","paletteScopeGroupByType_1","decalScope","dataAll_1","idxMap_1","decalScope_1","dataCount_1","paletteDecal","specifiedDecal","mergeDecal","resultDecal","labelLocale","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","ariaLabel","getTitle","seriesLabels_1","seriesLabel","getSeriesTypeName","partialLabel","displayCnt","dataLabels","dataLabel","middleSeparator_1","endSeparator_1","separatorModel","middleSeparator","endSeparator","keyValues","ariaPreprocessor","PRIORITY_VISUAL_ARIA$1","createElementNS","NONE","mathRound","mathSin$4","mathCos$4","PI$a","PI2$a","EPSILON$4","round3","round4","isAroundZero$1","pathHasFill","pathHasStroke","svgEl","attrXLink","setAttributeNS","attrXML","bindStyle","strokeWidth","strokeScale_1","SVGPathRebuilder","_d","_str","firstCmd","dThetaPositive","isCircle","unifiedTheta","_invalid","generateStr","getStr","svgPath","__svgEl","pathVersion","elExt","svgPathBuilder","__svgPathBuilder","__svgPathVersion","svgImage","HTMLImageElement","__imageSrc","TEXT_ALIGN_TO_ANCHOR","adjustTextY$1","svgText","textSvgEl","textSvgElStyle","equals","editLength","maxEditLength","bestPath","newPos","oldPos","extractCommon","added","execEditLength","diagonalPath","basePath","addPath","removePath","canAdd","canRemove","clonePath","pushComponent","buildValues","commonCount","componentPos","componentLen","arrayDiff","MARK_UNUSED","MARK_USED","Definable","zrId","tagNames","markLabel","domName","nextId","_domName","_zrId","_svgRoot","_tagNames","_markLabel","getDefs","isForceCreating","getElementsByTagName","defs_1","doUpdate","addDom","removeDom","getDoms","doms","tagName","tags","markAllUnused","markDomUsed","markDomUnused","isDomUnused","removeUnused","getSvgProxy","getSvgElement","isLinearGradient","isRadialGradient","isGradient","GradientManager","addWithoutUpdate","that_1","__dom","markUsed","updateDom","stop_1","hex","isPattern","patternDomMap","PatternManager","patternDom","SVGElement","prevImage","imageSrc","HTMLCanvasElement","createdImage","generateClipPathsKey","hasClipPath","ClippathManager","_refGroups","_keyDuplicateCount","_getClipPathGroup","prevDisplayable","keyDuplicateCount","clipPathKey","clipGroup","clipPathEl","svgProxy","newRefGroupsMap","ShadowManager","_shadowDomMap","_shadowDomPool","_getFromPool","shadowDom","domChild","shadowKey","getShadowKey","_shadowDom","globalScale","stdDx","stdDy","stdDeviation","shadowDomsPool","parseInt10$1","checkParentAvailable","insertAfter","prevSibling","prepend","removeFromMyParent","SVGPainter","createMethodNotSupport","svgDom","bgRoot","_gradientManager","_patternManager","_clipPathManager","_shadowManager","viewport","_svgDom","_backgroundRoot","_viewport","_visibleList","_backgroundNode","bgNode","tag","gradientManager","patternManager","clipPathManager","shadowManager","visibleList","listLen","newVisibleList","prevSvgElement","topPrevSvgElement","currentClipGroup","isAdd","_getDefs","viewportStyle","viewportNode","encodeURIComponent","outerHTML","innerDrawElementOnCanvas","util"],"mappings":"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","sourcesContent":["(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = global || self, factory(global.echarts = {}));\n}(this, (function (exports) { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    var Browser = (function () {\r\n        function Browser() {\r\n            this.firefox = false;\r\n            this.ie = false;\r\n            this.edge = false;\r\n            this.weChat = false;\r\n        }\r\n        return Browser;\r\n    }());\r\n    var Env = (function () {\r\n        function Env() {\r\n            this.browser = new Browser();\r\n            this.node = false;\r\n            this.wxa = false;\r\n            this.worker = false;\r\n            this.canvasSupported = false;\r\n            this.svgSupported = false;\r\n            this.touchEventsSupported = false;\r\n            this.pointerEventsSupported = false;\r\n            this.domSupported = false;\r\n        }\r\n        return Env;\r\n    }());\r\n    var env = new Env();\r\n    if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\r\n        env.wxa = true;\r\n        env.canvasSupported = true;\r\n        env.touchEventsSupported = true;\r\n    }\r\n    else if (typeof document === 'undefined' && typeof self !== 'undefined') {\r\n        env.worker = true;\r\n        env.canvasSupported = true;\r\n    }\r\n    else if (typeof navigator === 'undefined') {\r\n        env.node = true;\r\n        env.canvasSupported = true;\r\n        env.svgSupported = true;\r\n    }\r\n    else {\r\n        detect(navigator.userAgent, env);\r\n    }\r\n    function detect(ua, env) {\r\n        var browser = env.browser;\r\n        var firefox = ua.match(/Firefox\\/([\\d.]+)/);\r\n        var ie = ua.match(/MSIE\\s([\\d.]+)/)\r\n            || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\r\n        var edge = ua.match(/Edge\\/([\\d.]+)/);\r\n        var weChat = (/micromessenger/i).test(ua);\r\n        if (firefox) {\r\n            browser.firefox = true;\r\n            browser.version = firefox[1];\r\n        }\r\n        if (ie) {\r\n            browser.ie = true;\r\n            browser.version = ie[1];\r\n        }\r\n        if (edge) {\r\n            browser.edge = true;\r\n            browser.version = edge[1];\r\n        }\r\n        if (weChat) {\r\n            browser.weChat = true;\r\n        }\r\n        env.canvasSupported = !!document.createElement('canvas').getContext;\r\n        env.svgSupported = typeof SVGRect !== 'undefined';\r\n        env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\r\n        env.pointerEventsSupported = 'onpointerdown' in window\r\n            && (browser.edge || (browser.ie && +browser.version >= 11));\r\n        env.domSupported = typeof document !== 'undefined';\r\n    }\n\n    var BUILTIN_OBJECT = {\r\n        '[object Function]': true,\r\n        '[object RegExp]': true,\r\n        '[object Date]': true,\r\n        '[object Error]': true,\r\n        '[object CanvasGradient]': true,\r\n        '[object CanvasPattern]': true,\r\n        '[object Image]': true,\r\n        '[object Canvas]': true\r\n    };\r\n    var TYPED_ARRAY = {\r\n        '[object Int8Array]': true,\r\n        '[object Uint8Array]': true,\r\n        '[object Uint8ClampedArray]': true,\r\n        '[object Int16Array]': true,\r\n        '[object Uint16Array]': true,\r\n        '[object Int32Array]': true,\r\n        '[object Uint32Array]': true,\r\n        '[object Float32Array]': true,\r\n        '[object Float64Array]': true\r\n    };\r\n    var objToString = Object.prototype.toString;\r\n    var arrayProto = Array.prototype;\r\n    var nativeForEach = arrayProto.forEach;\r\n    var nativeFilter = arrayProto.filter;\r\n    var nativeSlice = arrayProto.slice;\r\n    var nativeMap = arrayProto.map;\r\n    var ctorFunction = (function () { }).constructor;\r\n    var protoFunction = ctorFunction ? ctorFunction.prototype : null;\r\n    var methods = {};\r\n    function $override(name, fn) {\r\n        methods[name] = fn;\r\n    }\r\n    var idStart = 0x0907;\r\n    function guid() {\r\n        return idStart++;\r\n    }\r\n    function logError() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (typeof console !== 'undefined') {\r\n            console.error.apply(console, args);\r\n        }\r\n    }\r\n    function clone(source) {\r\n        if (source == null || typeof source !== 'object') {\r\n            return source;\r\n        }\r\n        var result = source;\r\n        var typeStr = objToString.call(source);\r\n        if (typeStr === '[object Array]') {\r\n            if (!isPrimitive(source)) {\r\n                result = [];\r\n                for (var i = 0, len = source.length; i < len; i++) {\r\n                    result[i] = clone(source[i]);\r\n                }\r\n            }\r\n        }\r\n        else if (TYPED_ARRAY[typeStr]) {\r\n            if (!isPrimitive(source)) {\r\n                var Ctor = source.constructor;\r\n                if (Ctor.from) {\r\n                    result = Ctor.from(source);\r\n                }\r\n                else {\r\n                    result = new Ctor(source.length);\r\n                    for (var i = 0, len = source.length; i < len; i++) {\r\n                        result[i] = clone(source[i]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\r\n            result = {};\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    result[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function merge(target, source, overwrite) {\r\n        if (!isObject(source) || !isObject(target)) {\r\n            return overwrite ? clone(source) : target;\r\n        }\r\n        for (var key in source) {\r\n            if (source.hasOwnProperty(key)) {\r\n                var targetProp = target[key];\r\n                var sourceProp = source[key];\r\n                if (isObject(sourceProp)\r\n                    && isObject(targetProp)\r\n                    && !isArray(sourceProp)\r\n                    && !isArray(targetProp)\r\n                    && !isDom(sourceProp)\r\n                    && !isDom(targetProp)\r\n                    && !isBuiltInObject(sourceProp)\r\n                    && !isBuiltInObject(targetProp)\r\n                    && !isPrimitive(sourceProp)\r\n                    && !isPrimitive(targetProp)) {\r\n                    merge(targetProp, sourceProp, overwrite);\r\n                }\r\n                else if (overwrite || !(key in target)) {\r\n                    target[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function mergeAll(targetAndSources, overwrite) {\r\n        var result = targetAndSources[0];\r\n        for (var i = 1, len = targetAndSources.length; i < len; i++) {\r\n            result = merge(result, targetAndSources[i], overwrite);\r\n        }\r\n        return result;\r\n    }\r\n    function extend(target, source) {\r\n        if (Object.assign) {\r\n            Object.assign(target, source);\r\n        }\r\n        else {\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    target[key] = source[key];\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function defaults(target, source, overlay) {\r\n        var keysArr = keys(source);\r\n        for (var i = 0; i < keysArr.length; i++) {\r\n            var key = keysArr[i];\r\n            if ((overlay ? source[key] != null : target[key] == null)) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    var createCanvas = function () {\r\n        return methods.createCanvas();\r\n    };\r\n    methods.createCanvas = function () {\r\n        return document.createElement('canvas');\r\n    };\r\n    function indexOf(array, value) {\r\n        if (array) {\r\n            if (array.indexOf) {\r\n                return array.indexOf(value);\r\n            }\r\n            for (var i = 0, len = array.length; i < len; i++) {\r\n                if (array[i] === value) {\r\n                    return i;\r\n                }\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function inherits(clazz, baseClazz) {\r\n        var clazzPrototype = clazz.prototype;\r\n        function F() { }\r\n        F.prototype = baseClazz.prototype;\r\n        clazz.prototype = new F();\r\n        for (var prop in clazzPrototype) {\r\n            if (clazzPrototype.hasOwnProperty(prop)) {\r\n                clazz.prototype[prop] = clazzPrototype[prop];\r\n            }\r\n        }\r\n        clazz.prototype.constructor = clazz;\r\n        clazz.superClass = baseClazz;\r\n    }\r\n    function mixin(target, source, override) {\r\n        target = 'prototype' in target ? target.prototype : target;\r\n        source = 'prototype' in source ? source.prototype : source;\r\n        if (Object.getOwnPropertyNames) {\r\n            var keyList = Object.getOwnPropertyNames(source);\r\n            for (var i = 0; i < keyList.length; i++) {\r\n                var key = keyList[i];\r\n                if (key !== 'constructor') {\r\n                    if ((override ? source[key] != null : target[key] == null)) {\r\n                        target[key] = source[key];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            defaults(target, source, override);\r\n        }\r\n    }\r\n    function isArrayLike(data) {\r\n        if (!data) {\r\n            return false;\r\n        }\r\n        if (typeof data === 'string') {\r\n            return false;\r\n        }\r\n        return typeof data.length === 'number';\r\n    }\r\n    function each(arr, cb, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        if (arr.forEach && arr.forEach === nativeForEach) {\r\n            arr.forEach(cb, context);\r\n        }\r\n        else if (arr.length === +arr.length) {\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                cb.call(context, arr[i], i, arr);\r\n            }\r\n        }\r\n        else {\r\n            for (var key in arr) {\r\n                if (arr.hasOwnProperty(key)) {\r\n                    cb.call(context, arr[key], key, arr);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function map(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.map && arr.map === nativeMap) {\r\n            return arr.map(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                result.push(cb.call(context, arr[i], i, arr));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function reduce(arr, cb, memo, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = arr.length; i < len; i++) {\r\n            memo = cb.call(context, memo, arr[i], i, arr);\r\n        }\r\n        return memo;\r\n    }\r\n    function filter(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.filter && arr.filter === nativeFilter) {\r\n            return arr.filter(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                if (cb.call(context, arr[i], i, arr)) {\r\n                    result.push(arr[i]);\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function find(arr, cb, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = arr.length; i < len; i++) {\r\n            if (cb.call(context, arr[i], i, arr)) {\r\n                return arr[i];\r\n            }\r\n        }\r\n    }\r\n    function keys(obj) {\r\n        if (!obj) {\r\n            return [];\r\n        }\r\n        if (Object.keys) {\r\n            return Object.keys(obj);\r\n        }\r\n        var keyList = [];\r\n        for (var key in obj) {\r\n            if (obj.hasOwnProperty(key)) {\r\n                keyList.push(key);\r\n            }\r\n        }\r\n        return keyList;\r\n    }\r\n    function bindPolyfill(func, context) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(context, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    var bind = (protoFunction && isFunction(protoFunction.bind))\r\n        ? protoFunction.call.bind(protoFunction.bind)\r\n        : bindPolyfill;\r\n    function curry(func) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(this, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    function isArray(value) {\r\n        if (Array.isArray) {\r\n            return Array.isArray(value);\r\n        }\r\n        return objToString.call(value) === '[object Array]';\r\n    }\r\n    function isFunction(value) {\r\n        return typeof value === 'function';\r\n    }\r\n    function isString(value) {\r\n        return typeof value === 'string';\r\n    }\r\n    function isStringSafe(value) {\r\n        return objToString.call(value) === '[object String]';\r\n    }\r\n    function isNumber(value) {\r\n        return typeof value === 'number';\r\n    }\r\n    function isObject(value) {\r\n        var type = typeof value;\r\n        return type === 'function' || (!!value && type === 'object');\r\n    }\r\n    function isBuiltInObject(value) {\r\n        return !!BUILTIN_OBJECT[objToString.call(value)];\r\n    }\r\n    function isTypedArray(value) {\r\n        return !!TYPED_ARRAY[objToString.call(value)];\r\n    }\r\n    function isDom(value) {\r\n        return typeof value === 'object'\r\n            && typeof value.nodeType === 'number'\r\n            && typeof value.ownerDocument === 'object';\r\n    }\r\n    function isGradientObject(value) {\r\n        return value.colorStops != null;\r\n    }\r\n    function isPatternObject(value) {\r\n        return value.image != null;\r\n    }\r\n    function isRegExp(value) {\r\n        return objToString.call(value) === '[object RegExp]';\r\n    }\r\n    function eqNaN(value) {\r\n        return value !== value;\r\n    }\r\n    function retrieve() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        for (var i = 0, len = args.length; i < len; i++) {\r\n            if (args[i] != null) {\r\n                return args[i];\r\n            }\r\n        }\r\n    }\r\n    function retrieve2(value0, value1) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1;\r\n    }\r\n    function retrieve3(value0, value1, value2) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1 != null\r\n                ? value1\r\n                : value2;\r\n    }\r\n    function slice(arr) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return nativeSlice.apply(arr, args);\r\n    }\r\n    function normalizeCssArray(val) {\r\n        if (typeof (val) === 'number') {\r\n            return [val, val, val, val];\r\n        }\r\n        var len = val.length;\r\n        if (len === 2) {\r\n            return [val[0], val[1], val[0], val[1]];\r\n        }\r\n        else if (len === 3) {\r\n            return [val[0], val[1], val[2], val[1]];\r\n        }\r\n        return val;\r\n    }\r\n    function assert(condition, message) {\r\n        if (!condition) {\r\n            throw new Error(message);\r\n        }\r\n    }\r\n    function trim(str) {\r\n        if (str == null) {\r\n            return null;\r\n        }\r\n        else if (typeof str.trim === 'function') {\r\n            return str.trim();\r\n        }\r\n        else {\r\n            return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n        }\r\n    }\r\n    var primitiveKey = '__ec_primitive__';\r\n    function setAsPrimitive(obj) {\r\n        obj[primitiveKey] = true;\r\n    }\r\n    function isPrimitive(obj) {\r\n        return obj[primitiveKey];\r\n    }\r\n    var HashMap = (function () {\r\n        function HashMap(obj) {\r\n            this.data = {};\r\n            var isArr = isArray(obj);\r\n            this.data = {};\r\n            var thisMap = this;\r\n            (obj instanceof HashMap)\r\n                ? obj.each(visit)\r\n                : (obj && each(obj, visit));\r\n            function visit(value, key) {\r\n                isArr ? thisMap.set(value, key) : thisMap.set(key, value);\r\n            }\r\n        }\r\n        HashMap.prototype.get = function (key) {\r\n            return this.data.hasOwnProperty(key) ? this.data[key] : null;\r\n        };\r\n        HashMap.prototype.set = function (key, value) {\r\n            return (this.data[key] = value);\r\n        };\r\n        HashMap.prototype.each = function (cb, context) {\r\n            for (var key in this.data) {\r\n                if (this.data.hasOwnProperty(key)) {\r\n                    cb.call(context, this.data[key], key);\r\n                }\r\n            }\r\n        };\r\n        HashMap.prototype.keys = function () {\r\n            return keys(this.data);\r\n        };\r\n        HashMap.prototype.removeKey = function (key) {\r\n            delete this.data[key];\r\n        };\r\n        return HashMap;\r\n    }());\r\n    function createHashMap(obj) {\r\n        return new HashMap(obj);\r\n    }\r\n    function concatArray(a, b) {\r\n        var newArray = new a.constructor(a.length + b.length);\r\n        for (var i = 0; i < a.length; i++) {\r\n            newArray[i] = a[i];\r\n        }\r\n        var offset = a.length;\r\n        for (var i = 0; i < b.length; i++) {\r\n            newArray[i + offset] = b[i];\r\n        }\r\n        return newArray;\r\n    }\r\n    function createObject(proto, properties) {\r\n        var obj;\r\n        if (Object.create) {\r\n            obj = Object.create(proto);\r\n        }\r\n        else {\r\n            var StyleCtor = function () { };\r\n            StyleCtor.prototype = proto;\r\n            obj = new StyleCtor();\r\n        }\r\n        if (properties) {\r\n            extend(obj, properties);\r\n        }\r\n        return obj;\r\n    }\r\n    function hasOwn(own, prop) {\r\n        return own.hasOwnProperty(prop);\r\n    }\r\n    function noop() { }\n\n    var zrUtil = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        $override: $override,\n        guid: guid,\n        logError: logError,\n        clone: clone,\n        merge: merge,\n        mergeAll: mergeAll,\n        extend: extend,\n        defaults: defaults,\n        createCanvas: createCanvas,\n        indexOf: indexOf,\n        inherits: inherits,\n        mixin: mixin,\n        isArrayLike: isArrayLike,\n        each: each,\n        map: map,\n        reduce: reduce,\n        filter: filter,\n        find: find,\n        keys: keys,\n        bind: bind,\n        curry: curry,\n        isArray: isArray,\n        isFunction: isFunction,\n        isString: isString,\n        isStringSafe: isStringSafe,\n        isNumber: isNumber,\n        isObject: isObject,\n        isBuiltInObject: isBuiltInObject,\n        isTypedArray: isTypedArray,\n        isDom: isDom,\n        isGradientObject: isGradientObject,\n        isPatternObject: isPatternObject,\n        isRegExp: isRegExp,\n        eqNaN: eqNaN,\n        retrieve: retrieve,\n        retrieve2: retrieve2,\n        retrieve3: retrieve3,\n        slice: slice,\n        normalizeCssArray: normalizeCssArray,\n        assert: assert,\n        trim: trim,\n        setAsPrimitive: setAsPrimitive,\n        isPrimitive: isPrimitive,\n        HashMap: HashMap,\n        createHashMap: createHashMap,\n        concatArray: concatArray,\n        createObject: createObject,\n        hasOwn: hasOwn,\n        noop: noop\n    });\n\n    function create(x, y) {\r\n        if (x == null) {\r\n            x = 0;\r\n        }\r\n        if (y == null) {\r\n            y = 0;\r\n        }\r\n        return [x, y];\r\n    }\r\n    function copy(out, v) {\r\n        out[0] = v[0];\r\n        out[1] = v[1];\r\n        return out;\r\n    }\r\n    function clone$1(v) {\r\n        return [v[0], v[1]];\r\n    }\r\n    function set(out, a, b) {\r\n        out[0] = a;\r\n        out[1] = b;\r\n        return out;\r\n    }\r\n    function add(out, v1, v2) {\r\n        out[0] = v1[0] + v2[0];\r\n        out[1] = v1[1] + v2[1];\r\n        return out;\r\n    }\r\n    function scaleAndAdd(out, v1, v2, a) {\r\n        out[0] = v1[0] + v2[0] * a;\r\n        out[1] = v1[1] + v2[1] * a;\r\n        return out;\r\n    }\r\n    function sub(out, v1, v2) {\r\n        out[0] = v1[0] - v2[0];\r\n        out[1] = v1[1] - v2[1];\r\n        return out;\r\n    }\r\n    function len(v) {\r\n        return Math.sqrt(lenSquare(v));\r\n    }\r\n    var length = len;\r\n    function lenSquare(v) {\r\n        return v[0] * v[0] + v[1] * v[1];\r\n    }\r\n    var lengthSquare = lenSquare;\r\n    function mul(out, v1, v2) {\r\n        out[0] = v1[0] * v2[0];\r\n        out[1] = v1[1] * v2[1];\r\n        return out;\r\n    }\r\n    function div(out, v1, v2) {\r\n        out[0] = v1[0] / v2[0];\r\n        out[1] = v1[1] / v2[1];\r\n        return out;\r\n    }\r\n    function dot(v1, v2) {\r\n        return v1[0] * v2[0] + v1[1] * v2[1];\r\n    }\r\n    function scale(out, v, s) {\r\n        out[0] = v[0] * s;\r\n        out[1] = v[1] * s;\r\n        return out;\r\n    }\r\n    function normalize(out, v) {\r\n        var d = len(v);\r\n        if (d === 0) {\r\n            out[0] = 0;\r\n            out[1] = 0;\r\n        }\r\n        else {\r\n            out[0] = v[0] / d;\r\n            out[1] = v[1] / d;\r\n        }\r\n        return out;\r\n    }\r\n    function distance(v1, v2) {\r\n        return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n    }\r\n    var dist = distance;\r\n    function distanceSquare(v1, v2) {\r\n        return (v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]);\r\n    }\r\n    var distSquare = distanceSquare;\r\n    function negate(out, v) {\r\n        out[0] = -v[0];\r\n        out[1] = -v[1];\r\n        return out;\r\n    }\r\n    function lerp(out, v1, v2, t) {\r\n        out[0] = v1[0] + t * (v2[0] - v1[0]);\r\n        out[1] = v1[1] + t * (v2[1] - v1[1]);\r\n        return out;\r\n    }\r\n    function applyTransform(out, v, m) {\r\n        var x = v[0];\r\n        var y = v[1];\r\n        out[0] = m[0] * x + m[2] * y + m[4];\r\n        out[1] = m[1] * x + m[3] * y + m[5];\r\n        return out;\r\n    }\r\n    function min(out, v1, v2) {\r\n        out[0] = Math.min(v1[0], v2[0]);\r\n        out[1] = Math.min(v1[1], v2[1]);\r\n        return out;\r\n    }\r\n    function max(out, v1, v2) {\r\n        out[0] = Math.max(v1[0], v2[0]);\r\n        out[1] = Math.max(v1[1], v2[1]);\r\n        return out;\r\n    }\n\n    var vector = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        create: create,\n        copy: copy,\n        clone: clone$1,\n        set: set,\n        add: add,\n        scaleAndAdd: scaleAndAdd,\n        sub: sub,\n        len: len,\n        length: length,\n        lenSquare: lenSquare,\n        lengthSquare: lengthSquare,\n        mul: mul,\n        div: div,\n        dot: dot,\n        scale: scale,\n        normalize: normalize,\n        distance: distance,\n        dist: dist,\n        distanceSquare: distanceSquare,\n        distSquare: distSquare,\n        negate: negate,\n        lerp: lerp,\n        applyTransform: applyTransform,\n        min: min,\n        max: max\n    });\n\n    var Param = (function () {\r\n        function Param(target, e) {\r\n            this.target = target;\r\n            this.topTarget = e && e.topTarget;\r\n        }\r\n        return Param;\r\n    }());\r\n    var Draggable = (function () {\r\n        function Draggable(handler) {\r\n            this.handler = handler;\r\n            handler.on('mousedown', this._dragStart, this);\r\n            handler.on('mousemove', this._drag, this);\r\n            handler.on('mouseup', this._dragEnd, this);\r\n        }\r\n        Draggable.prototype._dragStart = function (e) {\r\n            var draggingTarget = e.target;\r\n            while (draggingTarget && !draggingTarget.draggable) {\r\n                draggingTarget = draggingTarget.parent;\r\n            }\r\n            if (draggingTarget) {\r\n                this._draggingTarget = draggingTarget;\r\n                draggingTarget.dragging = true;\r\n                this._x = e.offsetX;\r\n                this._y = e.offsetY;\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\r\n            }\r\n        };\r\n        Draggable.prototype._drag = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                var x = e.offsetX;\r\n                var y = e.offsetY;\r\n                var dx = x - this._x;\r\n                var dy = y - this._y;\r\n                this._x = x;\r\n                this._y = y;\r\n                draggingTarget.drift(dx, dy, e);\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\r\n                var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\r\n                var lastDropTarget = this._dropTarget;\r\n                this._dropTarget = dropTarget;\r\n                if (draggingTarget !== dropTarget) {\r\n                    if (lastDropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\r\n                    }\r\n                    if (dropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Draggable.prototype._dragEnd = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                draggingTarget.dragging = false;\r\n            }\r\n            this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\r\n            if (this._dropTarget) {\r\n                this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\r\n            }\r\n            this._draggingTarget = null;\r\n            this._dropTarget = null;\r\n        };\r\n        return Draggable;\r\n    }());\n\n    var Eventful = (function () {\r\n        function Eventful(eventProcessors) {\r\n            if (eventProcessors) {\r\n                this._$eventProcessor = eventProcessors;\r\n            }\r\n        }\r\n        Eventful.prototype.on = function (event, query, handler, context) {\r\n            if (!this._$handlers) {\r\n                this._$handlers = {};\r\n            }\r\n            var _h = this._$handlers;\r\n            if (typeof query === 'function') {\r\n                context = handler;\r\n                handler = query;\r\n                query = null;\r\n            }\r\n            if (!handler || !event) {\r\n                return this;\r\n            }\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\r\n                query = eventProcessor.normalizeQuery(query);\r\n            }\r\n            if (!_h[event]) {\r\n                _h[event] = [];\r\n            }\r\n            for (var i = 0; i < _h[event].length; i++) {\r\n                if (_h[event][i].h === handler) {\r\n                    return this;\r\n                }\r\n            }\r\n            var wrap = {\r\n                h: handler,\r\n                query: query,\r\n                ctx: (context || this),\r\n                callAtLast: handler.zrEventfulCallAtLast\r\n            };\r\n            var lastIndex = _h[event].length - 1;\r\n            var lastWrap = _h[event][lastIndex];\r\n            (lastWrap && lastWrap.callAtLast)\r\n                ? _h[event].splice(lastIndex, 0, wrap)\r\n                : _h[event].push(wrap);\r\n            return this;\r\n        };\r\n        Eventful.prototype.isSilent = function (eventName) {\r\n            var _h = this._$handlers;\r\n            return !_h || !_h[eventName] || !_h[eventName].length;\r\n        };\r\n        Eventful.prototype.off = function (eventType, handler) {\r\n            var _h = this._$handlers;\r\n            if (!_h) {\r\n                return this;\r\n            }\r\n            if (!eventType) {\r\n                this._$handlers = {};\r\n                return this;\r\n            }\r\n            if (handler) {\r\n                if (_h[eventType]) {\r\n                    var newList = [];\r\n                    for (var i = 0, l = _h[eventType].length; i < l; i++) {\r\n                        if (_h[eventType][i].h !== handler) {\r\n                            newList.push(_h[eventType][i]);\r\n                        }\r\n                    }\r\n                    _h[eventType] = newList;\r\n                }\r\n                if (_h[eventType] && _h[eventType].length === 0) {\r\n                    delete _h[eventType];\r\n                }\r\n            }\r\n            else {\r\n                delete _h[eventType];\r\n            }\r\n            return this;\r\n        };\r\n        Eventful.prototype.trigger = function (eventType) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[eventType];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var argLen = args.length;\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(eventType, hItem.query)) {\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(hItem.ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(hItem.ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(hItem.ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(hItem.ctx, args);\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(eventType);\r\n            return this;\r\n        };\r\n        Eventful.prototype.triggerWithContext = function (type) {\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[type];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var args = arguments;\r\n                var argLen = args.length;\r\n                var ctx = args[argLen - 1];\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(type, hItem.query)) {\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(ctx, args.slice(1, argLen - 1));\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(type);\r\n            return this;\r\n        };\r\n        return Eventful;\r\n    }());\n\n    var LN2 = Math.log(2);\r\n    function determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\r\n        var cacheKey = rowMask + '-' + colMask;\r\n        var fullRank = rows.length;\r\n        if (detCache.hasOwnProperty(cacheKey)) {\r\n            return detCache[cacheKey];\r\n        }\r\n        if (rank === 1) {\r\n            var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\r\n            return rows[rowStart][colStart];\r\n        }\r\n        var subRowMask = rowMask | (1 << rowStart);\r\n        var subRowStart = rowStart + 1;\r\n        while (rowMask & (1 << subRowStart)) {\r\n            subRowStart++;\r\n        }\r\n        var sum = 0;\r\n        for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\r\n            var colTag = 1 << j;\r\n            if (!(colTag & colMask)) {\r\n                sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\r\n                    * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\r\n                colLocalIdx++;\r\n            }\r\n        }\r\n        detCache[cacheKey] = sum;\r\n        return sum;\r\n    }\r\n    function buildTransformer(src, dest) {\r\n        var mA = [\r\n            [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\r\n            [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\r\n            [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\r\n            [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\r\n            [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\r\n            [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\r\n            [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\r\n            [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\r\n        ];\r\n        var detCache = {};\r\n        var det = determinant(mA, 8, 0, 0, 0, detCache);\r\n        if (det === 0) {\r\n            return;\r\n        }\r\n        var vh = [];\r\n        for (var i = 0; i < 8; i++) {\r\n            for (var j = 0; j < 8; j++) {\r\n                vh[j] == null && (vh[j] = 0);\r\n                vh[j] += ((i + j) % 2 ? -1 : 1)\r\n                    * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\r\n                    / det * dest[i];\r\n            }\r\n        }\r\n        return function (out, srcPointX, srcPointY) {\r\n            var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\r\n            out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\r\n            out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\r\n        };\r\n    }\n\n    var EVENT_SAVED_PROP = '___zrEVENTSAVED';\r\n    var _calcOut = [];\r\n    function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\r\n        return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\r\n            && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\r\n    }\r\n    function transformCoordWithViewport(out, el, inX, inY, inverse) {\r\n        if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\r\n            var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\r\n            var markers = prepareCoordMarkers(el, saved);\r\n            var transformer = preparePointerTransformer(markers, saved, inverse);\r\n            if (transformer) {\r\n                transformer(out, inX, inY);\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function prepareCoordMarkers(el, saved) {\r\n        var markers = saved.markers;\r\n        if (markers) {\r\n            return markers;\r\n        }\r\n        markers = saved.markers = [];\r\n        var propLR = ['left', 'right'];\r\n        var propTB = ['top', 'bottom'];\r\n        for (var i = 0; i < 4; i++) {\r\n            var marker = document.createElement('div');\r\n            var stl = marker.style;\r\n            var idxLR = i % 2;\r\n            var idxTB = (i >> 1) % 2;\r\n            stl.cssText = [\r\n                'position: absolute',\r\n                'visibility: hidden',\r\n                'padding: 0',\r\n                'margin: 0',\r\n                'border-width: 0',\r\n                'user-select: none',\r\n                'width:0',\r\n                'height:0',\r\n                propLR[idxLR] + ':0',\r\n                propTB[idxTB] + ':0',\r\n                propLR[1 - idxLR] + ':auto',\r\n                propTB[1 - idxTB] + ':auto',\r\n                ''\r\n            ].join('!important;');\r\n            el.appendChild(marker);\r\n            markers.push(marker);\r\n        }\r\n        return markers;\r\n    }\r\n    function preparePointerTransformer(markers, saved, inverse) {\r\n        var transformerName = inverse ? 'invTrans' : 'trans';\r\n        var transformer = saved[transformerName];\r\n        var oldSrcCoords = saved.srcCoords;\r\n        var srcCoords = [];\r\n        var destCoords = [];\r\n        var oldCoordTheSame = true;\r\n        for (var i = 0; i < 4; i++) {\r\n            var rect = markers[i].getBoundingClientRect();\r\n            var ii = 2 * i;\r\n            var x = rect.left;\r\n            var y = rect.top;\r\n            srcCoords.push(x, y);\r\n            oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\r\n            destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\r\n        }\r\n        return (oldCoordTheSame && transformer)\r\n            ? transformer\r\n            : (saved.srcCoords = srcCoords,\r\n                saved[transformerName] = inverse\r\n                    ? buildTransformer(destCoords, srcCoords)\r\n                    : buildTransformer(srcCoords, destCoords));\r\n    }\r\n    function isCanvasEl(el) {\r\n        return el.nodeName.toUpperCase() === 'CANVAS';\r\n    }\n\n    var isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\r\n    var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\n    var _calcOut$1 = [];\r\n    function clientToLocal(el, e, out, calculate) {\r\n        out = out || {};\r\n        if (calculate || !env.canvasSupported) {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        else if (env.browser.firefox\r\n            && e.layerX != null\r\n            && e.layerX !== e.offsetX) {\r\n            out.zrX = e.layerX;\r\n            out.zrY = e.layerY;\r\n        }\r\n        else if (e.offsetX != null) {\r\n            out.zrX = e.offsetX;\r\n            out.zrY = e.offsetY;\r\n        }\r\n        else {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        return out;\r\n    }\r\n    function calculateZrXY(el, e, out) {\r\n        if (env.domSupported && el.getBoundingClientRect) {\r\n            var ex = e.clientX;\r\n            var ey = e.clientY;\r\n            if (isCanvasEl(el)) {\r\n                var box = el.getBoundingClientRect();\r\n                out.zrX = ex - box.left;\r\n                out.zrY = ey - box.top;\r\n                return;\r\n            }\r\n            else {\r\n                if (transformCoordWithViewport(_calcOut$1, el, ex, ey)) {\r\n                    out.zrX = _calcOut$1[0];\r\n                    out.zrY = _calcOut$1[1];\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        out.zrX = out.zrY = 0;\r\n    }\r\n    function getNativeEvent(e) {\r\n        return e\r\n            || window.event;\r\n    }\r\n    function normalizeEvent(el, e, calculate) {\r\n        e = getNativeEvent(e);\r\n        if (e.zrX != null) {\r\n            return e;\r\n        }\r\n        var eventType = e.type;\r\n        var isTouch = eventType && eventType.indexOf('touch') >= 0;\r\n        if (!isTouch) {\r\n            clientToLocal(el, e, e, calculate);\r\n            var wheelDelta = getWheelDeltaMayPolyfill(e);\r\n            e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\r\n        }\r\n        else {\r\n            var touch = eventType !== 'touchend'\r\n                ? e.targetTouches[0]\r\n                : e.changedTouches[0];\r\n            touch && clientToLocal(el, touch, e, calculate);\r\n        }\r\n        var button = e.button;\r\n        if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\r\n            e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n        }\r\n        return e;\r\n    }\r\n    function getWheelDeltaMayPolyfill(e) {\r\n        var rawWheelDelta = e.wheelDelta;\r\n        if (rawWheelDelta) {\r\n            return rawWheelDelta;\r\n        }\r\n        var deltaX = e.deltaX;\r\n        var deltaY = e.deltaY;\r\n        if (deltaX == null || deltaY == null) {\r\n            return rawWheelDelta;\r\n        }\r\n        var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\r\n        var sign = deltaY > 0 ? -1\r\n            : deltaY < 0 ? 1\r\n                : deltaX > 0 ? -1\r\n                    : 1;\r\n        return 3 * delta * sign;\r\n    }\r\n    function addEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.addEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.attachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    function removeEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.removeEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.detachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    var stop = isDomLevel2\r\n        ? function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            e.cancelBubble = true;\r\n        }\r\n        : function (e) {\r\n            e.returnValue = false;\r\n            e.cancelBubble = true;\r\n        };\r\n    function isMiddleOrRightButtonOnMouseUpDown(e) {\r\n        return e.which === 2 || e.which === 3;\r\n    }\n\n    var GestureMgr = (function () {\r\n        function GestureMgr() {\r\n            this._track = [];\r\n        }\r\n        GestureMgr.prototype.recognize = function (event, target, root) {\r\n            this._doTrack(event, target, root);\r\n            return this._recognize(event);\r\n        };\r\n        GestureMgr.prototype.clear = function () {\r\n            this._track.length = 0;\r\n            return this;\r\n        };\r\n        GestureMgr.prototype._doTrack = function (event, target, root) {\r\n            var touches = event.touches;\r\n            if (!touches) {\r\n                return;\r\n            }\r\n            var trackItem = {\r\n                points: [],\r\n                touches: [],\r\n                target: target,\r\n                event: event\r\n            };\r\n            for (var i = 0, len = touches.length; i < len; i++) {\r\n                var touch = touches[i];\r\n                var pos = clientToLocal(root, touch, {});\r\n                trackItem.points.push([pos.zrX, pos.zrY]);\r\n                trackItem.touches.push(touch);\r\n            }\r\n            this._track.push(trackItem);\r\n        };\r\n        GestureMgr.prototype._recognize = function (event) {\r\n            for (var eventName in recognizers) {\r\n                if (recognizers.hasOwnProperty(eventName)) {\r\n                    var gestureInfo = recognizers[eventName](this._track, event);\r\n                    if (gestureInfo) {\r\n                        return gestureInfo;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        return GestureMgr;\r\n    }());\r\n    function dist$1(pointPair) {\r\n        var dx = pointPair[1][0] - pointPair[0][0];\r\n        var dy = pointPair[1][1] - pointPair[0][1];\r\n        return Math.sqrt(dx * dx + dy * dy);\r\n    }\r\n    function center(pointPair) {\r\n        return [\r\n            (pointPair[0][0] + pointPair[1][0]) / 2,\r\n            (pointPair[0][1] + pointPair[1][1]) / 2\r\n        ];\r\n    }\r\n    var recognizers = {\r\n        pinch: function (tracks, event) {\r\n            var trackLen = tracks.length;\r\n            if (!trackLen) {\r\n                return;\r\n            }\r\n            var pinchEnd = (tracks[trackLen - 1] || {}).points;\r\n            var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\r\n            if (pinchPre\r\n                && pinchPre.length > 1\r\n                && pinchEnd\r\n                && pinchEnd.length > 1) {\r\n                var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre);\r\n                !isFinite(pinchScale) && (pinchScale = 1);\r\n                event.pinchScale = pinchScale;\r\n                var pinchCenter = center(pinchEnd);\r\n                event.pinchX = pinchCenter[0];\r\n                event.pinchY = pinchCenter[1];\r\n                return {\r\n                    type: 'pinch',\r\n                    target: tracks[0].target,\r\n                    event: event\r\n                };\r\n            }\r\n        }\r\n    };\n\n    var SILENT = 'silent';\r\n    function makeEventPacket(eveType, targetInfo, event) {\r\n        return {\r\n            type: eveType,\r\n            event: event,\r\n            target: targetInfo.target,\r\n            topTarget: targetInfo.topTarget,\r\n            cancelBubble: false,\r\n            offsetX: event.zrX,\r\n            offsetY: event.zrY,\r\n            gestureEvent: event.gestureEvent,\r\n            pinchX: event.pinchX,\r\n            pinchY: event.pinchY,\r\n            pinchScale: event.pinchScale,\r\n            wheelDelta: event.zrDelta,\r\n            zrByTouch: event.zrByTouch,\r\n            which: event.which,\r\n            stop: stopEvent\r\n        };\r\n    }\r\n    function stopEvent() {\r\n        stop(this.event);\r\n    }\r\n    var EmptyProxy = (function (_super) {\r\n        __extends(EmptyProxy, _super);\r\n        function EmptyProxy() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.handler = null;\r\n            return _this;\r\n        }\r\n        EmptyProxy.prototype.dispose = function () { };\r\n        EmptyProxy.prototype.setCursor = function () { };\r\n        return EmptyProxy;\r\n    }(Eventful));\r\n    var HoveredResult = (function () {\r\n        function HoveredResult(x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n        }\r\n        return HoveredResult;\r\n    }());\r\n    var handlerNames = [\r\n        'click', 'dblclick', 'mousewheel', 'mouseout',\r\n        'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n    ];\r\n    var Handler = (function (_super) {\r\n        __extends(Handler, _super);\r\n        function Handler(storage, painter, proxy, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this._hovered = new HoveredResult(0, 0);\r\n            _this.storage = storage;\r\n            _this.painter = painter;\r\n            _this.painterRoot = painterRoot;\r\n            proxy = proxy || new EmptyProxy();\r\n            _this.proxy = null;\r\n            _this.setHandlerProxy(proxy);\r\n            _this._draggingMgr = new Draggable(_this);\r\n            return _this;\r\n        }\r\n        Handler.prototype.setHandlerProxy = function (proxy) {\r\n            if (this.proxy) {\r\n                this.proxy.dispose();\r\n            }\r\n            if (proxy) {\r\n                each(handlerNames, function (name) {\r\n                    proxy.on && proxy.on(name, this[name], this);\r\n                }, this);\r\n                proxy.handler = this;\r\n            }\r\n            this.proxy = proxy;\r\n        };\r\n        Handler.prototype.mousemove = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var lastHovered = this._hovered;\r\n            var lastHoveredTarget = lastHovered.target;\r\n            if (lastHoveredTarget && !lastHoveredTarget.__zr) {\r\n                lastHovered = this.findHover(lastHovered.x, lastHovered.y);\r\n                lastHoveredTarget = lastHovered.target;\r\n            }\r\n            var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\r\n            var hoveredTarget = hovered.target;\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\r\n            if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(lastHovered, 'mouseout', event);\r\n            }\r\n            this.dispatchToElement(hovered, 'mousemove', event);\r\n            if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(hovered, 'mouseover', event);\r\n            }\r\n        };\r\n        Handler.prototype.mouseout = function (event) {\r\n            var eventControl = event.zrEventControl;\r\n            var zrIsToLocalDOM = event.zrIsToLocalDOM;\r\n            if (eventControl !== 'only_globalout') {\r\n                this.dispatchToElement(this._hovered, 'mouseout', event);\r\n            }\r\n            if (eventControl !== 'no_globalout') {\r\n                !zrIsToLocalDOM && this.trigger('globalout', { type: 'globalout', event: event });\r\n            }\r\n        };\r\n        Handler.prototype.resize = function () {\r\n            this._hovered = new HoveredResult(0, 0);\r\n        };\r\n        Handler.prototype.dispatch = function (eventName, eventArgs) {\r\n            var handler = this[eventName];\r\n            handler && handler.call(this, eventArgs);\r\n        };\r\n        Handler.prototype.dispose = function () {\r\n            this.proxy.dispose();\r\n            this.storage = null;\r\n            this.proxy = null;\r\n            this.painter = null;\r\n        };\r\n        Handler.prototype.setCursorStyle = function (cursorStyle) {\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(cursorStyle);\r\n        };\r\n        Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\r\n            targetInfo = targetInfo || {};\r\n            var el = targetInfo.target;\r\n            if (el && el.silent) {\r\n                return;\r\n            }\r\n            var eventKey = ('on' + eventName);\r\n            var eventPacket = makeEventPacket(eventName, targetInfo, event);\r\n            while (el) {\r\n                el[eventKey]\r\n                    && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\r\n                el.trigger(eventName, eventPacket);\r\n                el = el.__hostTarget ? el.__hostTarget : el.parent;\r\n                if (eventPacket.cancelBubble) {\r\n                    break;\r\n                }\r\n            }\r\n            if (!eventPacket.cancelBubble) {\r\n                this.trigger(eventName, eventPacket);\r\n                if (this.painter && this.painter.eachOtherLayer) {\r\n                    this.painter.eachOtherLayer(function (layer) {\r\n                        if (typeof (layer[eventKey]) === 'function') {\r\n                            layer[eventKey].call(layer, eventPacket);\r\n                        }\r\n                        if (layer.trigger) {\r\n                            layer.trigger(eventName, eventPacket);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        };\r\n        Handler.prototype.findHover = function (x, y, exclude) {\r\n            var list = this.storage.getDisplayList();\r\n            var out = new HoveredResult(x, y);\r\n            for (var i = list.length - 1; i >= 0; i--) {\r\n                var hoverCheckResult = void 0;\r\n                if (list[i] !== exclude\r\n                    && !list[i].ignore\r\n                    && (hoverCheckResult = isHover(list[i], x, y))) {\r\n                    !out.topTarget && (out.topTarget = list[i]);\r\n                    if (hoverCheckResult !== SILENT) {\r\n                        out.target = list[i];\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            return out;\r\n        };\r\n        Handler.prototype.processGesture = function (event, stage) {\r\n            if (!this._gestureMgr) {\r\n                this._gestureMgr = new GestureMgr();\r\n            }\r\n            var gestureMgr = this._gestureMgr;\r\n            stage === 'start' && gestureMgr.clear();\r\n            var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\r\n            stage === 'end' && gestureMgr.clear();\r\n            if (gestureInfo) {\r\n                var type = gestureInfo.type;\r\n                event.gestureEvent = type;\r\n                var res = new HoveredResult();\r\n                res.target = gestureInfo.target;\r\n                this.dispatchToElement(res, type, gestureInfo.event);\r\n            }\r\n        };\r\n        return Handler;\r\n    }(Eventful));\r\n    each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\r\n        Handler.prototype[name] = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var hovered;\r\n            var hoveredTarget;\r\n            if (name !== 'mouseup' || !isOutside) {\r\n                hovered = this.findHover(x, y);\r\n                hoveredTarget = hovered.target;\r\n            }\r\n            if (name === 'mousedown') {\r\n                this._downEl = hoveredTarget;\r\n                this._downPoint = [event.zrX, event.zrY];\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'mouseup') {\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'click') {\r\n                if (this._downEl !== this._upEl\r\n                    || !this._downPoint\r\n                    || dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\r\n                    return;\r\n                }\r\n                this._downPoint = null;\r\n            }\r\n            this.dispatchToElement(hovered, name, event);\r\n        };\r\n    });\r\n    function isHover(displayable, x, y) {\r\n        if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\r\n            var el = displayable;\r\n            var isSilent = void 0;\r\n            var ignoreClip = false;\r\n            while (el) {\r\n                if (el.ignoreClip) {\r\n                    ignoreClip = true;\r\n                }\r\n                if (!ignoreClip) {\r\n                    var clipPath = el.getClipPath();\r\n                    if (clipPath && !clipPath.contain(x, y)) {\r\n                        return false;\r\n                    }\r\n                    if (el.silent) {\r\n                        isSilent = true;\r\n                    }\r\n                }\r\n                var hostEl = el.__hostTarget;\r\n                el = hostEl ? hostEl : el.parent;\r\n            }\r\n            return isSilent ? SILENT : true;\r\n        }\r\n        return false;\r\n    }\r\n    function isOutsideBoundary(handlerInstance, x, y) {\r\n        var painter = handlerInstance.painter;\r\n        return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\r\n    }\n\n    function create$1() {\r\n        return [1, 0, 0, 1, 0, 0];\r\n    }\r\n    function identity(out) {\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 1;\r\n        out[4] = 0;\r\n        out[5] = 0;\r\n        return out;\r\n    }\r\n    function copy$1(out, m) {\r\n        out[0] = m[0];\r\n        out[1] = m[1];\r\n        out[2] = m[2];\r\n        out[3] = m[3];\r\n        out[4] = m[4];\r\n        out[5] = m[5];\r\n        return out;\r\n    }\r\n    function mul$1(out, m1, m2) {\r\n        var out0 = m1[0] * m2[0] + m1[2] * m2[1];\r\n        var out1 = m1[1] * m2[0] + m1[3] * m2[1];\r\n        var out2 = m1[0] * m2[2] + m1[2] * m2[3];\r\n        var out3 = m1[1] * m2[2] + m1[3] * m2[3];\r\n        var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\r\n        var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\r\n        out[0] = out0;\r\n        out[1] = out1;\r\n        out[2] = out2;\r\n        out[3] = out3;\r\n        out[4] = out4;\r\n        out[5] = out5;\r\n        return out;\r\n    }\r\n    function translate(out, a, v) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        out[4] = a[4] + v[0];\r\n        out[5] = a[5] + v[1];\r\n        return out;\r\n    }\r\n    function rotate(out, a, rad) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var st = Math.sin(rad);\r\n        var ct = Math.cos(rad);\r\n        out[0] = aa * ct + ab * st;\r\n        out[1] = -aa * st + ab * ct;\r\n        out[2] = ac * ct + ad * st;\r\n        out[3] = -ac * st + ct * ad;\r\n        out[4] = ct * atx + st * aty;\r\n        out[5] = ct * aty - st * atx;\r\n        return out;\r\n    }\r\n    function scale$1(out, a, v) {\r\n        var vx = v[0];\r\n        var vy = v[1];\r\n        out[0] = a[0] * vx;\r\n        out[1] = a[1] * vy;\r\n        out[2] = a[2] * vx;\r\n        out[3] = a[3] * vy;\r\n        out[4] = a[4] * vx;\r\n        out[5] = a[5] * vy;\r\n        return out;\r\n    }\r\n    function invert(out, a) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var det = aa * ad - ab * ac;\r\n        if (!det) {\r\n            return null;\r\n        }\r\n        det = 1.0 / det;\r\n        out[0] = ad * det;\r\n        out[1] = -ab * det;\r\n        out[2] = -ac * det;\r\n        out[3] = aa * det;\r\n        out[4] = (ac * aty - ad * atx) * det;\r\n        out[5] = (ab * atx - aa * aty) * det;\r\n        return out;\r\n    }\r\n    function clone$2(a) {\r\n        var b = create$1();\r\n        copy$1(b, a);\r\n        return b;\r\n    }\n\n    var matrix = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        create: create$1,\n        identity: identity,\n        copy: copy$1,\n        mul: mul$1,\n        translate: translate,\n        rotate: rotate,\n        scale: scale$1,\n        invert: invert,\n        clone: clone$2\n    });\n\n    var mIdentity = identity;\r\n    var EPSILON = 5e-5;\r\n    function isNotAroundZero(val) {\r\n        return val > EPSILON || val < -EPSILON;\r\n    }\r\n    var scaleTmp = [];\r\n    var tmpTransform = [];\r\n    var originTransform = create$1();\r\n    var abs = Math.abs;\r\n    var Transformable = (function () {\r\n        function Transformable() {\r\n        }\r\n        Transformable.prototype.setPosition = function (arr) {\r\n            this.x = arr[0];\r\n            this.y = arr[1];\r\n        };\r\n        Transformable.prototype.setScale = function (arr) {\r\n            this.scaleX = arr[0];\r\n            this.scaleY = arr[1];\r\n        };\r\n        Transformable.prototype.setOrigin = function (arr) {\r\n            this.originX = arr[0];\r\n            this.originY = arr[1];\r\n        };\r\n        Transformable.prototype.needLocalTransform = function () {\r\n            return isNotAroundZero(this.rotation)\r\n                || isNotAroundZero(this.x)\r\n                || isNotAroundZero(this.y)\r\n                || isNotAroundZero(this.scaleX - 1)\r\n                || isNotAroundZero(this.scaleY - 1);\r\n        };\r\n        Transformable.prototype.updateTransform = function () {\r\n            var parent = this.parent;\r\n            var parentHasTransform = parent && parent.transform;\r\n            var needLocalTransform = this.needLocalTransform();\r\n            var m = this.transform;\r\n            if (!(needLocalTransform || parentHasTransform)) {\r\n                m && mIdentity(m);\r\n                return;\r\n            }\r\n            m = m || create$1();\r\n            if (needLocalTransform) {\r\n                this.getLocalTransform(m);\r\n            }\r\n            else {\r\n                mIdentity(m);\r\n            }\r\n            if (parentHasTransform) {\r\n                if (needLocalTransform) {\r\n                    mul$1(m, parent.transform, m);\r\n                }\r\n                else {\r\n                    copy$1(m, parent.transform);\r\n                }\r\n            }\r\n            this.transform = m;\r\n            this._resolveGlobalScaleRatio(m);\r\n        };\r\n        Transformable.prototype._resolveGlobalScaleRatio = function (m) {\r\n            var globalScaleRatio = this.globalScaleRatio;\r\n            if (globalScaleRatio != null && globalScaleRatio !== 1) {\r\n                this.getGlobalScale(scaleTmp);\r\n                var relX = scaleTmp[0] < 0 ? -1 : 1;\r\n                var relY = scaleTmp[1] < 0 ? -1 : 1;\r\n                var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\r\n                var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\r\n                m[0] *= sx;\r\n                m[1] *= sx;\r\n                m[2] *= sy;\r\n                m[3] *= sy;\r\n            }\r\n            this.invTransform = this.invTransform || create$1();\r\n            invert(this.invTransform, m);\r\n        };\r\n        Transformable.prototype.getLocalTransform = function (m) {\r\n            return Transformable.getLocalTransform(this, m);\r\n        };\r\n        Transformable.prototype.getComputedTransform = function () {\r\n            var transformNode = this;\r\n            var ancestors = [];\r\n            while (transformNode) {\r\n                ancestors.push(transformNode);\r\n                transformNode = transformNode.parent;\r\n            }\r\n            while (transformNode = ancestors.pop()) {\r\n                transformNode.updateTransform();\r\n            }\r\n            return this.transform;\r\n        };\r\n        Transformable.prototype.setLocalTransform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var sx = m[0] * m[0] + m[1] * m[1];\r\n            var sy = m[2] * m[2] + m[3] * m[3];\r\n            if (isNotAroundZero(sx - 1)) {\r\n                sx = Math.sqrt(sx);\r\n            }\r\n            if (isNotAroundZero(sy - 1)) {\r\n                sy = Math.sqrt(sy);\r\n            }\r\n            if (m[0] < 0) {\r\n                sx = -sx;\r\n            }\r\n            if (m[3] < 0) {\r\n                sy = -sy;\r\n            }\r\n            this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\r\n            if (sx < 0 && sy < 0) {\r\n                this.rotation += Math.PI;\r\n                sx = -sx;\r\n                sy = -sy;\r\n            }\r\n            this.x = m[4];\r\n            this.y = m[5];\r\n            this.scaleX = sx;\r\n            this.scaleY = sy;\r\n        };\r\n        Transformable.prototype.decomposeTransform = function () {\r\n            if (!this.transform) {\r\n                return;\r\n            }\r\n            var parent = this.parent;\r\n            var m = this.transform;\r\n            if (parent && parent.transform) {\r\n                mul$1(tmpTransform, parent.invTransform, m);\r\n                m = tmpTransform;\r\n            }\r\n            var ox = this.originX;\r\n            var oy = this.originY;\r\n            if (ox || oy) {\r\n                originTransform[4] = ox;\r\n                originTransform[5] = oy;\r\n                mul$1(tmpTransform, m, originTransform);\r\n                tmpTransform[4] -= ox;\r\n                tmpTransform[5] -= oy;\r\n                m = tmpTransform;\r\n            }\r\n            this.setLocalTransform(m);\r\n        };\r\n        Transformable.prototype.getGlobalScale = function (out) {\r\n            var m = this.transform;\r\n            out = out || [];\r\n            if (!m) {\r\n                out[0] = 1;\r\n                out[1] = 1;\r\n                return out;\r\n            }\r\n            out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\r\n            out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\r\n            if (m[0] < 0) {\r\n                out[0] = -out[0];\r\n            }\r\n            if (m[3] < 0) {\r\n                out[1] = -out[1];\r\n            }\r\n            return out;\r\n        };\r\n        Transformable.prototype.transformCoordToLocal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var invTransform = this.invTransform;\r\n            if (invTransform) {\r\n                applyTransform(v2, v2, invTransform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.transformCoordToGlobal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var transform = this.transform;\r\n            if (transform) {\r\n                applyTransform(v2, v2, transform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.getLineScale = function () {\r\n            var m = this.transform;\r\n            return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\r\n                ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\r\n                : 1;\r\n        };\r\n        Transformable.getLocalTransform = function (target, m) {\r\n            m = m || [];\r\n            mIdentity(m);\r\n            var ox = target.originX || 0;\r\n            var oy = target.originY || 0;\r\n            var sx = target.scaleX;\r\n            var sy = target.scaleY;\r\n            var rotation = target.rotation || 0;\r\n            var x = target.x;\r\n            var y = target.y;\r\n            m[4] -= ox;\r\n            m[5] -= oy;\r\n            m[0] *= sx;\r\n            m[1] *= sy;\r\n            m[2] *= sx;\r\n            m[3] *= sy;\r\n            m[4] *= sx;\r\n            m[5] *= sy;\r\n            if (rotation) {\r\n                rotate(m, m, rotation);\r\n            }\r\n            m[4] += ox;\r\n            m[5] += oy;\r\n            m[4] += x;\r\n            m[5] += y;\r\n            return m;\r\n        };\r\n        Transformable.initDefaultProps = (function () {\r\n            var proto = Transformable.prototype;\r\n            proto.x = 0;\r\n            proto.y = 0;\r\n            proto.scaleX = 1;\r\n            proto.scaleY = 1;\r\n            proto.originX = 0;\r\n            proto.originY = 0;\r\n            proto.rotation = 0;\r\n            proto.globalScaleRatio = 1;\r\n        })();\r\n        return Transformable;\r\n    }());\n\n    var easing = {\r\n        linear: function (k) {\r\n            return k;\r\n        },\r\n        quadraticIn: function (k) {\r\n            return k * k;\r\n        },\r\n        quadraticOut: function (k) {\r\n            return k * (2 - k);\r\n        },\r\n        quadraticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k;\r\n            }\r\n            return -0.5 * (--k * (k - 2) - 1);\r\n        },\r\n        cubicIn: function (k) {\r\n            return k * k * k;\r\n        },\r\n        cubicOut: function (k) {\r\n            return --k * k * k + 1;\r\n        },\r\n        cubicInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k + 2);\r\n        },\r\n        quarticIn: function (k) {\r\n            return k * k * k * k;\r\n        },\r\n        quarticOut: function (k) {\r\n            return 1 - (--k * k * k * k);\r\n        },\r\n        quarticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k;\r\n            }\r\n            return -0.5 * ((k -= 2) * k * k * k - 2);\r\n        },\r\n        quinticIn: function (k) {\r\n            return k * k * k * k * k;\r\n        },\r\n        quinticOut: function (k) {\r\n            return --k * k * k * k * k + 1;\r\n        },\r\n        quinticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k * k * k + 2);\r\n        },\r\n        sinusoidalIn: function (k) {\r\n            return 1 - Math.cos(k * Math.PI / 2);\r\n        },\r\n        sinusoidalOut: function (k) {\r\n            return Math.sin(k * Math.PI / 2);\r\n        },\r\n        sinusoidalInOut: function (k) {\r\n            return 0.5 * (1 - Math.cos(Math.PI * k));\r\n        },\r\n        exponentialIn: function (k) {\r\n            return k === 0 ? 0 : Math.pow(1024, k - 1);\r\n        },\r\n        exponentialOut: function (k) {\r\n            return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\r\n        },\r\n        exponentialInOut: function (k) {\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * Math.pow(1024, k - 1);\r\n            }\r\n            return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\r\n        },\r\n        circularIn: function (k) {\r\n            return 1 - Math.sqrt(1 - k * k);\r\n        },\r\n        circularOut: function (k) {\r\n            return Math.sqrt(1 - (--k * k));\r\n        },\r\n        circularInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (Math.sqrt(1 - k * k) - 1);\r\n            }\r\n            return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\r\n        },\r\n        elasticIn: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return -(a * Math.pow(2, 10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p));\r\n        },\r\n        elasticOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return (a * Math.pow(2, -10 * k)\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\r\n        },\r\n        elasticInOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\r\n                    * Math.sin((k - s) * (2 * Math.PI) / p));\r\n            }\r\n            return a * Math.pow(2, -10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n        },\r\n        backIn: function (k) {\r\n            var s = 1.70158;\r\n            return k * k * ((s + 1) * k - s);\r\n        },\r\n        backOut: function (k) {\r\n            var s = 1.70158;\r\n            return --k * k * ((s + 1) * k + s) + 1;\r\n        },\r\n        backInOut: function (k) {\r\n            var s = 1.70158 * 1.525;\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * (k * k * ((s + 1) * k - s));\r\n            }\r\n            return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\r\n        },\r\n        bounceIn: function (k) {\r\n            return 1 - easing.bounceOut(1 - k);\r\n        },\r\n        bounceOut: function (k) {\r\n            if (k < (1 / 2.75)) {\r\n                return 7.5625 * k * k;\r\n            }\r\n            else if (k < (2 / 2.75)) {\r\n                return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n            }\r\n            else if (k < (2.5 / 2.75)) {\r\n                return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n            }\r\n            else {\r\n                return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n            }\r\n        },\r\n        bounceInOut: function (k) {\r\n            if (k < 0.5) {\r\n                return easing.bounceIn(k * 2) * 0.5;\r\n            }\r\n            return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\r\n        }\r\n    };\n\n    var Clip = (function () {\r\n        function Clip(opts) {\r\n            this._initialized = false;\r\n            this._startTime = 0;\r\n            this._pausedTime = 0;\r\n            this._paused = false;\r\n            this._life = opts.life || 1000;\r\n            this._delay = opts.delay || 0;\r\n            this.loop = opts.loop == null ? false : opts.loop;\r\n            this.gap = opts.gap || 0;\r\n            this.easing = opts.easing || 'linear';\r\n            this.onframe = opts.onframe;\r\n            this.ondestroy = opts.ondestroy;\r\n            this.onrestart = opts.onrestart;\r\n        }\r\n        Clip.prototype.step = function (globalTime, deltaTime) {\r\n            if (!this._initialized) {\r\n                this._startTime = globalTime + this._delay;\r\n                this._initialized = true;\r\n            }\r\n            if (this._paused) {\r\n                this._pausedTime += deltaTime;\r\n                return;\r\n            }\r\n            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;\r\n            if (percent < 0) {\r\n                percent = 0;\r\n            }\r\n            percent = Math.min(percent, 1);\r\n            var easing$1 = this.easing;\r\n            var easingFunc = typeof easing$1 === 'string'\r\n                ? easing[easing$1] : easing$1;\r\n            var schedule = typeof easingFunc === 'function'\r\n                ? easingFunc(percent)\r\n                : percent;\r\n            this.onframe && this.onframe(schedule);\r\n            if (percent === 1) {\r\n                if (this.loop) {\r\n                    this._restart(globalTime);\r\n                    this.onrestart && this.onrestart();\r\n                }\r\n                else {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Clip.prototype._restart = function (globalTime) {\r\n            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\r\n            this._startTime = globalTime - remainder + this.gap;\r\n            this._pausedTime = 0;\r\n        };\r\n        Clip.prototype.pause = function () {\r\n            this._paused = true;\r\n        };\r\n        Clip.prototype.resume = function () {\r\n            this._paused = false;\r\n        };\r\n        return Clip;\r\n    }());\n\n    var Entry = (function () {\r\n        function Entry(val) {\r\n            this.value = val;\r\n        }\r\n        return Entry;\r\n    }());\r\n    var LinkedList = (function () {\r\n        function LinkedList() {\r\n            this._len = 0;\r\n        }\r\n        LinkedList.prototype.insert = function (val) {\r\n            var entry = new Entry(val);\r\n            this.insertEntry(entry);\r\n            return entry;\r\n        };\r\n        LinkedList.prototype.insertEntry = function (entry) {\r\n            if (!this.head) {\r\n                this.head = this.tail = entry;\r\n            }\r\n            else {\r\n                this.tail.next = entry;\r\n                entry.prev = this.tail;\r\n                entry.next = null;\r\n                this.tail = entry;\r\n            }\r\n            this._len++;\r\n        };\r\n        LinkedList.prototype.remove = function (entry) {\r\n            var prev = entry.prev;\r\n            var next = entry.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this.head = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this.tail = prev;\r\n            }\r\n            entry.next = entry.prev = null;\r\n            this._len--;\r\n        };\r\n        LinkedList.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        LinkedList.prototype.clear = function () {\r\n            this.head = this.tail = null;\r\n            this._len = 0;\r\n        };\r\n        return LinkedList;\r\n    }());\r\n    var LRU = (function () {\r\n        function LRU(maxSize) {\r\n            this._list = new LinkedList();\r\n            this._maxSize = 10;\r\n            this._map = {};\r\n            this._maxSize = maxSize;\r\n        }\r\n        LRU.prototype.put = function (key, value) {\r\n            var list = this._list;\r\n            var map = this._map;\r\n            var removed = null;\r\n            if (map[key] == null) {\r\n                var len = list.len();\r\n                var entry = this._lastRemovedEntry;\r\n                if (len >= this._maxSize && len > 0) {\r\n                    var leastUsedEntry = list.head;\r\n                    list.remove(leastUsedEntry);\r\n                    delete map[leastUsedEntry.key];\r\n                    removed = leastUsedEntry.value;\r\n                    this._lastRemovedEntry = leastUsedEntry;\r\n                }\r\n                if (entry) {\r\n                    entry.value = value;\r\n                }\r\n                else {\r\n                    entry = new Entry(value);\r\n                }\r\n                entry.key = key;\r\n                list.insertEntry(entry);\r\n                map[key] = entry;\r\n            }\r\n            return removed;\r\n        };\r\n        LRU.prototype.get = function (key) {\r\n            var entry = this._map[key];\r\n            var list = this._list;\r\n            if (entry != null) {\r\n                if (entry !== list.tail) {\r\n                    list.remove(entry);\r\n                    list.insertEntry(entry);\r\n                }\r\n                return entry.value;\r\n            }\r\n        };\r\n        LRU.prototype.clear = function () {\r\n            this._list.clear();\r\n            this._map = {};\r\n        };\r\n        LRU.prototype.len = function () {\r\n            return this._list.len();\r\n        };\r\n        return LRU;\r\n    }());\n\n    var kCSSColorTable = {\r\n        'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\r\n        'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\r\n        'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\r\n        'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\r\n        'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\r\n        'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\r\n        'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\r\n        'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\r\n        'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\r\n        'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\r\n        'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\r\n        'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\r\n        'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\r\n        'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\r\n        'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\r\n        'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\r\n        'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\r\n        'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\r\n        'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\r\n        'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\r\n        'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\r\n        'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\r\n        'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\r\n        'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\r\n        'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\r\n        'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\r\n        'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\r\n        'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\r\n        'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\r\n        'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\r\n        'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\r\n        'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\r\n        'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\r\n        'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\r\n        'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\r\n        'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\r\n        'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\r\n        'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\r\n        'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\r\n        'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\r\n        'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\r\n        'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\r\n        'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\r\n        'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\r\n        'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\r\n        'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\r\n        'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\r\n        'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\r\n        'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\r\n        'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\r\n        'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\r\n        'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\r\n        'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\r\n        'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\r\n        'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\r\n        'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\r\n        'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\r\n        'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\r\n        'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\r\n        'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\r\n        'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\r\n        'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\r\n        'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\r\n        'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\r\n        'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\r\n        'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\r\n        'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\r\n        'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\r\n        'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\r\n        'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\r\n        'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\r\n        'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\r\n        'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\r\n        'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\r\n    };\r\n    function clampCssByte(i) {\r\n        i = Math.round(i);\r\n        return i < 0 ? 0 : i > 255 ? 255 : i;\r\n    }\r\n    function clampCssAngle(i) {\r\n        i = Math.round(i);\r\n        return i < 0 ? 0 : i > 360 ? 360 : i;\r\n    }\r\n    function clampCssFloat(f) {\r\n        return f < 0 ? 0 : f > 1 ? 1 : f;\r\n    }\r\n    function parseCssInt(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssByte(parseFloat(str) / 100 * 255);\r\n        }\r\n        return clampCssByte(parseInt(str, 10));\r\n    }\r\n    function parseCssFloat(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssFloat(parseFloat(str) / 100);\r\n        }\r\n        return clampCssFloat(parseFloat(str));\r\n    }\r\n    function cssHueToRgb(m1, m2, h) {\r\n        if (h < 0) {\r\n            h += 1;\r\n        }\r\n        else if (h > 1) {\r\n            h -= 1;\r\n        }\r\n        if (h * 6 < 1) {\r\n            return m1 + (m2 - m1) * h * 6;\r\n        }\r\n        if (h * 2 < 1) {\r\n            return m2;\r\n        }\r\n        if (h * 3 < 2) {\r\n            return m1 + (m2 - m1) * (2 / 3 - h) * 6;\r\n        }\r\n        return m1;\r\n    }\r\n    function lerpNumber(a, b, p) {\r\n        return a + (b - a) * p;\r\n    }\r\n    function setRgba(out, r, g, b, a) {\r\n        out[0] = r;\r\n        out[1] = g;\r\n        out[2] = b;\r\n        out[3] = a;\r\n        return out;\r\n    }\r\n    function copyRgba(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    var colorCache = new LRU(20);\r\n    var lastRemovedArr = null;\r\n    function putToCache(colorStr, rgbaArr) {\r\n        if (lastRemovedArr) {\r\n            copyRgba(lastRemovedArr, rgbaArr);\r\n        }\r\n        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\r\n    }\r\n    function parse(colorStr, rgbaArr) {\r\n        if (!colorStr) {\r\n            return;\r\n        }\r\n        rgbaArr = rgbaArr || [];\r\n        var cached = colorCache.get(colorStr);\r\n        if (cached) {\r\n            return copyRgba(rgbaArr, cached);\r\n        }\r\n        colorStr = colorStr + '';\r\n        var str = colorStr.replace(/ /g, '').toLowerCase();\r\n        if (str in kCSSColorTable) {\r\n            copyRgba(rgbaArr, kCSSColorTable[str]);\r\n            putToCache(colorStr, rgbaArr);\r\n            return rgbaArr;\r\n        }\r\n        var strLen = str.length;\r\n        if (str.charAt(0) === '#') {\r\n            if (strLen === 4 || strLen === 5) {\r\n                var iv = parseInt(str.slice(1, 4), 16);\r\n                if (!(iv >= 0 && iv <= 0xfff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            else if (strLen === 7 || strLen === 9) {\r\n                var iv = parseInt(str.slice(1, 7), 16);\r\n                if (!(iv >= 0 && iv <= 0xffffff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            return;\r\n        }\r\n        var op = str.indexOf('(');\r\n        var ep = str.indexOf(')');\r\n        if (op !== -1 && ep + 1 === strLen) {\r\n            var fname = str.substr(0, op);\r\n            var params = str.substr(op + 1, ep - (op + 1)).split(',');\r\n            var alpha = 1;\r\n            switch (fname) {\r\n                case 'rgba':\r\n                    if (params.length !== 4) {\r\n                        return params.length === 3\r\n                            ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\r\n                            : setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    }\r\n                    alpha = parseCssFloat(params.pop());\r\n                case 'rgb':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsla':\r\n                    if (params.length !== 4) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    params[3] = parseCssFloat(params[3]);\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsl':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                default:\r\n                    return;\r\n            }\r\n        }\r\n        setRgba(rgbaArr, 0, 0, 0, 1);\r\n        return;\r\n    }\r\n    function hsla2rgba(hsla, rgba) {\r\n        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\r\n        var s = parseCssFloat(hsla[1]);\r\n        var l = parseCssFloat(hsla[2]);\r\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n        var m1 = l * 2 - m2;\r\n        rgba = rgba || [];\r\n        setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\r\n        if (hsla.length === 4) {\r\n            rgba[3] = hsla[3];\r\n        }\r\n        return rgba;\r\n    }\r\n    function rgba2hsla(rgba) {\r\n        if (!rgba) {\r\n            return;\r\n        }\r\n        var R = rgba[0] / 255;\r\n        var G = rgba[1] / 255;\r\n        var B = rgba[2] / 255;\r\n        var vMin = Math.min(R, G, B);\r\n        var vMax = Math.max(R, G, B);\r\n        var delta = vMax - vMin;\r\n        var L = (vMax + vMin) / 2;\r\n        var H;\r\n        var S;\r\n        if (delta === 0) {\r\n            H = 0;\r\n            S = 0;\r\n        }\r\n        else {\r\n            if (L < 0.5) {\r\n                S = delta / (vMax + vMin);\r\n            }\r\n            else {\r\n                S = delta / (2 - vMax - vMin);\r\n            }\r\n            var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\r\n            var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\r\n            var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\r\n            if (R === vMax) {\r\n                H = deltaB - deltaG;\r\n            }\r\n            else if (G === vMax) {\r\n                H = (1 / 3) + deltaR - deltaB;\r\n            }\r\n            else if (B === vMax) {\r\n                H = (2 / 3) + deltaG - deltaR;\r\n            }\r\n            if (H < 0) {\r\n                H += 1;\r\n            }\r\n            if (H > 1) {\r\n                H -= 1;\r\n            }\r\n        }\r\n        var hsla = [H * 360, S, L];\r\n        if (rgba[3] != null) {\r\n            hsla.push(rgba[3]);\r\n        }\r\n        return hsla;\r\n    }\r\n    function lift(color, level) {\r\n        var colorArr = parse(color);\r\n        if (colorArr) {\r\n            for (var i = 0; i < 3; i++) {\r\n                if (level < 0) {\r\n                    colorArr[i] = colorArr[i] * (1 - level) | 0;\r\n                }\r\n                else {\r\n                    colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\r\n                }\r\n                if (colorArr[i] > 255) {\r\n                    colorArr[i] = 255;\r\n                }\r\n                else if (colorArr[i] < 0) {\r\n                    colorArr[i] = 0;\r\n                }\r\n            }\r\n            return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\r\n        }\r\n    }\r\n    function toHex(color) {\r\n        var colorArr = parse(color);\r\n        if (colorArr) {\r\n            return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\r\n        }\r\n    }\r\n    function fastLerp(normalizedValue, colors, out) {\r\n        if (!(colors && colors.length)\r\n            || !(normalizedValue >= 0 && normalizedValue <= 1)) {\r\n            return;\r\n        }\r\n        out = out || [];\r\n        var value = normalizedValue * (colors.length - 1);\r\n        var leftIndex = Math.floor(value);\r\n        var rightIndex = Math.ceil(value);\r\n        var leftColor = colors[leftIndex];\r\n        var rightColor = colors[rightIndex];\r\n        var dv = value - leftIndex;\r\n        out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\r\n        out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\r\n        out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\r\n        out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\r\n        return out;\r\n    }\r\n    var fastMapToColor = fastLerp;\r\n    function lerp$1(normalizedValue, colors, fullOutput) {\r\n        if (!(colors && colors.length)\r\n            || !(normalizedValue >= 0 && normalizedValue <= 1)) {\r\n            return;\r\n        }\r\n        var value = normalizedValue * (colors.length - 1);\r\n        var leftIndex = Math.floor(value);\r\n        var rightIndex = Math.ceil(value);\r\n        var leftColor = parse(colors[leftIndex]);\r\n        var rightColor = parse(colors[rightIndex]);\r\n        var dv = value - leftIndex;\r\n        var color = stringify([\r\n            clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\r\n            clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\r\n            clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\r\n            clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\r\n        ], 'rgba');\r\n        return fullOutput\r\n            ? {\r\n                color: color,\r\n                leftIndex: leftIndex,\r\n                rightIndex: rightIndex,\r\n                value: value\r\n            }\r\n            : color;\r\n    }\r\n    var mapToColor = lerp$1;\r\n    function modifyHSL(color, h, s, l) {\r\n        var colorArr = parse(color);\r\n        if (color) {\r\n            colorArr = rgba2hsla(colorArr);\r\n            h != null && (colorArr[0] = clampCssAngle(h));\r\n            s != null && (colorArr[1] = parseCssFloat(s));\r\n            l != null && (colorArr[2] = parseCssFloat(l));\r\n            return stringify(hsla2rgba(colorArr), 'rgba');\r\n        }\r\n    }\r\n    function modifyAlpha(color, alpha) {\r\n        var colorArr = parse(color);\r\n        if (colorArr && alpha != null) {\r\n            colorArr[3] = clampCssFloat(alpha);\r\n            return stringify(colorArr, 'rgba');\r\n        }\r\n    }\r\n    function stringify(arrColor, type) {\r\n        if (!arrColor || !arrColor.length) {\r\n            return;\r\n        }\r\n        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\r\n        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\r\n            colorStr += ',' + arrColor[3];\r\n        }\r\n        return type + '(' + colorStr + ')';\r\n    }\r\n    function lum(color, backgroundLum) {\r\n        var arr = parse(color);\r\n        return arr\r\n            ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\r\n                + (1 - arr[3]) * backgroundLum\r\n            : 0;\r\n    }\r\n    function random() {\r\n        var r = Math.round(Math.random() * 255);\r\n        var g = Math.round(Math.random() * 255);\r\n        var b = Math.round(Math.random() * 255);\r\n        return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n    }\n\n    var color = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        parse: parse,\n        lift: lift,\n        toHex: toHex,\n        fastLerp: fastLerp,\n        fastMapToColor: fastMapToColor,\n        lerp: lerp$1,\n        mapToColor: mapToColor,\n        modifyHSL: modifyHSL,\n        modifyAlpha: modifyAlpha,\n        stringify: stringify,\n        lum: lum,\n        random: random\n    });\n\n    var arraySlice = Array.prototype.slice;\r\n    function interpolateNumber(p0, p1, percent) {\r\n        return (p1 - p0) * percent + p0;\r\n    }\r\n    function step(p0, p1, percent) {\r\n        return percent > 0.5 ? p1 : p0;\r\n    }\r\n    function interpolate1DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = interpolateNumber(p0[i], p1[i], percent);\r\n        }\r\n    }\r\n    function interpolate2DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\r\n            }\r\n        }\r\n    }\r\n    function add1DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = p0[i] + p1[i] * sign;\r\n        }\r\n        return out;\r\n    }\r\n    function add2DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = p0[i][j] + p1[i][j] * sign;\r\n            }\r\n        }\r\n        return out;\r\n    }\r\n    function fillArray(val0, val1, arrDim) {\r\n        var arr0 = val0;\r\n        var arr1 = val1;\r\n        if (!arr0.push || !arr1.push) {\r\n            return;\r\n        }\r\n        var arr0Len = arr0.length;\r\n        var arr1Len = arr1.length;\r\n        if (arr0Len !== arr1Len) {\r\n            var isPreviousLarger = arr0Len > arr1Len;\r\n            if (isPreviousLarger) {\r\n                arr0.length = arr1Len;\r\n            }\r\n            else {\r\n                for (var i = arr0Len; i < arr1Len; i++) {\r\n                    arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\r\n                }\r\n            }\r\n        }\r\n        var len2 = arr0[0] && arr0[0].length;\r\n        for (var i = 0; i < arr0.length; i++) {\r\n            if (arrDim === 1) {\r\n                if (isNaN(arr0[i])) {\r\n                    arr0[i] = arr1[i];\r\n                }\r\n            }\r\n            else {\r\n                for (var j = 0; j < len2; j++) {\r\n                    if (isNaN(arr0[i][j])) {\r\n                        arr0[i][j] = arr1[i][j];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function is1DArraySame(arr0, arr1) {\r\n        var len = arr0.length;\r\n        if (len !== arr1.length) {\r\n            return false;\r\n        }\r\n        for (var i = 0; i < len; i++) {\r\n            if (arr0[i] !== arr1[i]) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function catmullRomInterpolate1DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\r\n        }\r\n    }\r\n    function catmullRomInterpolate2DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        var len2 = p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[1] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\r\n            }\r\n        }\r\n    }\r\n    function cloneValue(value) {\r\n        if (isArrayLike(value)) {\r\n            var len = value.length;\r\n            if (isArrayLike(value[0])) {\r\n                var ret = [];\r\n                for (var i = 0; i < len; i++) {\r\n                    ret.push(arraySlice.call(value[i]));\r\n                }\r\n                return ret;\r\n            }\r\n            return arraySlice.call(value);\r\n        }\r\n        return value;\r\n    }\r\n    function rgba2String(rgba) {\r\n        rgba[0] = Math.floor(rgba[0]);\r\n        rgba[1] = Math.floor(rgba[1]);\r\n        rgba[2] = Math.floor(rgba[2]);\r\n        return 'rgba(' + rgba.join(',') + ')';\r\n    }\r\n    function guessArrayDim(value) {\r\n        return isArrayLike(value && value[0]) ? 2 : 1;\r\n    }\r\n    var tmpRgba = [0, 0, 0, 0];\r\n    var Track = (function () {\r\n        function Track(propName) {\r\n            this.keyframes = [];\r\n            this.maxTime = 0;\r\n            this.arrDim = 0;\r\n            this.interpolable = true;\r\n            this._needsSort = false;\r\n            this._isAllValueEqual = true;\r\n            this._lastFrame = 0;\r\n            this._lastFramePercent = 0;\r\n            this.propName = propName;\r\n        }\r\n        Track.prototype.isFinished = function () {\r\n            return this._finished;\r\n        };\r\n        Track.prototype.setFinished = function () {\r\n            this._finished = true;\r\n            if (this._additiveTrack) {\r\n                this._additiveTrack.setFinished();\r\n            }\r\n        };\r\n        Track.prototype.needsAnimate = function () {\r\n            return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable;\r\n        };\r\n        Track.prototype.getAdditiveTrack = function () {\r\n            return this._additiveTrack;\r\n        };\r\n        Track.prototype.addKeyframe = function (time, value) {\r\n            if (time >= this.maxTime) {\r\n                this.maxTime = time;\r\n            }\r\n            else {\r\n                this._needsSort = true;\r\n            }\r\n            var keyframes = this.keyframes;\r\n            var len = keyframes.length;\r\n            if (this.interpolable) {\r\n                if (isArrayLike(value)) {\r\n                    var arrayDim = guessArrayDim(value);\r\n                    if (len > 0 && this.arrDim !== arrayDim) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (arrayDim === 1 && typeof value[0] !== 'number'\r\n                        || arrayDim === 2 && typeof value[0][0] !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this._isAllValueEqual) {\r\n                            if (arrayDim === 1) {\r\n                                if (!is1DArraySame(value, lastFrame.value)) {\r\n                                    this._isAllValueEqual = false;\r\n                                }\r\n                            }\r\n                            else {\r\n                                this._isAllValueEqual = false;\r\n                            }\r\n                        }\r\n                    }\r\n                    this.arrDim = arrayDim;\r\n                }\r\n                else {\r\n                    if (this.arrDim > 0) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (typeof value === 'string') {\r\n                        var colorArray = parse(value);\r\n                        if (colorArray) {\r\n                            value = colorArray;\r\n                            this.isValueColor = true;\r\n                        }\r\n                        else {\r\n                            this.interpolable = false;\r\n                        }\r\n                    }\r\n                    else if (typeof value !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (this._isAllValueEqual && len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                        else if (lastFrame.value !== value) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            var kf = {\r\n                time: time,\r\n                value: value,\r\n                percent: 0\r\n            };\r\n            this.keyframes.push(kf);\r\n            return kf;\r\n        };\r\n        Track.prototype.prepare = function (additiveTrack) {\r\n            var kfs = this.keyframes;\r\n            if (this._needsSort) {\r\n                kfs.sort(function (a, b) {\r\n                    return a.time - b.time;\r\n                });\r\n            }\r\n            var arrDim = this.arrDim;\r\n            var kfsLen = kfs.length;\r\n            var lastKf = kfs[kfsLen - 1];\r\n            for (var i = 0; i < kfsLen; i++) {\r\n                kfs[i].percent = kfs[i].time / this.maxTime;\r\n                if (arrDim > 0 && i !== kfsLen - 1) {\r\n                    fillArray(kfs[i].value, lastKf.value, arrDim);\r\n                }\r\n            }\r\n            if (additiveTrack\r\n                && this.needsAnimate()\r\n                && additiveTrack.needsAnimate()\r\n                && arrDim === additiveTrack.arrDim\r\n                && this.isValueColor === additiveTrack.isValueColor\r\n                && !additiveTrack._finished) {\r\n                this._additiveTrack = additiveTrack;\r\n                var startValue = kfs[0].value;\r\n                for (var i = 0; i < kfsLen; i++) {\r\n                    if (arrDim === 0) {\r\n                        if (this.isValueColor) {\r\n                            kfs[i].additiveValue\r\n                                = add1DArray([], kfs[i].value, startValue, -1);\r\n                        }\r\n                        else {\r\n                            kfs[i].additiveValue = kfs[i].value - startValue;\r\n                        }\r\n                    }\r\n                    else if (arrDim === 1) {\r\n                        kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                    else if (arrDim === 2) {\r\n                        kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Track.prototype.step = function (target, percent) {\r\n            if (this._finished) {\r\n                return;\r\n            }\r\n            if (this._additiveTrack && this._additiveTrack._finished) {\r\n                this._additiveTrack = null;\r\n            }\r\n            var isAdditive = this._additiveTrack != null;\r\n            var valueKey = isAdditive ? 'additiveValue' : 'value';\r\n            var keyframes = this.keyframes;\r\n            var kfsNum = this.keyframes.length;\r\n            var propName = this.propName;\r\n            var arrDim = this.arrDim;\r\n            var isValueColor = this.isValueColor;\r\n            var frameIdx;\r\n            if (percent < 0) {\r\n                frameIdx = 0;\r\n            }\r\n            else if (percent < this._lastFramePercent) {\r\n                var start = Math.min(this._lastFrame + 1, kfsNum - 1);\r\n                for (frameIdx = start; frameIdx >= 0; frameIdx--) {\r\n                    if (keyframes[frameIdx].percent <= percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx, kfsNum - 2);\r\n            }\r\n            else {\r\n                for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) {\r\n                    if (keyframes[frameIdx].percent > percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx - 1, kfsNum - 2);\r\n            }\r\n            var nextFrame = keyframes[frameIdx + 1];\r\n            var frame = keyframes[frameIdx];\r\n            if (!(frame && nextFrame)) {\r\n                return;\r\n            }\r\n            this._lastFrame = frameIdx;\r\n            this._lastFramePercent = percent;\r\n            var range = (nextFrame.percent - frame.percent);\r\n            if (range === 0) {\r\n                return;\r\n            }\r\n            var w = (percent - frame.percent) / range;\r\n            var targetArr = isAdditive ? this._additiveValue\r\n                : (isValueColor ? tmpRgba : target[propName]);\r\n            if ((arrDim > 0 || isValueColor) && !targetArr) {\r\n                targetArr = this._additiveValue = [];\r\n            }\r\n            if (this.useSpline) {\r\n                var p1 = keyframes[frameIdx][valueKey];\r\n                var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey];\r\n                var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey];\r\n                var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey];\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w)\r\n                        : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                }\r\n                else if (isValueColor) {\r\n                    catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = p2;\r\n                    }\r\n                    else {\r\n                        value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\r\n                        : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                }\r\n                else if (isValueColor) {\r\n                    interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = step(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    else {\r\n                        value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            if (isAdditive) {\r\n                this._addToTarget(target);\r\n            }\r\n        };\r\n        Track.prototype._addToTarget = function (target) {\r\n            var arrDim = this.arrDim;\r\n            var propName = this.propName;\r\n            var additiveValue = this._additiveValue;\r\n            if (arrDim === 0) {\r\n                if (this.isValueColor) {\r\n                    parse(target[propName], tmpRgba);\r\n                    add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\r\n                    target[propName] = rgba2String(tmpRgba);\r\n                }\r\n                else {\r\n                    target[propName] = target[propName] + additiveValue;\r\n                }\r\n            }\r\n            else if (arrDim === 1) {\r\n                add1DArray(target[propName], target[propName], additiveValue, 1);\r\n            }\r\n            else if (arrDim === 2) {\r\n                add2DArray(target[propName], target[propName], additiveValue, 1);\r\n            }\r\n        };\r\n        return Track;\r\n    }());\r\n    var Animator = (function () {\r\n        function Animator(target, loop, additiveTo) {\r\n            this._tracks = {};\r\n            this._trackKeys = [];\r\n            this._delay = 0;\r\n            this._maxTime = 0;\r\n            this._paused = false;\r\n            this._started = 0;\r\n            this._clip = null;\r\n            this._target = target;\r\n            this._loop = loop;\r\n            if (loop && additiveTo) {\r\n                logError('Can\\' use additive animation on looped animation.');\r\n                return;\r\n            }\r\n            this._additiveAnimators = additiveTo;\r\n        }\r\n        Animator.prototype.getTarget = function () {\r\n            return this._target;\r\n        };\r\n        Animator.prototype.changeTarget = function (target) {\r\n            this._target = target;\r\n        };\r\n        Animator.prototype.when = function (time, props) {\r\n            return this.whenWithKeys(time, props, keys(props));\r\n        };\r\n        Animator.prototype.whenWithKeys = function (time, props, propNames) {\r\n            var tracks = this._tracks;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var propName = propNames[i];\r\n                var track = tracks[propName];\r\n                if (!track) {\r\n                    track = tracks[propName] = new Track(propName);\r\n                    var initialValue = void 0;\r\n                    var additiveTrack = this._getAdditiveTrack(propName);\r\n                    if (additiveTrack) {\r\n                        var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1];\r\n                        initialValue = lastFinalKf && lastFinalKf.value;\r\n                        if (additiveTrack.isValueColor && initialValue) {\r\n                            initialValue = rgba2String(initialValue);\r\n                        }\r\n                    }\r\n                    else {\r\n                        initialValue = this._target[propName];\r\n                    }\r\n                    if (initialValue == null) {\r\n                        continue;\r\n                    }\r\n                    if (time !== 0) {\r\n                        track.addKeyframe(0, cloneValue(initialValue));\r\n                    }\r\n                    this._trackKeys.push(propName);\r\n                }\r\n                track.addKeyframe(time, cloneValue(props[propName]));\r\n            }\r\n            this._maxTime = Math.max(this._maxTime, time);\r\n            return this;\r\n        };\r\n        Animator.prototype.pause = function () {\r\n            this._clip.pause();\r\n            this._paused = true;\r\n        };\r\n        Animator.prototype.resume = function () {\r\n            this._clip.resume();\r\n            this._paused = false;\r\n        };\r\n        Animator.prototype.isPaused = function () {\r\n            return !!this._paused;\r\n        };\r\n        Animator.prototype._doneCallback = function () {\r\n            this._setTracksFinished();\r\n            this._clip = null;\r\n            var doneList = this._doneList;\r\n            if (doneList) {\r\n                var len = doneList.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    doneList[i].call(this);\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype._abortedCallback = function () {\r\n            this._setTracksFinished();\r\n            var animation = this.animation;\r\n            var abortedList = this._abortedList;\r\n            if (animation) {\r\n                animation.removeClip(this._clip);\r\n            }\r\n            this._clip = null;\r\n            if (abortedList) {\r\n                for (var i = 0; i < abortedList.length; i++) {\r\n                    abortedList[i].call(this);\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype._setTracksFinished = function () {\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                tracks[tracksKeys[i]].setFinished();\r\n            }\r\n        };\r\n        Animator.prototype._getAdditiveTrack = function (trackName) {\r\n            var additiveTrack;\r\n            var additiveAnimators = this._additiveAnimators;\r\n            if (additiveAnimators) {\r\n                for (var i = 0; i < additiveAnimators.length; i++) {\r\n                    var track = additiveAnimators[i].getTrack(trackName);\r\n                    if (track) {\r\n                        additiveTrack = track;\r\n                    }\r\n                }\r\n            }\r\n            return additiveTrack;\r\n        };\r\n        Animator.prototype.start = function (easing, forceAnimate) {\r\n            if (this._started > 0) {\r\n                return;\r\n            }\r\n            this._started = 1;\r\n            var self = this;\r\n            var tracks = [];\r\n            for (var i = 0; i < this._trackKeys.length; i++) {\r\n                var propName = this._trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                var additiveTrack = this._getAdditiveTrack(propName);\r\n                var kfs = track.keyframes;\r\n                track.prepare(additiveTrack);\r\n                if (track.needsAnimate()) {\r\n                    tracks.push(track);\r\n                }\r\n                else if (!track.interpolable) {\r\n                    var lastKf = kfs[kfs.length - 1];\r\n                    if (lastKf) {\r\n                        self._target[track.propName] = lastKf.value;\r\n                    }\r\n                }\r\n            }\r\n            if (tracks.length || forceAnimate) {\r\n                var clip = new Clip({\r\n                    life: this._maxTime,\r\n                    loop: this._loop,\r\n                    delay: this._delay,\r\n                    onframe: function (percent) {\r\n                        self._started = 2;\r\n                        var additiveAnimators = self._additiveAnimators;\r\n                        if (additiveAnimators) {\r\n                            var stillHasAdditiveAnimator = false;\r\n                            for (var i = 0; i < additiveAnimators.length; i++) {\r\n                                if (additiveAnimators[i]._clip) {\r\n                                    stillHasAdditiveAnimator = true;\r\n                                    break;\r\n                                }\r\n                            }\r\n                            if (!stillHasAdditiveAnimator) {\r\n                                self._additiveAnimators = null;\r\n                            }\r\n                        }\r\n                        for (var i = 0; i < tracks.length; i++) {\r\n                            tracks[i].step(self._target, percent);\r\n                        }\r\n                        var onframeList = self._onframeList;\r\n                        if (onframeList) {\r\n                            for (var i = 0; i < onframeList.length; i++) {\r\n                                onframeList[i](self._target, percent);\r\n                            }\r\n                        }\r\n                    },\r\n                    ondestroy: function () {\r\n                        self._doneCallback();\r\n                    }\r\n                });\r\n                this._clip = clip;\r\n                if (this.animation) {\r\n                    this.animation.addClip(clip);\r\n                }\r\n                if (easing && easing !== 'spline') {\r\n                    clip.easing = easing;\r\n                }\r\n            }\r\n            else {\r\n                this._doneCallback();\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.stop = function (forwardToLast) {\r\n            if (!this._clip) {\r\n                return;\r\n            }\r\n            var clip = this._clip;\r\n            if (forwardToLast) {\r\n                clip.onframe(1);\r\n            }\r\n            this._abortedCallback();\r\n        };\r\n        Animator.prototype.delay = function (time) {\r\n            this._delay = time;\r\n            return this;\r\n        };\r\n        Animator.prototype.during = function (cb) {\r\n            if (cb) {\r\n                if (!this._onframeList) {\r\n                    this._onframeList = [];\r\n                }\r\n                this._onframeList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.done = function (cb) {\r\n            if (cb) {\r\n                if (!this._doneList) {\r\n                    this._doneList = [];\r\n                }\r\n                this._doneList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.aborted = function (cb) {\r\n            if (cb) {\r\n                if (!this._abortedList) {\r\n                    this._abortedList = [];\r\n                }\r\n                this._abortedList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.getClip = function () {\r\n            return this._clip;\r\n        };\r\n        Animator.prototype.getTrack = function (propName) {\r\n            return this._tracks[propName];\r\n        };\r\n        Animator.prototype.stopTracks = function (propNames, forwardToLast) {\r\n            if (!propNames.length || !this._clip) {\r\n                return true;\r\n            }\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var track = tracks[propNames[i]];\r\n                if (track) {\r\n                    if (forwardToLast) {\r\n                        track.step(this._target, 1);\r\n                    }\r\n                    else if (this._started === 1) {\r\n                        track.step(this._target, 0);\r\n                    }\r\n                    track.setFinished();\r\n                }\r\n            }\r\n            var allAborted = true;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                if (!tracks[tracksKeys[i]].isFinished()) {\r\n                    allAborted = false;\r\n                    break;\r\n                }\r\n            }\r\n            if (allAborted) {\r\n                this._abortedCallback();\r\n            }\r\n            return allAborted;\r\n        };\r\n        Animator.prototype.saveFinalToTarget = function (target, trackKeys) {\r\n            if (!target) {\r\n                return;\r\n            }\r\n            trackKeys = trackKeys || this._trackKeys;\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track || track.isFinished()) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                var lastKf = kfs[kfs.length - 1];\r\n                if (lastKf) {\r\n                    var val = cloneValue(lastKf.value);\r\n                    if (track.isValueColor) {\r\n                        val = rgba2String(val);\r\n                    }\r\n                    target[propName] = val;\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\r\n            trackKeys = trackKeys || keys(finalProps);\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                if (kfs.length > 1) {\r\n                    var lastKf = kfs.pop();\r\n                    track.addKeyframe(lastKf.time, finalProps[propName]);\r\n                    track.prepare(track.getAdditiveTrack());\r\n                }\r\n            }\r\n        };\r\n        return Animator;\r\n    }());\n\n    var Point = (function () {\r\n        function Point(x, y) {\r\n            this.x = x || 0;\r\n            this.y = y || 0;\r\n        }\r\n        Point.prototype.copy = function (other) {\r\n            this.x = other.x;\r\n            this.y = other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.clone = function () {\r\n            return new Point(this.x, this.y);\r\n        };\r\n        Point.prototype.set = function (x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n            return this;\r\n        };\r\n        Point.prototype.equal = function (other) {\r\n            return other.x === this.x && other.y === this.y;\r\n        };\r\n        Point.prototype.add = function (other) {\r\n            this.x += other.x;\r\n            this.y += other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.scale = function (scalar) {\r\n            this.x *= scalar;\r\n            this.y *= scalar;\r\n        };\r\n        Point.prototype.scaleAndAdd = function (other, scalar) {\r\n            this.x += other.x * scalar;\r\n            this.y += other.y * scalar;\r\n        };\r\n        Point.prototype.sub = function (other) {\r\n            this.x -= other.x;\r\n            this.y -= other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.dot = function (other) {\r\n            return this.x * other.x + this.y * other.y;\r\n        };\r\n        Point.prototype.len = function () {\r\n            return Math.sqrt(this.x * this.x + this.y * this.y);\r\n        };\r\n        Point.prototype.lenSquare = function () {\r\n            return this.x * this.x + this.y * this.y;\r\n        };\r\n        Point.prototype.normalize = function () {\r\n            var len = this.len();\r\n            this.x /= len;\r\n            this.y /= len;\r\n            return this;\r\n        };\r\n        Point.prototype.distance = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return Math.sqrt(dx * dx + dy * dy);\r\n        };\r\n        Point.prototype.distanceSquare = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return dx * dx + dy * dy;\r\n        };\r\n        Point.prototype.negate = function () {\r\n            this.x = -this.x;\r\n            this.y = -this.y;\r\n            return this;\r\n        };\r\n        Point.prototype.transform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var x = this.x;\r\n            var y = this.y;\r\n            this.x = m[0] * x + m[2] * y + m[4];\r\n            this.y = m[1] * x + m[3] * y + m[5];\r\n            return this;\r\n        };\r\n        Point.prototype.toArray = function (out) {\r\n            out[0] = this.x;\r\n            out[1] = this.y;\r\n            return out;\r\n        };\r\n        Point.prototype.fromArray = function (input) {\r\n            this.x = input[0];\r\n            this.y = input[1];\r\n        };\r\n        Point.set = function (p, x, y) {\r\n            p.x = x;\r\n            p.y = y;\r\n        };\r\n        Point.copy = function (p, p2) {\r\n            p.x = p2.x;\r\n            p.y = p2.y;\r\n        };\r\n        Point.len = function (p) {\r\n            return Math.sqrt(p.x * p.x + p.y * p.y);\r\n        };\r\n        Point.lenSquare = function (p) {\r\n            return p.x * p.x + p.y * p.y;\r\n        };\r\n        Point.dot = function (p0, p1) {\r\n            return p0.x * p1.x + p0.y * p1.y;\r\n        };\r\n        Point.add = function (out, p0, p1) {\r\n            out.x = p0.x + p1.x;\r\n            out.y = p0.y + p1.y;\r\n        };\r\n        Point.sub = function (out, p0, p1) {\r\n            out.x = p0.x - p1.x;\r\n            out.y = p0.y - p1.y;\r\n        };\r\n        Point.scale = function (out, p0, scalar) {\r\n            out.x = p0.x * scalar;\r\n            out.y = p0.y * scalar;\r\n        };\r\n        Point.scaleAndAdd = function (out, p0, p1, scalar) {\r\n            out.x = p0.x + p1.x * scalar;\r\n            out.y = p0.y + p1.y * scalar;\r\n        };\r\n        Point.lerp = function (out, p0, p1, t) {\r\n            var onet = 1 - t;\r\n            out.x = onet * p0.x + t * p1.x;\r\n            out.y = onet * p0.y + t * p1.y;\r\n        };\r\n        return Point;\r\n    }());\n\n    var mathMin = Math.min;\r\n    var mathMax = Math.max;\r\n    var lt = new Point();\r\n    var rb = new Point();\r\n    var lb = new Point();\r\n    var rt = new Point();\r\n    var minTv = new Point();\r\n    var maxTv = new Point();\r\n    var BoundingRect = (function () {\r\n        function BoundingRect(x, y, width, height) {\r\n            if (width < 0 && isFinite(width)) {\r\n                x = x + width;\r\n                width = -width;\r\n            }\r\n            if (height < 0 && isFinite(height)) {\r\n                y = y + height;\r\n                height = -height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n            this.width = width;\r\n            this.height = height;\r\n        }\r\n        BoundingRect.prototype.union = function (other) {\r\n            var x = mathMin(other.x, this.x);\r\n            var y = mathMin(other.y, this.y);\r\n            if (isFinite(this.x) && isFinite(this.width)) {\r\n                this.width = mathMax(other.x + other.width, this.x + this.width) - x;\r\n            }\r\n            else {\r\n                this.width = other.width;\r\n            }\r\n            if (isFinite(this.y) && isFinite(this.height)) {\r\n                this.height = mathMax(other.y + other.height, this.y + this.height) - y;\r\n            }\r\n            else {\r\n                this.height = other.height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n        };\r\n        BoundingRect.prototype.applyTransform = function (m) {\r\n            BoundingRect.applyTransform(this, this, m);\r\n        };\r\n        BoundingRect.prototype.calculateTransform = function (b) {\r\n            var a = this;\r\n            var sx = b.width / a.width;\r\n            var sy = b.height / a.height;\r\n            var m = create$1();\r\n            translate(m, m, [-a.x, -a.y]);\r\n            scale$1(m, m, [sx, sy]);\r\n            translate(m, m, [b.x, b.y]);\r\n            return m;\r\n        };\r\n        BoundingRect.prototype.intersect = function (b, mtv) {\r\n            if (!b) {\r\n                return false;\r\n            }\r\n            if (!(b instanceof BoundingRect)) {\r\n                b = BoundingRect.create(b);\r\n            }\r\n            var a = this;\r\n            var ax0 = a.x;\r\n            var ax1 = a.x + a.width;\r\n            var ay0 = a.y;\r\n            var ay1 = a.y + a.height;\r\n            var bx0 = b.x;\r\n            var bx1 = b.x + b.width;\r\n            var by0 = b.y;\r\n            var by1 = b.y + b.height;\r\n            var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\r\n            if (mtv) {\r\n                var dMin = Infinity;\r\n                var dMax = 0;\r\n                var d0 = Math.abs(ax1 - bx0);\r\n                var d1 = Math.abs(bx1 - ax0);\r\n                var d2 = Math.abs(ay1 - by0);\r\n                var d3 = Math.abs(by1 - ay0);\r\n                var dx = Math.min(d0, d1);\r\n                var dy = Math.min(d2, d3);\r\n                if (ax1 < bx0 || bx1 < ax0) {\r\n                    if (dx > dMax) {\r\n                        dMax = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(maxTv, -d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(minTv, d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, -d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                if (ay1 < by0 || by1 < ay0) {\r\n                    if (dy > dMax) {\r\n                        dMax = dy;\r\n                        if (d2 < d3) {\r\n                            Point.set(maxTv, 0, -d2);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, 0, d3);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d2 < d3) {\r\n                            Point.set(minTv, 0, d2);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, 0, -d3);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (mtv) {\r\n                Point.copy(mtv, overlap ? minTv : maxTv);\r\n            }\r\n            return overlap;\r\n        };\r\n        BoundingRect.prototype.contain = function (x, y) {\r\n            var rect = this;\r\n            return x >= rect.x\r\n                && x <= (rect.x + rect.width)\r\n                && y >= rect.y\r\n                && y <= (rect.y + rect.height);\r\n        };\r\n        BoundingRect.prototype.clone = function () {\r\n            return new BoundingRect(this.x, this.y, this.width, this.height);\r\n        };\r\n        BoundingRect.prototype.copy = function (other) {\r\n            BoundingRect.copy(this, other);\r\n        };\r\n        BoundingRect.prototype.plain = function () {\r\n            return {\r\n                x: this.x,\r\n                y: this.y,\r\n                width: this.width,\r\n                height: this.height\r\n            };\r\n        };\r\n        BoundingRect.prototype.isFinite = function () {\r\n            return isFinite(this.x)\r\n                && isFinite(this.y)\r\n                && isFinite(this.width)\r\n                && isFinite(this.height);\r\n        };\r\n        BoundingRect.prototype.isZero = function () {\r\n            return this.width === 0 || this.height === 0;\r\n        };\r\n        BoundingRect.create = function (rect) {\r\n            return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\r\n        };\r\n        BoundingRect.copy = function (target, source) {\r\n            target.x = source.x;\r\n            target.y = source.y;\r\n            target.width = source.width;\r\n            target.height = source.height;\r\n        };\r\n        BoundingRect.applyTransform = function (target, source, m) {\r\n            if (!m) {\r\n                if (target !== source) {\r\n                    BoundingRect.copy(target, source);\r\n                }\r\n                return;\r\n            }\r\n            if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\r\n                var sx = m[0];\r\n                var sy = m[3];\r\n                var tx = m[4];\r\n                var ty = m[5];\r\n                target.x = source.x * sx + tx;\r\n                target.y = source.y * sy + ty;\r\n                target.width = source.width * sx;\r\n                target.height = source.height * sy;\r\n                if (target.width < 0) {\r\n                    target.x += target.width;\r\n                    target.width = -target.width;\r\n                }\r\n                if (target.height < 0) {\r\n                    target.y += target.height;\r\n                    target.height = -target.height;\r\n                }\r\n                return;\r\n            }\r\n            lt.x = lb.x = source.x;\r\n            lt.y = rt.y = source.y;\r\n            rb.x = rt.x = source.x + source.width;\r\n            rb.y = lb.y = source.y + source.height;\r\n            lt.transform(m);\r\n            rt.transform(m);\r\n            rb.transform(m);\r\n            lb.transform(m);\r\n            target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\r\n            target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\r\n            var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\r\n            var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\r\n            target.width = maxX - target.x;\r\n            target.height = maxY - target.y;\r\n        };\r\n        return BoundingRect;\r\n    }());\n\n    var textWidthCache = {};\r\n    var DEFAULT_FONT = '12px sans-serif';\r\n    var _ctx;\r\n    var _cachedFont;\r\n    function defaultMeasureText(text, font) {\r\n        if (!_ctx) {\r\n            _ctx = createCanvas().getContext('2d');\r\n        }\r\n        if (_cachedFont !== font) {\r\n            _cachedFont = _ctx.font = font || DEFAULT_FONT;\r\n        }\r\n        return _ctx.measureText(text);\r\n    }\r\n    var methods$1 = {\r\n        measureText: defaultMeasureText\r\n    };\r\n    function getWidth(text, font) {\r\n        font = font || DEFAULT_FONT;\r\n        var cacheOfFont = textWidthCache[font];\r\n        if (!cacheOfFont) {\r\n            cacheOfFont = textWidthCache[font] = new LRU(500);\r\n        }\r\n        var width = cacheOfFont.get(text);\r\n        if (width == null) {\r\n            width = methods$1.measureText(text, font).width;\r\n            cacheOfFont.put(text, width);\r\n        }\r\n        return width;\r\n    }\r\n    function innerGetBoundingRect(text, font, textAlign, textBaseline) {\r\n        var width = getWidth(text, font);\r\n        var height = getLineHeight(font);\r\n        var x = adjustTextX(0, width, textAlign);\r\n        var y = adjustTextY(0, height, textBaseline);\r\n        var rect = new BoundingRect(x, y, width, height);\r\n        return rect;\r\n    }\r\n    function getBoundingRect(text, font, textAlign, textBaseline) {\r\n        var textLines = ((text || '') + '').split('\\n');\r\n        var len = textLines.length;\r\n        if (len === 1) {\r\n            return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\r\n        }\r\n        else {\r\n            var uniondRect = new BoundingRect(0, 0, 0, 0);\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\r\n                i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\r\n            }\r\n            return uniondRect;\r\n        }\r\n    }\r\n    function adjustTextX(x, width, textAlign) {\r\n        if (textAlign === 'right') {\r\n            x -= width;\r\n        }\r\n        else if (textAlign === 'center') {\r\n            x -= width / 2;\r\n        }\r\n        return x;\r\n    }\r\n    function adjustTextY(y, height, verticalAlign) {\r\n        if (verticalAlign === 'middle') {\r\n            y -= height / 2;\r\n        }\r\n        else if (verticalAlign === 'bottom') {\r\n            y -= height;\r\n        }\r\n        return y;\r\n    }\r\n    function getLineHeight(font) {\r\n        return getWidth('国', font);\r\n    }\r\n    function parsePercent(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\r\n    function calculateTextPosition(out, opts, rect) {\r\n        var textPosition = opts.position || 'inside';\r\n        var distance = opts.distance != null ? opts.distance : 5;\r\n        var height = rect.height;\r\n        var width = rect.width;\r\n        var halfHeight = height / 2;\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var textAlign = 'left';\r\n        var textVerticalAlign = 'top';\r\n        if (textPosition instanceof Array) {\r\n            x += parsePercent(textPosition[0], rect.width);\r\n            y += parsePercent(textPosition[1], rect.height);\r\n            textAlign = null;\r\n            textVerticalAlign = null;\r\n        }\r\n        else {\r\n            switch (textPosition) {\r\n                case 'left':\r\n                    x -= distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'right':\r\n                    x += distance + width;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'top':\r\n                    x += width / 2;\r\n                    y -= distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'bottom':\r\n                    x += width / 2;\r\n                    y += height + distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'inside':\r\n                    x += width / 2;\r\n                    y += halfHeight;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideLeft':\r\n                    x += distance;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideRight':\r\n                    x += width - distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideTop':\r\n                    x += width / 2;\r\n                    y += distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'insideBottom':\r\n                    x += width / 2;\r\n                    y += height - distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideTopLeft':\r\n                    x += distance;\r\n                    y += distance;\r\n                    break;\r\n                case 'insideTopRight':\r\n                    x += width - distance;\r\n                    y += distance;\r\n                    textAlign = 'right';\r\n                    break;\r\n                case 'insideBottomLeft':\r\n                    x += distance;\r\n                    y += height - distance;\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideBottomRight':\r\n                    x += width - distance;\r\n                    y += height - distance;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n            }\r\n        }\r\n        out = out || {};\r\n        out.x = x;\r\n        out.y = y;\r\n        out.align = textAlign;\r\n        out.verticalAlign = textVerticalAlign;\r\n        return out;\r\n    }\n\n    var dpr = 1;\r\n    if (typeof window !== 'undefined') {\r\n        dpr = Math.max(window.devicePixelRatio\r\n            || (window.screen.deviceXDPI / window.screen.logicalXDPI)\r\n            || 1, 1);\r\n    }\r\n    var devicePixelRatio = dpr;\r\n    var DARK_MODE_THRESHOLD = 0.4;\r\n    var DARK_LABEL_COLOR = '#333';\r\n    var LIGHT_LABEL_COLOR = '#ccc';\r\n    var LIGHTER_LABEL_COLOR = '#eee';\n\n    var PRESERVED_NORMAL_STATE = '__zr_normal__';\r\n    var PRIMARY_STATES_KEYS = ['x', 'y', 'scaleX', 'scaleY', 'originX', 'originY', 'rotation', 'ignore'];\r\n    var DEFAULT_ANIMATABLE_MAP = {\r\n        x: true,\r\n        y: true,\r\n        scaleX: true,\r\n        scaleY: true,\r\n        originX: true,\r\n        originY: true,\r\n        rotation: true,\r\n        ignore: false\r\n    };\r\n    var tmpTextPosCalcRes = {};\r\n    var tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\r\n    var Element = (function () {\r\n        function Element(props) {\r\n            this.id = guid();\r\n            this.animators = [];\r\n            this.currentStates = [];\r\n            this.states = {};\r\n            this._init(props);\r\n        }\r\n        Element.prototype._init = function (props) {\r\n            this.attr(props);\r\n        };\r\n        Element.prototype.drift = function (dx, dy, e) {\r\n            switch (this.draggable) {\r\n                case 'horizontal':\r\n                    dy = 0;\r\n                    break;\r\n                case 'vertical':\r\n                    dx = 0;\r\n                    break;\r\n            }\r\n            var m = this.transform;\r\n            if (!m) {\r\n                m = this.transform = [1, 0, 0, 1, 0, 0];\r\n            }\r\n            m[4] += dx;\r\n            m[5] += dy;\r\n            this.decomposeTransform();\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.beforeUpdate = function () { };\r\n        Element.prototype.afterUpdate = function () { };\r\n        Element.prototype.update = function () {\r\n            this.updateTransform();\r\n            if (this.__dirty) {\r\n                this.updateInnerText();\r\n            }\r\n        };\r\n        Element.prototype.updateInnerText = function (forceUpdate) {\r\n            var textEl = this._textContent;\r\n            if (textEl && (!textEl.ignore || forceUpdate)) {\r\n                if (!this.textConfig) {\r\n                    this.textConfig = {};\r\n                }\r\n                var textConfig = this.textConfig;\r\n                var isLocal = textConfig.local;\r\n                var attachedTransform = textEl.attachedTransform;\r\n                var textAlign = void 0;\r\n                var textVerticalAlign = void 0;\r\n                var textStyleChanged = false;\r\n                if (isLocal) {\r\n                    attachedTransform.parent = this;\r\n                }\r\n                else {\r\n                    attachedTransform.parent = null;\r\n                }\r\n                var innerOrigin = false;\r\n                attachedTransform.x = textEl.x;\r\n                attachedTransform.y = textEl.y;\r\n                attachedTransform.originX = textEl.originX;\r\n                attachedTransform.originY = textEl.originY;\r\n                attachedTransform.rotation = textEl.rotation;\r\n                attachedTransform.scaleX = textEl.scaleX;\r\n                attachedTransform.scaleY = textEl.scaleY;\r\n                if (textConfig.position != null) {\r\n                    var layoutRect = tmpBoundingRect;\r\n                    if (textConfig.layoutRect) {\r\n                        layoutRect.copy(textConfig.layoutRect);\r\n                    }\r\n                    else {\r\n                        layoutRect.copy(this.getBoundingRect());\r\n                    }\r\n                    if (!isLocal) {\r\n                        layoutRect.applyTransform(this.transform);\r\n                    }\r\n                    if (this.calculateTextPosition) {\r\n                        this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    else {\r\n                        calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    attachedTransform.x = tmpTextPosCalcRes.x;\r\n                    attachedTransform.y = tmpTextPosCalcRes.y;\r\n                    textAlign = tmpTextPosCalcRes.align;\r\n                    textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\r\n                    var textOrigin = textConfig.origin;\r\n                    if (textOrigin && textConfig.rotation != null) {\r\n                        var relOriginX = void 0;\r\n                        var relOriginY = void 0;\r\n                        if (textOrigin === 'center') {\r\n                            relOriginX = layoutRect.width * 0.5;\r\n                            relOriginY = layoutRect.height * 0.5;\r\n                        }\r\n                        else {\r\n                            relOriginX = parsePercent(textOrigin[0], layoutRect.width);\r\n                            relOriginY = parsePercent(textOrigin[1], layoutRect.height);\r\n                        }\r\n                        innerOrigin = true;\r\n                        attachedTransform.originX = -attachedTransform.x + relOriginX + (isLocal ? 0 : layoutRect.x);\r\n                        attachedTransform.originY = -attachedTransform.y + relOriginY + (isLocal ? 0 : layoutRect.y);\r\n                    }\r\n                }\r\n                if (textConfig.rotation != null) {\r\n                    attachedTransform.rotation = textConfig.rotation;\r\n                }\r\n                var textOffset = textConfig.offset;\r\n                if (textOffset) {\r\n                    attachedTransform.x += textOffset[0];\r\n                    attachedTransform.y += textOffset[1];\r\n                    if (!innerOrigin) {\r\n                        attachedTransform.originX = -textOffset[0];\r\n                        attachedTransform.originY = -textOffset[1];\r\n                    }\r\n                }\r\n                var isInside = textConfig.inside == null\r\n                    ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\r\n                    : textConfig.inside;\r\n                var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\r\n                var textFill = void 0;\r\n                var textStroke = void 0;\r\n                var autoStroke = void 0;\r\n                if (isInside && this.canBeInsideText()) {\r\n                    textFill = textConfig.insideFill;\r\n                    textStroke = textConfig.insideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getInsideTextFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getInsideTextStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                else {\r\n                    textFill = textConfig.outsideFill;\r\n                    textStroke = textConfig.outsideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getOutsideFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getOutsideStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                textFill = textFill || '#000';\r\n                if (textFill !== innerTextDefaultStyle.fill\r\n                    || textStroke !== innerTextDefaultStyle.stroke\r\n                    || autoStroke !== innerTextDefaultStyle.autoStroke\r\n                    || textAlign !== innerTextDefaultStyle.align\r\n                    || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\r\n                    textStyleChanged = true;\r\n                    innerTextDefaultStyle.fill = textFill;\r\n                    innerTextDefaultStyle.stroke = textStroke;\r\n                    innerTextDefaultStyle.autoStroke = autoStroke;\r\n                    innerTextDefaultStyle.align = textAlign;\r\n                    innerTextDefaultStyle.verticalAlign = textVerticalAlign;\r\n                    textEl.setDefaultTextStyle(innerTextDefaultStyle);\r\n                }\r\n                if (textStyleChanged) {\r\n                    textEl.dirtyStyle();\r\n                }\r\n                textEl.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.canBeInsideText = function () {\r\n            return true;\r\n        };\r\n        Element.prototype.getInsideTextFill = function () {\r\n            return '#fff';\r\n        };\r\n        Element.prototype.getInsideTextStroke = function (textFill) {\r\n            return '#000';\r\n        };\r\n        Element.prototype.getOutsideFill = function () {\r\n            return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\r\n        };\r\n        Element.prototype.getOutsideStroke = function (textFill) {\r\n            var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\r\n            var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\r\n            if (!colorArr) {\r\n                colorArr = [255, 255, 255, 1];\r\n            }\r\n            var alpha = colorArr[3];\r\n            var isDark = this.__zr.isDarkMode();\r\n            for (var i = 0; i < 3; i++) {\r\n                colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\r\n            }\r\n            colorArr[3] = 1;\r\n            return stringify(colorArr, 'rgba');\r\n        };\r\n        Element.prototype.traverse = function (cb, context) { };\r\n        Element.prototype.attrKV = function (key, value) {\r\n            if (key === 'textConfig') {\r\n                this.setTextConfig(value);\r\n            }\r\n            else if (key === 'textContent') {\r\n                this.setTextContent(value);\r\n            }\r\n            else if (key === 'clipPath') {\r\n                this.setClipPath(value);\r\n            }\r\n            else if (key === 'extra') {\r\n                this.extra = this.extra || {};\r\n                extend(this.extra, value);\r\n            }\r\n            else {\r\n                this[key] = value;\r\n            }\r\n        };\r\n        Element.prototype.hide = function () {\r\n            this.ignore = true;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.show = function () {\r\n            this.ignore = false;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.attr = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.attrKV(keyOrObj, value);\r\n            }\r\n            else if (isObject(keyOrObj)) {\r\n                var obj = keyOrObj;\r\n                var keysArr = keys(obj);\r\n                for (var i = 0; i < keysArr.length; i++) {\r\n                    var key = keysArr[i];\r\n                    this.attrKV(key, keyOrObj[key]);\r\n                }\r\n            }\r\n            this.markRedraw();\r\n            return this;\r\n        };\r\n        Element.prototype.saveCurrentToNormalState = function (toState) {\r\n            this._innerSaveToNormal(toState);\r\n            var normalState = this._normalState;\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                var fromStateTransition = animator.__fromStateTransition;\r\n                if (fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\r\n                    continue;\r\n                }\r\n                var targetName = animator.targetName;\r\n                var target = targetName\r\n                    ? normalState[targetName] : normalState;\r\n                animator.saveFinalToTarget(target);\r\n            }\r\n        };\r\n        Element.prototype._innerSaveToNormal = function (toState) {\r\n            var normalState = this._normalState;\r\n            if (!normalState) {\r\n                normalState = this._normalState = {};\r\n            }\r\n            if (toState.textConfig && !normalState.textConfig) {\r\n                normalState.textConfig = this.textConfig;\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\r\n        };\r\n        Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\r\n            for (var i = 0; i < primaryKeys.length; i++) {\r\n                var key = primaryKeys[i];\r\n                if (toState[key] != null && !(key in normalState)) {\r\n                    normalState[key] = this[key];\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.hasState = function () {\r\n            return this.currentStates.length > 0;\r\n        };\r\n        Element.prototype.getState = function (name) {\r\n            return this.states[name];\r\n        };\r\n        Element.prototype.ensureState = function (name) {\r\n            var states = this.states;\r\n            if (!states[name]) {\r\n                states[name] = {};\r\n            }\r\n            return states[name];\r\n        };\r\n        Element.prototype.clearStates = function (noAnimation) {\r\n            this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\r\n        };\r\n        Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation) {\r\n            var toNormalState = stateName === PRESERVED_NORMAL_STATE;\r\n            var hasStates = this.hasState();\r\n            if (!hasStates && toNormalState) {\r\n                return;\r\n            }\r\n            var currentStates = this.currentStates;\r\n            var animationCfg = this.stateTransition;\r\n            if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\r\n                return;\r\n            }\r\n            var state;\r\n            if (this.stateProxy && !toNormalState) {\r\n                state = this.stateProxy(stateName);\r\n            }\r\n            if (!state) {\r\n                state = (this.states && this.states[stateName]);\r\n            }\r\n            if (!state && !toNormalState) {\r\n                logError(\"State \" + stateName + \" not exists.\");\r\n                return;\r\n            }\r\n            if (!toNormalState) {\r\n                this.saveCurrentToNormalState(state);\r\n            }\r\n            var useHoverLayer = !!(state && state.hoverLayer);\r\n            if (useHoverLayer) {\r\n                this._toggleHoverLayerFlag(true);\r\n            }\r\n            this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n            if (this._textContent) {\r\n                this._textContent.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (toNormalState) {\r\n                this.currentStates = [];\r\n                this._normalState = {};\r\n            }\r\n            else {\r\n                if (!keepCurrentStates) {\r\n                    this.currentStates = [stateName];\r\n                }\r\n                else {\r\n                    this.currentStates.push(stateName);\r\n                }\r\n            }\r\n            this._updateAnimationTargets();\r\n            this.markRedraw();\r\n            if (!useHoverLayer && this.__inHover) {\r\n                this._toggleHoverLayerFlag(false);\r\n                this.__dirty &= ~Element.REDARAW_BIT;\r\n            }\r\n            return state;\r\n        };\r\n        Element.prototype.useStates = function (states, noAnimation) {\r\n            if (!states.length) {\r\n                this.clearStates();\r\n            }\r\n            else {\r\n                var stateObjects = [];\r\n                var currentStates = this.currentStates;\r\n                var len = states.length;\r\n                var notChange = len === currentStates.length;\r\n                if (notChange) {\r\n                    for (var i = 0; i < len; i++) {\r\n                        if (states[i] !== currentStates[i]) {\r\n                            notChange = false;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (notChange) {\r\n                    return;\r\n                }\r\n                for (var i = 0; i < len; i++) {\r\n                    var stateName = states[i];\r\n                    var stateObj = void 0;\r\n                    if (this.stateProxy) {\r\n                        stateObj = this.stateProxy(stateName, states);\r\n                    }\r\n                    if (!stateObj) {\r\n                        stateObj = this.states[stateName];\r\n                    }\r\n                    if (stateObj) {\r\n                        stateObjects.push(stateObj);\r\n                    }\r\n                }\r\n                var useHoverLayer = !!(stateObjects[len - 1] && stateObjects[len - 1].hoverLayer);\r\n                if (useHoverLayer) {\r\n                    this._toggleHoverLayerFlag(true);\r\n                }\r\n                var mergedState = this._mergeStates(stateObjects);\r\n                var animationCfg = this.stateTransition;\r\n                this.saveCurrentToNormalState(mergedState);\r\n                this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n                if (this._textContent) {\r\n                    this._textContent.useStates(states);\r\n                }\r\n                if (this._textGuide) {\r\n                    this._textGuide.useStates(states);\r\n                }\r\n                this._updateAnimationTargets();\r\n                this.currentStates = states.slice();\r\n                this.markRedraw();\r\n                if (!useHoverLayer && this.__inHover) {\r\n                    this._toggleHoverLayerFlag(false);\r\n                    this.__dirty &= ~Element.REDARAW_BIT;\r\n                }\r\n            }\r\n        };\r\n        Element.prototype._updateAnimationTargets = function () {\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                if (animator.targetName) {\r\n                    animator.changeTarget(this[animator.targetName]);\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.removeState = function (state) {\r\n            var idx = indexOf(this.currentStates, state);\r\n            if (idx >= 0) {\r\n                var currentStates = this.currentStates.slice();\r\n                currentStates.splice(idx, 1);\r\n                this.useStates(currentStates);\r\n            }\r\n        };\r\n        Element.prototype.replaceState = function (oldState, newState, forceAdd) {\r\n            var currentStates = this.currentStates.slice();\r\n            var idx = indexOf(currentStates, oldState);\r\n            var newStateExists = indexOf(currentStates, newState) >= 0;\r\n            if (idx >= 0) {\r\n                if (!newStateExists) {\r\n                    currentStates[idx] = newState;\r\n                }\r\n                else {\r\n                    currentStates.splice(idx, 1);\r\n                }\r\n            }\r\n            else if (forceAdd && !newStateExists) {\r\n                currentStates.push(newState);\r\n            }\r\n            this.useStates(currentStates);\r\n        };\r\n        Element.prototype.toggleState = function (state, enable) {\r\n            if (enable) {\r\n                this.useState(state, true);\r\n            }\r\n            else {\r\n                this.removeState(state);\r\n            }\r\n        };\r\n        Element.prototype._mergeStates = function (states) {\r\n            var mergedState = {};\r\n            var mergedTextConfig;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                extend(mergedState, state);\r\n                if (state.textConfig) {\r\n                    mergedTextConfig = mergedTextConfig || {};\r\n                    extend(mergedTextConfig, state.textConfig);\r\n                }\r\n            }\r\n            if (mergedTextConfig) {\r\n                mergedState.textConfig = mergedTextConfig;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            if (state && state.textConfig) {\r\n                this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\r\n                extend(this.textConfig, state.textConfig);\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                if (normalState.textConfig) {\r\n                    this.textConfig = normalState.textConfig;\r\n                }\r\n            }\r\n            var transitionTarget = {};\r\n            var hasTransition = false;\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS[i];\r\n                var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\r\n                if (state && state[key] != null) {\r\n                    if (propNeedsTransition) {\r\n                        hasTransition = true;\r\n                        transitionTarget[key] = state[key];\r\n                    }\r\n                    else {\r\n                        this[key] = state[key];\r\n                    }\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        if (propNeedsTransition) {\r\n                            hasTransition = true;\r\n                            transitionTarget[key] = normalState[key];\r\n                        }\r\n                        else {\r\n                            this[key] = normalState[key];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (!transition) {\r\n                for (var i = 0; i < this.animators.length; i++) {\r\n                    var animator = this.animators[i];\r\n                    var targetName = animator.targetName;\r\n                    animator.__changeFinalValue(targetName\r\n                        ? (state || normalState)[targetName]\r\n                        : (state || normalState));\r\n                }\r\n            }\r\n            if (hasTransition) {\r\n                this._transitionState(stateName, transitionTarget, animationCfg);\r\n            }\r\n        };\r\n        Element.prototype._attachComponent = function (componentEl) {\r\n            if (componentEl.__zr && !componentEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            if (componentEl === this) {\r\n                throw new Error('Recursive component attachment.');\r\n            }\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                componentEl.addSelfToZr(zr);\r\n            }\r\n            componentEl.__zr = zr;\r\n            componentEl.__hostTarget = this;\r\n        };\r\n        Element.prototype._detachComponent = function (componentEl) {\r\n            if (componentEl.__zr) {\r\n                componentEl.removeSelfFromZr(componentEl.__zr);\r\n            }\r\n            componentEl.__zr = null;\r\n            componentEl.__hostTarget = null;\r\n        };\r\n        Element.prototype.getClipPath = function () {\r\n            return this._clipPath;\r\n        };\r\n        Element.prototype.setClipPath = function (clipPath) {\r\n            if (this._clipPath && this._clipPath !== clipPath) {\r\n                this.removeClipPath();\r\n            }\r\n            this._attachComponent(clipPath);\r\n            this._clipPath = clipPath;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeClipPath = function () {\r\n            var clipPath = this._clipPath;\r\n            if (clipPath) {\r\n                this._detachComponent(clipPath);\r\n                this._clipPath = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextContent = function () {\r\n            return this._textContent;\r\n        };\r\n        Element.prototype.setTextContent = function (textEl) {\r\n            var previousTextContent = this._textContent;\r\n            if (previousTextContent === textEl) {\r\n                return;\r\n            }\r\n            if (previousTextContent && previousTextContent !== textEl) {\r\n                this.removeTextContent();\r\n            }\r\n            if (textEl.__zr && !textEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            textEl.attachedTransform = new Transformable();\r\n            this._attachComponent(textEl);\r\n            this._textContent = textEl;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.setTextConfig = function (cfg) {\r\n            if (!this.textConfig) {\r\n                this.textConfig = {};\r\n            }\r\n            extend(this.textConfig, cfg);\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextContent = function () {\r\n            var textEl = this._textContent;\r\n            if (textEl) {\r\n                textEl.attachedTransform = null;\r\n                this._detachComponent(textEl);\r\n                this._textContent = null;\r\n                this._innerTextDefaultStyle = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextGuideLine = function () {\r\n            return this._textGuide;\r\n        };\r\n        Element.prototype.setTextGuideLine = function (guideLine) {\r\n            if (this._textGuide && this._textGuide !== guideLine) {\r\n                this.removeTextGuideLine();\r\n            }\r\n            this._attachComponent(guideLine);\r\n            this._textGuide = guideLine;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextGuideLine = function () {\r\n            var textGuide = this._textGuide;\r\n            if (textGuide) {\r\n                this._detachComponent(textGuide);\r\n                this._textGuide = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.markRedraw = function () {\r\n            this.__dirty |= Element.REDARAW_BIT;\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                if (this.__inHover) {\r\n                    zr.refreshHover();\r\n                }\r\n                else {\r\n                    zr.refresh();\r\n                }\r\n            }\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.dirty = function () {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype._toggleHoverLayerFlag = function (inHover) {\r\n            this.__inHover = inHover;\r\n            var textContent = this._textContent;\r\n            var textGuide = this._textGuide;\r\n            if (textContent) {\r\n                textContent.__inHover = inHover;\r\n            }\r\n            if (textGuide) {\r\n                textGuide.__inHover = inHover;\r\n            }\r\n        };\r\n        Element.prototype.addSelfToZr = function (zr) {\r\n            this.__zr = zr;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.addAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.addSelfToZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.addSelfToZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.removeSelfFromZr = function (zr) {\r\n            this.__zr = null;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.removeAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.animate = function (key, loop) {\r\n            var target = key ? this[key] : this;\r\n            if (!target) {\r\n                logError('Property \"'\r\n                    + key\r\n                    + '\" is not existed in element '\r\n                    + this.id);\r\n                return;\r\n            }\r\n            var animator = new Animator(target, loop);\r\n            this.addAnimator(animator, key);\r\n            return animator;\r\n        };\r\n        Element.prototype.addAnimator = function (animator, key) {\r\n            var zr = this.__zr;\r\n            var el = this;\r\n            animator.during(function () {\r\n                el.updateDuringAnimation(key);\r\n            }).done(function () {\r\n                var animators = el.animators;\r\n                var idx = indexOf(animators, animator);\r\n                if (idx >= 0) {\r\n                    animators.splice(idx, 1);\r\n                }\r\n            });\r\n            this.animators.push(animator);\r\n            if (zr) {\r\n                zr.animation.addAnimator(animator);\r\n            }\r\n            zr && zr.wakeUp();\r\n        };\r\n        Element.prototype.updateDuringAnimation = function (key) {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.stopAnimation = function (scope, forwardToLast) {\r\n            var animators = this.animators;\r\n            var len = animators.length;\r\n            var leftAnimators = [];\r\n            for (var i = 0; i < len; i++) {\r\n                var animator = animators[i];\r\n                if (!scope || scope === animator.scope) {\r\n                    animator.stop(forwardToLast);\r\n                }\r\n                else {\r\n                    leftAnimators.push(animator);\r\n                }\r\n            }\r\n            this.animators = leftAnimators;\r\n            return this;\r\n        };\r\n        Element.prototype.animateTo = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps);\r\n        };\r\n        Element.prototype.animateFrom = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps, true);\r\n        };\r\n        Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\r\n            var animators = animateTo(this, target, cfg, animationProps);\r\n            for (var i = 0; i < animators.length; i++) {\r\n                animators[i].__fromStateTransition = stateName;\r\n            }\r\n        };\r\n        Element.prototype.getBoundingRect = function () {\r\n            return null;\r\n        };\r\n        Element.prototype.getPaintRect = function () {\r\n            return null;\r\n        };\r\n        Element.REDARAW_BIT = 1;\r\n        Element.initDefaultProps = (function () {\r\n            var elProto = Element.prototype;\r\n            elProto.type = 'element';\r\n            elProto.name = '';\r\n            elProto.ignore = false;\r\n            elProto.silent = false;\r\n            elProto.isGroup = false;\r\n            elProto.draggable = false;\r\n            elProto.dragging = false;\r\n            elProto.ignoreClip = false;\r\n            elProto.__inHover = false;\r\n            elProto.__dirty = Element.REDARAW_BIT;\r\n            var logs = {};\r\n            function logDeprecatedError(key, xKey, yKey) {\r\n                if (!logs[key + xKey + yKey]) {\r\n                    console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\r\n                    logs[key + xKey + yKey] = true;\r\n                }\r\n            }\r\n            function createLegacyProperty(key, privateKey, xKey, yKey) {\r\n                Object.defineProperty(elProto, key, {\r\n                    get: function () {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        if (!this[privateKey]) {\r\n                            var pos = this[privateKey] = [];\r\n                            enhanceArray(this, pos);\r\n                        }\r\n                        return this[privateKey];\r\n                    },\r\n                    set: function (pos) {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        this[xKey] = pos[0];\r\n                        this[yKey] = pos[1];\r\n                        this[privateKey] = pos;\r\n                        enhanceArray(this, pos);\r\n                    }\r\n                });\r\n                function enhanceArray(self, pos) {\r\n                    Object.defineProperty(pos, 0, {\r\n                        get: function () {\r\n                            return self[xKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[xKey] = val;\r\n                        }\r\n                    });\r\n                    Object.defineProperty(pos, 1, {\r\n                        get: function () {\r\n                            return self[yKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[yKey] = val;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (Object.defineProperty && (!env.browser.ie || env.browser.version > 8)) {\r\n                createLegacyProperty('position', '_legacyPos', 'x', 'y');\r\n                createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\r\n                createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\r\n            }\r\n        })();\r\n        return Element;\r\n    }());\r\n    mixin(Element, Eventful);\r\n    mixin(Element, Transformable);\r\n    function animateTo(animatable, target, cfg, animationProps, reverse) {\r\n        cfg = cfg || {};\r\n        var animators = [];\r\n        animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\r\n        var finishCount = animators.length;\r\n        var doneHappened = false;\r\n        var cfgDone = cfg.done;\r\n        var cfgAborted = cfg.aborted;\r\n        var doneCb = function () {\r\n            doneHappened = true;\r\n            finishCount--;\r\n            if (finishCount <= 0) {\r\n                doneHappened\r\n                    ? (cfgDone && cfgDone())\r\n                    : (cfgAborted && cfgAborted());\r\n            }\r\n        };\r\n        var abortedCb = function () {\r\n            finishCount--;\r\n            if (finishCount <= 0) {\r\n                doneHappened\r\n                    ? (cfgDone && cfgDone())\r\n                    : (cfgAborted && cfgAborted());\r\n            }\r\n        };\r\n        if (!finishCount) {\r\n            cfgDone && cfgDone();\r\n        }\r\n        if (animators.length > 0 && cfg.during) {\r\n            animators[0].during(function (target, percent) {\r\n                cfg.during(percent);\r\n            });\r\n        }\r\n        for (var i = 0; i < animators.length; i++) {\r\n            var animator = animators[i];\r\n            if (doneCb) {\r\n                animator.done(doneCb);\r\n            }\r\n            if (abortedCb) {\r\n                animator.aborted(abortedCb);\r\n            }\r\n            animator.start(cfg.easing, cfg.force);\r\n        }\r\n        return animators;\r\n    }\r\n    function copyArrShallow(source, target, len) {\r\n        for (var i = 0; i < len; i++) {\r\n            source[i] = target[i];\r\n        }\r\n    }\r\n    function is2DArray(value) {\r\n        return isArrayLike(value[0]);\r\n    }\r\n    function copyValue(target, source, key) {\r\n        if (isArrayLike(source[key])) {\r\n            if (!isArrayLike(target[key])) {\r\n                target[key] = [];\r\n            }\r\n            if (isTypedArray(source[key])) {\r\n                var len = source[key].length;\r\n                if (target[key].length !== len) {\r\n                    target[key] = new (source[key].constructor)(len);\r\n                    copyArrShallow(target[key], source[key], len);\r\n                }\r\n            }\r\n            else {\r\n                var sourceArr = source[key];\r\n                var targetArr = target[key];\r\n                var len0 = sourceArr.length;\r\n                if (is2DArray(sourceArr)) {\r\n                    var len1 = sourceArr[0].length;\r\n                    for (var i = 0; i < len0; i++) {\r\n                        if (!targetArr[i]) {\r\n                            targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\r\n                        }\r\n                        else {\r\n                            copyArrShallow(targetArr[i], sourceArr[i], len1);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    copyArrShallow(targetArr, sourceArr, len0);\r\n                }\r\n                targetArr.length = sourceArr.length;\r\n            }\r\n        }\r\n        else {\r\n            target[key] = source[key];\r\n        }\r\n    }\r\n    function animateToShallow(animatable, topKey, source, target, cfg, animationProps, animators, reverse) {\r\n        var animatableKeys = [];\r\n        var changedKeys = [];\r\n        var targetKeys = keys(target);\r\n        var duration = cfg.duration;\r\n        var delay = cfg.delay;\r\n        var additive = cfg.additive;\r\n        var setToFinal = cfg.setToFinal;\r\n        var animateAll = !isObject(animationProps);\r\n        for (var k = 0; k < targetKeys.length; k++) {\r\n            var innerKey = targetKeys[k];\r\n            if (source[innerKey] != null\r\n                && target[innerKey] != null\r\n                && (animateAll || animationProps[innerKey])) {\r\n                if (isObject(target[innerKey]) && !isArrayLike(target[innerKey])) {\r\n                    if (topKey) {\r\n                        if (!reverse) {\r\n                            source[innerKey] = target[innerKey];\r\n                            animatable.updateDuringAnimation(topKey);\r\n                        }\r\n                        continue;\r\n                    }\r\n                    animateToShallow(animatable, innerKey, source[innerKey], target[innerKey], cfg, animationProps && animationProps[innerKey], animators, reverse);\r\n                }\r\n                else {\r\n                    animatableKeys.push(innerKey);\r\n                    changedKeys.push(innerKey);\r\n                }\r\n            }\r\n            else if (!reverse) {\r\n                source[innerKey] = target[innerKey];\r\n                animatable.updateDuringAnimation(topKey);\r\n                changedKeys.push(innerKey);\r\n            }\r\n        }\r\n        var keyLen = animatableKeys.length;\r\n        if (keyLen > 0\r\n            || (cfg.force && !animators.length)) {\r\n            var existsAnimators = animatable.animators;\r\n            var existsAnimatorsOnSameTarget = [];\r\n            for (var i = 0; i < existsAnimators.length; i++) {\r\n                if (existsAnimators[i].targetName === topKey) {\r\n                    existsAnimatorsOnSameTarget.push(existsAnimators[i]);\r\n                }\r\n            }\r\n            if (!additive && existsAnimatorsOnSameTarget.length) {\r\n                for (var i = 0; i < existsAnimatorsOnSameTarget.length; i++) {\r\n                    var allAborted = existsAnimatorsOnSameTarget[i].stopTracks(changedKeys);\r\n                    if (allAborted) {\r\n                        var idx = indexOf(existsAnimators, existsAnimatorsOnSameTarget[i]);\r\n                        existsAnimators.splice(idx, 1);\r\n                    }\r\n                }\r\n            }\r\n            var revertedSource = void 0;\r\n            var reversedTarget = void 0;\r\n            var sourceClone = void 0;\r\n            if (reverse) {\r\n                reversedTarget = {};\r\n                if (setToFinal) {\r\n                    revertedSource = {};\r\n                }\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    reversedTarget[innerKey] = source[innerKey];\r\n                    if (setToFinal) {\r\n                        revertedSource[innerKey] = target[innerKey];\r\n                    }\r\n                    else {\r\n                        source[innerKey] = target[innerKey];\r\n                    }\r\n                }\r\n            }\r\n            else if (setToFinal) {\r\n                sourceClone = {};\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    sourceClone[innerKey] = cloneValue(source[innerKey]);\r\n                    copyValue(source, target, innerKey);\r\n                }\r\n            }\r\n            var animator = new Animator(source, false, additive ? existsAnimatorsOnSameTarget : null);\r\n            animator.targetName = topKey;\r\n            if (cfg.scope) {\r\n                animator.scope = cfg.scope;\r\n            }\r\n            if (setToFinal && revertedSource) {\r\n                animator.whenWithKeys(0, revertedSource, animatableKeys);\r\n            }\r\n            if (sourceClone) {\r\n                animator.whenWithKeys(0, sourceClone, animatableKeys);\r\n            }\r\n            animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animatableKeys).delay(delay || 0);\r\n            animatable.addAnimator(animator, topKey);\r\n            animators.push(animator);\r\n        }\r\n    }\n\n    var DEFAULT_MIN_MERGE = 32;\r\n    var DEFAULT_MIN_GALLOPING = 7;\r\n    function minRunLength(n) {\r\n        var r = 0;\r\n        while (n >= DEFAULT_MIN_MERGE) {\r\n            r |= n & 1;\r\n            n >>= 1;\r\n        }\r\n        return n + r;\r\n    }\r\n    function makeAscendingRun(array, lo, hi, compare) {\r\n        var runHi = lo + 1;\r\n        if (runHi === hi) {\r\n            return 1;\r\n        }\r\n        if (compare(array[runHi++], array[lo]) < 0) {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\r\n                runHi++;\r\n            }\r\n            reverseRun(array, lo, runHi);\r\n        }\r\n        else {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\r\n                runHi++;\r\n            }\r\n        }\r\n        return runHi - lo;\r\n    }\r\n    function reverseRun(array, lo, hi) {\r\n        hi--;\r\n        while (lo < hi) {\r\n            var t = array[lo];\r\n            array[lo++] = array[hi];\r\n            array[hi--] = t;\r\n        }\r\n    }\r\n    function binaryInsertionSort(array, lo, hi, start, compare) {\r\n        if (start === lo) {\r\n            start++;\r\n        }\r\n        for (; start < hi; start++) {\r\n            var pivot = array[start];\r\n            var left = lo;\r\n            var right = start;\r\n            var mid;\r\n            while (left < right) {\r\n                mid = left + right >>> 1;\r\n                if (compare(pivot, array[mid]) < 0) {\r\n                    right = mid;\r\n                }\r\n                else {\r\n                    left = mid + 1;\r\n                }\r\n            }\r\n            var n = start - left;\r\n            switch (n) {\r\n                case 3:\r\n                    array[left + 3] = array[left + 2];\r\n                case 2:\r\n                    array[left + 2] = array[left + 1];\r\n                case 1:\r\n                    array[left + 1] = array[left];\r\n                    break;\r\n                default:\r\n                    while (n > 0) {\r\n                        array[left + n] = array[left + n - 1];\r\n                        n--;\r\n                    }\r\n            }\r\n            array[left] = pivot;\r\n        }\r\n    }\r\n    function gallopLeft(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) > 0) {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        else {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) > 0) {\r\n                lastOffset = m + 1;\r\n            }\r\n            else {\r\n                offset = m;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function gallopRight(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) < 0) {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        else {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) < 0) {\r\n                offset = m;\r\n            }\r\n            else {\r\n                lastOffset = m + 1;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function TimSort(array, compare) {\r\n        var minGallop = DEFAULT_MIN_GALLOPING;\r\n        var length = 0;\r\n        var runStart;\r\n        var runLength;\r\n        var stackSize = 0;\r\n        length = array.length;\r\n        var tmp = [];\r\n        runStart = [];\r\n        runLength = [];\r\n        function pushRun(_runStart, _runLength) {\r\n            runStart[stackSize] = _runStart;\r\n            runLength[stackSize] = _runLength;\r\n            stackSize += 1;\r\n        }\r\n        function mergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\r\n                    || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\r\n                    if (runLength[n - 1] < runLength[n + 1]) {\r\n                        n--;\r\n                    }\r\n                }\r\n                else if (runLength[n] > runLength[n + 1]) {\r\n                    break;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function forceMergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\r\n                    n--;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function mergeAt(i) {\r\n            var start1 = runStart[i];\r\n            var length1 = runLength[i];\r\n            var start2 = runStart[i + 1];\r\n            var length2 = runLength[i + 1];\r\n            runLength[i] = length1 + length2;\r\n            if (i === stackSize - 3) {\r\n                runStart[i + 1] = runStart[i + 2];\r\n                runLength[i + 1] = runLength[i + 2];\r\n            }\r\n            stackSize--;\r\n            var k = gallopRight(array[start2], array, start1, length1, 0, compare);\r\n            start1 += k;\r\n            length1 -= k;\r\n            if (length1 === 0) {\r\n                return;\r\n            }\r\n            length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\r\n            if (length2 === 0) {\r\n                return;\r\n            }\r\n            if (length1 <= length2) {\r\n                mergeLow(start1, length1, start2, length2);\r\n            }\r\n            else {\r\n                mergeHigh(start1, length1, start2, length2);\r\n            }\r\n        }\r\n        function mergeLow(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length1; i++) {\r\n                tmp[i] = array[start1 + i];\r\n            }\r\n            var cursor1 = 0;\r\n            var cursor2 = start2;\r\n            var dest = start1;\r\n            array[dest++] = array[cursor2++];\r\n            if (--length2 === 0) {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n                return;\r\n            }\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            var count1;\r\n            var count2;\r\n            var exit;\r\n            while (1) {\r\n                count1 = 0;\r\n                count2 = 0;\r\n                exit = false;\r\n                do {\r\n                    if (compare(array[cursor2], tmp[cursor1]) < 0) {\r\n                        array[dest++] = array[cursor2++];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest++] = tmp[cursor1++];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\r\n                    if (count1 !== 0) {\r\n                        for (i = 0; i < count1; i++) {\r\n                            array[dest + i] = tmp[cursor1 + i];\r\n                        }\r\n                        dest += count1;\r\n                        cursor1 += count1;\r\n                        length1 -= count1;\r\n                        if (length1 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = array[cursor2++];\r\n                    if (--length2 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\r\n                    if (count2 !== 0) {\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[dest + i] = array[cursor2 + i];\r\n                        }\r\n                        dest += count2;\r\n                        cursor2 += count2;\r\n                        length2 -= count2;\r\n                        if (length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = tmp[cursor1++];\r\n                    if (--length1 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            minGallop < 1 && (minGallop = 1);\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n            }\r\n            else if (length1 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n            }\r\n        }\r\n        function mergeHigh(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length2; i++) {\r\n                tmp[i] = array[start2 + i];\r\n            }\r\n            var cursor1 = start1 + length1 - 1;\r\n            var cursor2 = length2 - 1;\r\n            var dest = start2 + length2 - 1;\r\n            var customCursor = 0;\r\n            var customDest = 0;\r\n            array[dest--] = array[cursor1--];\r\n            if (--length1 === 0) {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n                return;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            while (true) {\r\n                var count1 = 0;\r\n                var count2 = 0;\r\n                var exit = false;\r\n                do {\r\n                    if (compare(tmp[cursor2], array[cursor1]) < 0) {\r\n                        array[dest--] = array[cursor1--];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest--] = tmp[cursor2--];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\r\n                    if (count1 !== 0) {\r\n                        dest -= count1;\r\n                        cursor1 -= count1;\r\n                        length1 -= count1;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor1 + 1;\r\n                        for (i = count1 - 1; i >= 0; i--) {\r\n                            array[customDest + i] = array[customCursor + i];\r\n                        }\r\n                        if (length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = tmp[cursor2--];\r\n                    if (--length2 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\r\n                    if (count2 !== 0) {\r\n                        dest -= count2;\r\n                        cursor2 -= count2;\r\n                        length2 -= count2;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor2 + 1;\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[customDest + i] = tmp[customCursor + i];\r\n                        }\r\n                        if (length2 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = array[cursor1--];\r\n                    if (--length1 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            if (minGallop < 1) {\r\n                minGallop = 1;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n            }\r\n            else if (length2 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            mergeRuns: mergeRuns,\r\n            forceMergeRuns: forceMergeRuns,\r\n            pushRun: pushRun\r\n        };\r\n    }\r\n    function sort(array, compare, lo, hi) {\r\n        if (!lo) {\r\n            lo = 0;\r\n        }\r\n        if (!hi) {\r\n            hi = array.length;\r\n        }\r\n        var remaining = hi - lo;\r\n        if (remaining < 2) {\r\n            return;\r\n        }\r\n        var runLength = 0;\r\n        if (remaining < DEFAULT_MIN_MERGE) {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            binaryInsertionSort(array, lo, hi, lo + runLength, compare);\r\n            return;\r\n        }\r\n        var ts = TimSort(array, compare);\r\n        var minRun = minRunLength(remaining);\r\n        do {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            if (runLength < minRun) {\r\n                var force = remaining;\r\n                if (force > minRun) {\r\n                    force = minRun;\r\n                }\r\n                binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\r\n                runLength = force;\r\n            }\r\n            ts.pushRun(lo, runLength);\r\n            ts.mergeRuns();\r\n            remaining -= runLength;\r\n            lo += runLength;\r\n        } while (remaining !== 0);\r\n        ts.forceMergeRuns();\r\n    }\n\n    var invalidZErrorLogged = false;\r\n    function logInvalidZError() {\r\n        if (invalidZErrorLogged) {\r\n            return;\r\n        }\r\n        invalidZErrorLogged = true;\r\n        console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\r\n    }\r\n    function shapeCompareFunc(a, b) {\r\n        if (a.zlevel === b.zlevel) {\r\n            if (a.z === b.z) {\r\n                return a.z2 - b.z2;\r\n            }\r\n            return a.z - b.z;\r\n        }\r\n        return a.zlevel - b.zlevel;\r\n    }\r\n    var Storage = (function () {\r\n        function Storage() {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            this.displayableSortFunc = shapeCompareFunc;\r\n        }\r\n        Storage.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._roots.length; i++) {\r\n                this._roots[i].traverse(cb, context);\r\n            }\r\n        };\r\n        Storage.prototype.getDisplayList = function (update, includeIgnore) {\r\n            includeIgnore = includeIgnore || false;\r\n            var displayList = this._displayList;\r\n            if (update || !displayList.length) {\r\n                this.updateDisplayList(includeIgnore);\r\n            }\r\n            return displayList;\r\n        };\r\n        Storage.prototype.updateDisplayList = function (includeIgnore) {\r\n            this._displayListLen = 0;\r\n            var roots = this._roots;\r\n            var displayList = this._displayList;\r\n            for (var i = 0, len = roots.length; i < len; i++) {\r\n                this._updateAndAddDisplayable(roots[i], null, includeIgnore);\r\n            }\r\n            displayList.length = this._displayListLen;\r\n            env.canvasSupported && sort(displayList, shapeCompareFunc);\r\n        };\r\n        Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\r\n            if (el.ignore && !includeIgnore) {\r\n                return;\r\n            }\r\n            el.beforeUpdate();\r\n            el.update();\r\n            el.afterUpdate();\r\n            var userSetClipPath = el.getClipPath();\r\n            if (el.ignoreClip) {\r\n                clipPaths = null;\r\n            }\r\n            else if (userSetClipPath) {\r\n                if (clipPaths) {\r\n                    clipPaths = clipPaths.slice();\r\n                }\r\n                else {\r\n                    clipPaths = [];\r\n                }\r\n                var currentClipPath = userSetClipPath;\r\n                var parentClipPath = el;\r\n                while (currentClipPath) {\r\n                    currentClipPath.parent = parentClipPath;\r\n                    currentClipPath.updateTransform();\r\n                    clipPaths.push(currentClipPath);\r\n                    parentClipPath = currentClipPath;\r\n                    currentClipPath = currentClipPath.getClipPath();\r\n                }\r\n            }\r\n            if (el.childrenRef) {\r\n                var children = el.childrenRef();\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    if (el.__dirty) {\r\n                        child.__dirty |= Element.REDARAW_BIT;\r\n                    }\r\n                    this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\r\n                }\r\n                el.__dirty = 0;\r\n            }\r\n            else {\r\n                var disp = el;\r\n                if (clipPaths && clipPaths.length) {\r\n                    disp.__clipPaths = clipPaths;\r\n                }\r\n                else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\r\n                    disp.__clipPaths = [];\r\n                }\r\n                if (isNaN(disp.z)) {\r\n                    logInvalidZError();\r\n                    disp.z = 0;\r\n                }\r\n                if (isNaN(disp.z2)) {\r\n                    logInvalidZError();\r\n                    disp.z2 = 0;\r\n                }\r\n                if (isNaN(disp.zlevel)) {\r\n                    logInvalidZError();\r\n                    disp.zlevel = 0;\r\n                }\r\n                this._displayList[this._displayListLen++] = disp;\r\n            }\r\n            var decalEl = el.getDecalElement && el.getDecalElement();\r\n            if (decalEl) {\r\n                this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\r\n            }\r\n            var textGuide = el.getTextGuideLine();\r\n            if (textGuide) {\r\n                this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\r\n            }\r\n            var textEl = el.getTextContent();\r\n            if (textEl) {\r\n                this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\r\n            }\r\n        };\r\n        Storage.prototype.addRoot = function (el) {\r\n            if (el.__zr && el.__zr.storage === this) {\r\n                return;\r\n            }\r\n            this._roots.push(el);\r\n        };\r\n        Storage.prototype.delRoot = function (el) {\r\n            if (el instanceof Array) {\r\n                for (var i = 0, l = el.length; i < l; i++) {\r\n                    this.delRoot(el[i]);\r\n                }\r\n                return;\r\n            }\r\n            var idx = indexOf(this._roots, el);\r\n            if (idx >= 0) {\r\n                this._roots.splice(idx, 1);\r\n            }\r\n        };\r\n        Storage.prototype.delAllRoots = function () {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            return;\r\n        };\r\n        Storage.prototype.getRoots = function () {\r\n            return this._roots;\r\n        };\r\n        Storage.prototype.dispose = function () {\r\n            this._displayList = null;\r\n            this._roots = null;\r\n        };\r\n        return Storage;\r\n    }());\n\n    var requestAnimationFrame;\r\n    requestAnimationFrame = (typeof window !== 'undefined'\r\n        && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\r\n            || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\r\n            || window.mozRequestAnimationFrame\r\n            || window.webkitRequestAnimationFrame)) || function (func) {\r\n        return setTimeout(func, 16);\r\n    };\r\n    var requestAnimationFrame$1 = requestAnimationFrame;\n\n    var Animation = (function (_super) {\r\n        __extends(Animation, _super);\r\n        function Animation(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this._running = false;\r\n            _this._time = 0;\r\n            _this._pausedTime = 0;\r\n            _this._pauseStart = 0;\r\n            _this._paused = false;\r\n            opts = opts || {};\r\n            _this.stage = opts.stage || {};\r\n            _this.onframe = opts.onframe || function () { };\r\n            return _this;\r\n        }\r\n        Animation.prototype.addClip = function (clip) {\r\n            if (clip.animation) {\r\n                this.removeClip(clip);\r\n            }\r\n            if (!this._clipsHead) {\r\n                this._clipsHead = this._clipsTail = clip;\r\n            }\r\n            else {\r\n                this._clipsTail.next = clip;\r\n                clip.prev = this._clipsTail;\r\n                clip.next = null;\r\n                this._clipsTail = clip;\r\n            }\r\n            clip.animation = this;\r\n        };\r\n        Animation.prototype.addAnimator = function (animator) {\r\n            animator.animation = this;\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.addClip(clip);\r\n            }\r\n        };\r\n        Animation.prototype.removeClip = function (clip) {\r\n            if (!clip.animation) {\r\n                return;\r\n            }\r\n            var prev = clip.prev;\r\n            var next = clip.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this._clipsHead = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this._clipsTail = prev;\r\n            }\r\n            clip.next = clip.prev = clip.animation = null;\r\n        };\r\n        Animation.prototype.removeAnimator = function (animator) {\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.removeClip(clip);\r\n            }\r\n            animator.animation = null;\r\n        };\r\n        Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\r\n            var time = new Date().getTime() - this._pausedTime;\r\n            var delta = time - this._time;\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                var finished = clip.step(time, delta);\r\n                if (finished) {\r\n                    clip.ondestroy && clip.ondestroy();\r\n                    this.removeClip(clip);\r\n                    clip = nextClip;\r\n                }\r\n                else {\r\n                    clip = nextClip;\r\n                }\r\n            }\r\n            this._time = time;\r\n            if (!notTriggerFrameAndStageUpdate) {\r\n                this.onframe(delta);\r\n                this.trigger('frame', delta);\r\n                this.stage.update && this.stage.update();\r\n            }\r\n        };\r\n        Animation.prototype._startLoop = function () {\r\n            var self = this;\r\n            this._running = true;\r\n            function step() {\r\n                if (self._running) {\r\n                    requestAnimationFrame$1(step);\r\n                    !self._paused && self.update();\r\n                }\r\n            }\r\n            requestAnimationFrame$1(step);\r\n        };\r\n        Animation.prototype.start = function () {\r\n            if (this._running) {\r\n                return;\r\n            }\r\n            this._time = new Date().getTime();\r\n            this._pausedTime = 0;\r\n            this._startLoop();\r\n        };\r\n        Animation.prototype.stop = function () {\r\n            this._running = false;\r\n        };\r\n        Animation.prototype.pause = function () {\r\n            if (!this._paused) {\r\n                this._pauseStart = new Date().getTime();\r\n                this._paused = true;\r\n            }\r\n        };\r\n        Animation.prototype.resume = function () {\r\n            if (this._paused) {\r\n                this._pausedTime += (new Date().getTime()) - this._pauseStart;\r\n                this._paused = false;\r\n            }\r\n        };\r\n        Animation.prototype.clear = function () {\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                clip.prev = clip.next = clip.animation = null;\r\n                clip = nextClip;\r\n            }\r\n            this._clipsHead = this._clipsTail = null;\r\n        };\r\n        Animation.prototype.isFinished = function () {\r\n            return this._clipsHead == null;\r\n        };\r\n        Animation.prototype.animate = function (target, options) {\r\n            options = options || {};\r\n            this.start();\r\n            var animator = new Animator(target, options.loop);\r\n            this.addAnimator(animator);\r\n            return animator;\r\n        };\r\n        return Animation;\r\n    }(Eventful));\n\n    var TOUCH_CLICK_DELAY = 300;\r\n    var globalEventSupported = env.domSupported;\r\n    var localNativeListenerNames = (function () {\r\n        var mouseHandlerNames = [\r\n            'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\r\n            'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n        ];\r\n        var touchHandlerNames = [\r\n            'touchstart', 'touchend', 'touchmove'\r\n        ];\r\n        var pointerEventNameMap = {\r\n            pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\r\n        };\r\n        var pointerHandlerNames = map(mouseHandlerNames, function (name) {\r\n            var nm = name.replace('mouse', 'pointer');\r\n            return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\r\n        });\r\n        return {\r\n            mouse: mouseHandlerNames,\r\n            touch: touchHandlerNames,\r\n            pointer: pointerHandlerNames\r\n        };\r\n    })();\r\n    var globalNativeListenerNames = {\r\n        mouse: ['mousemove', 'mouseup'],\r\n        pointer: ['pointermove', 'pointerup']\r\n    };\r\n    var wheelEventSupported = false;\r\n    function isPointerFromTouch(event) {\r\n        var pointerType = event.pointerType;\r\n        return pointerType === 'pen' || pointerType === 'touch';\r\n    }\r\n    function setTouchTimer(scope) {\r\n        scope.touching = true;\r\n        if (scope.touchTimer != null) {\r\n            clearTimeout(scope.touchTimer);\r\n            scope.touchTimer = null;\r\n        }\r\n        scope.touchTimer = setTimeout(function () {\r\n            scope.touching = false;\r\n            scope.touchTimer = null;\r\n        }, 700);\r\n    }\r\n    function markTouch(event) {\r\n        event && (event.zrByTouch = true);\r\n    }\r\n    function normalizeGlobalEvent(instance, event) {\r\n        return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\r\n    }\r\n    function isLocalEl(instance, el) {\r\n        var elTmp = el;\r\n        var isLocal = false;\r\n        while (elTmp && elTmp.nodeType !== 9\r\n            && !(isLocal = elTmp.domBelongToZr\r\n                || (elTmp !== el && elTmp === instance.painterRoot))) {\r\n            elTmp = elTmp.parentNode;\r\n        }\r\n        return isLocal;\r\n    }\r\n    var FakeGlobalEvent = (function () {\r\n        function FakeGlobalEvent(instance, event) {\r\n            this.stopPropagation = noop;\r\n            this.stopImmediatePropagation = noop;\r\n            this.preventDefault = noop;\r\n            this.type = event.type;\r\n            this.target = this.currentTarget = instance.dom;\r\n            this.pointerType = event.pointerType;\r\n            this.clientX = event.clientX;\r\n            this.clientY = event.clientY;\r\n        }\r\n        return FakeGlobalEvent;\r\n    }());\r\n    var localDOMHandlers = {\r\n        mousedown: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__mayPointerCapture = [event.zrX, event.zrY];\r\n            this.trigger('mousedown', event);\r\n        },\r\n        mousemove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            var downPoint = this.__mayPointerCapture;\r\n            if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\r\n                this.__togglePointerCapture(true);\r\n            }\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n        },\r\n        mouseout: function (event) {\r\n            if (event.target !== this.dom) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            if (this.__pointerCapturing) {\r\n                event.zrEventControl = 'no_globalout';\r\n            }\r\n            var element = event.toElement || event.relatedTarget;\r\n            event.zrIsToLocalDOM = isLocalEl(this, element);\r\n            this.trigger('mouseout', event);\r\n        },\r\n        wheel: function (event) {\r\n            wheelEventSupported = true;\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        mousewheel: function (event) {\r\n            if (wheelEventSupported) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        touchstart: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.__lastTouchMoment = new Date();\r\n            this.handler.processGesture(event, 'start');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        touchmove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'change');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n        },\r\n        touchend: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'end');\r\n            localDOMHandlers.mouseup.call(this, event);\r\n            if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\r\n                localDOMHandlers.click.call(this, event);\r\n            }\r\n        },\r\n        pointerdown: function (event) {\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            localDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        pointerout: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mouseout.call(this, event);\r\n            }\r\n        }\r\n    };\r\n    each(['click', 'dblclick', 'contextmenu'], function (name) {\r\n        localDOMHandlers[name] = function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger(name, event);\r\n        };\r\n    });\r\n    var globalDOMHandlers = {\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                globalDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            globalDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        mousemove: function (event) {\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            var pointerCaptureReleasing = this.__pointerCapturing;\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n            if (pointerCaptureReleasing) {\r\n                event.zrEventControl = 'only_globalout';\r\n                this.trigger('mouseout', event);\r\n            }\r\n        }\r\n    };\r\n    function mountLocalDOMEventListeners(instance, scope) {\r\n        var domHandlers = scope.domHandlers;\r\n        if (env.pointerEventsSupported) {\r\n            each(localNativeListenerNames.pointer, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    domHandlers[nativeEventName].call(instance, event);\r\n                });\r\n            });\r\n        }\r\n        else {\r\n            if (env.touchEventsSupported) {\r\n                each(localNativeListenerNames.touch, function (nativeEventName) {\r\n                    mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                        setTouchTimer(scope);\r\n                    });\r\n                });\r\n            }\r\n            each(localNativeListenerNames.mouse, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    event = getNativeEvent(event);\r\n                    if (!scope.touching) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    }\r\n    function mountGlobalDOMEventListeners(instance, scope) {\r\n        if (env.pointerEventsSupported) {\r\n            each(globalNativeListenerNames.pointer, mount);\r\n        }\r\n        else if (!env.touchEventsSupported) {\r\n            each(globalNativeListenerNames.mouse, mount);\r\n        }\r\n        function mount(nativeEventName) {\r\n            function nativeEventListener(event) {\r\n                event = getNativeEvent(event);\r\n                if (!isLocalEl(instance, event.target)) {\r\n                    event = normalizeGlobalEvent(instance, event);\r\n                    scope.domHandlers[nativeEventName].call(instance, event);\r\n                }\r\n            }\r\n            mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\r\n        }\r\n    }\r\n    function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\r\n        scope.mounted[nativeEventName] = listener;\r\n        scope.listenerOpts[nativeEventName] = opt;\r\n        addEventListener(scope.domTarget, nativeEventName, listener, opt);\r\n    }\r\n    function unmountDOMEventListeners(scope) {\r\n        var mounted = scope.mounted;\r\n        for (var nativeEventName in mounted) {\r\n            if (mounted.hasOwnProperty(nativeEventName)) {\r\n                removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\r\n            }\r\n        }\r\n        scope.mounted = {};\r\n    }\r\n    var DOMHandlerScope = (function () {\r\n        function DOMHandlerScope(domTarget, domHandlers) {\r\n            this.mounted = {};\r\n            this.listenerOpts = {};\r\n            this.touching = false;\r\n            this.domTarget = domTarget;\r\n            this.domHandlers = domHandlers;\r\n        }\r\n        return DOMHandlerScope;\r\n    }());\r\n    var HandlerDomProxy = (function (_super) {\r\n        __extends(HandlerDomProxy, _super);\r\n        function HandlerDomProxy(dom, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this.__pointerCapturing = false;\r\n            _this.dom = dom;\r\n            _this.painterRoot = painterRoot;\r\n            _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\r\n            if (globalEventSupported) {\r\n                _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\r\n            }\r\n            mountLocalDOMEventListeners(_this, _this._localHandlerScope);\r\n            return _this;\r\n        }\r\n        HandlerDomProxy.prototype.dispose = function () {\r\n            unmountDOMEventListeners(this._localHandlerScope);\r\n            if (globalEventSupported) {\r\n                unmountDOMEventListeners(this._globalHandlerScope);\r\n            }\r\n        };\r\n        HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\r\n            this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\r\n        };\r\n        HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\r\n            this.__mayPointerCapture = null;\r\n            if (globalEventSupported\r\n                && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\r\n                this.__pointerCapturing = isPointerCapturing;\r\n                var globalHandlerScope = this._globalHandlerScope;\r\n                isPointerCapturing\r\n                    ? mountGlobalDOMEventListeners(this, globalHandlerScope)\r\n                    : unmountDOMEventListeners(globalHandlerScope);\r\n            }\r\n        };\r\n        return HandlerDomProxy;\r\n    }(Eventful));\n\n    var STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\r\n    var DEFAULT_COMMON_STYLE = {\r\n        shadowBlur: 0,\r\n        shadowOffsetX: 0,\r\n        shadowOffsetY: 0,\r\n        shadowColor: '#000',\r\n        opacity: 1,\r\n        blend: 'source-over'\r\n    };\r\n    var DEFAULT_COMMON_ANIMATION_PROPS = {\r\n        style: {\r\n            shadowBlur: true,\r\n            shadowOffsetX: true,\r\n            shadowOffsetY: true,\r\n            shadowColor: true,\r\n            opacity: true\r\n        }\r\n    };\r\n    DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\r\n    var PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible'];\r\n    var Displayable = (function (_super) {\r\n        __extends(Displayable, _super);\r\n        function Displayable(props) {\r\n            return _super.call(this, props) || this;\r\n        }\r\n        Displayable.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                if (key === 'style') {\r\n                    this.useStyle(props[key]);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, props[key]);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Displayable.prototype.beforeBrush = function () { };\r\n        Displayable.prototype.afterBrush = function () { };\r\n        Displayable.prototype.innerBeforeBrush = function () { };\r\n        Displayable.prototype.innerAfterBrush = function () { };\r\n        Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\r\n            var m = this.transform;\r\n            if (this.ignore\r\n                || this.invisible\r\n                || this.style.opacity === 0\r\n                || (this.culling\r\n                    && isDisplayableCulled(this, viewWidth, viewHeight))\r\n                || (m && !m[0] && !m[3])) {\r\n                return false;\r\n            }\r\n            if (considerClipPath && this.__clipPaths) {\r\n                for (var i = 0; i < this.__clipPaths.length; ++i) {\r\n                    if (this.__clipPaths[i].isZeroArea()) {\r\n                        return false;\r\n                    }\r\n                }\r\n            }\r\n            if (considerAncestors && this.parent) {\r\n                var parent_1 = this.parent;\r\n                while (parent_1) {\r\n                    if (parent_1.ignore) {\r\n                        return false;\r\n                    }\r\n                    parent_1 = parent_1.parent;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        Displayable.prototype.contain = function (x, y) {\r\n            return this.rectContain(x, y);\r\n        };\r\n        Displayable.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        Displayable.prototype.rectContain = function (x, y) {\r\n            var coord = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            return rect.contain(coord[0], coord[1]);\r\n        };\r\n        Displayable.prototype.getPaintRect = function () {\r\n            var rect = this._paintRect;\r\n            if (!this._paintRect || this.__dirty) {\r\n                var transform = this.transform;\r\n                var elRect = this.getBoundingRect();\r\n                var style = this.style;\r\n                var shadowSize = style.shadowBlur || 0;\r\n                var shadowOffsetX = style.shadowOffsetX || 0;\r\n                var shadowOffsetY = style.shadowOffsetY || 0;\r\n                rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(rect, elRect, transform);\r\n                }\r\n                else {\r\n                    rect.copy(elRect);\r\n                }\r\n                if (shadowSize || shadowOffsetX || shadowOffsetY) {\r\n                    rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\r\n                    rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\r\n                    rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\r\n                    rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\r\n                }\r\n                var tolerance = this.dirtyRectTolerance;\r\n                if (!rect.isZero()) {\r\n                    rect.x = Math.floor(rect.x - tolerance);\r\n                    rect.y = Math.floor(rect.y - tolerance);\r\n                    rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\r\n                    rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\r\n                }\r\n            }\r\n            return rect;\r\n        };\r\n        Displayable.prototype.setPrevPaintRect = function (paintRect) {\r\n            if (paintRect) {\r\n                this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\r\n                this._prevPaintRect.copy(paintRect);\r\n            }\r\n            else {\r\n                this._prevPaintRect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.getPrevPaintRect = function () {\r\n            return this._prevPaintRect;\r\n        };\r\n        Displayable.prototype.animateStyle = function (loop) {\r\n            return this.animate('style', loop);\r\n        };\r\n        Displayable.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Displayable.prototype.attrKV = function (key, value) {\r\n            if (key !== 'style') {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n            else {\r\n                if (!this.style) {\r\n                    this.useStyle(value);\r\n                }\r\n                else {\r\n                    this.setStyle(value);\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype.setStyle = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.style[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(this.style, keyOrObj);\r\n            }\r\n            this.dirtyStyle();\r\n            return this;\r\n        };\r\n        Displayable.prototype.dirtyStyle = function () {\r\n            this.markRedraw();\r\n            this.__dirty |= Displayable.STYLE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.styleChanged = function () {\r\n            return !!(this.__dirty & Displayable.STYLE_CHANGED_BIT);\r\n        };\r\n        Displayable.prototype.styleUpdated = function () {\r\n            this.__dirty &= ~Displayable.STYLE_CHANGED_BIT;\r\n        };\r\n        Displayable.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_COMMON_STYLE, obj);\r\n        };\r\n        Displayable.prototype.useStyle = function (obj) {\r\n            if (!obj[STYLE_MAGIC_KEY]) {\r\n                obj = this.createStyle(obj);\r\n            }\r\n            if (this.__inHover) {\r\n                this.__hoverStyle = obj;\r\n            }\r\n            else {\r\n                this.style = obj;\r\n            }\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.isStyleObject = function (obj) {\r\n            return obj[STYLE_MAGIC_KEY];\r\n        };\r\n        Displayable.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.style && !normalState.style) {\r\n                normalState.style = this._mergeStyle(this.createStyle(), this.style);\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1);\r\n        };\r\n        Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetStyle;\r\n            if (state && state.style) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetStyle = state.style;\r\n                    }\r\n                    else {\r\n                        targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\r\n                        this._mergeStyle(targetStyle, state.style);\r\n                    }\r\n                }\r\n                else {\r\n                    targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\r\n                    this._mergeStyle(targetStyle, state.style);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetStyle = normalState.style;\r\n            }\r\n            if (targetStyle) {\r\n                if (transition) {\r\n                    var sourceStyle = this.style;\r\n                    this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\r\n                    if (needsRestoreToNormal) {\r\n                        var changedKeys = keys(sourceStyle);\r\n                        for (var i = 0; i < changedKeys.length; i++) {\r\n                            var key = changedKeys[i];\r\n                            if (key in targetStyle) {\r\n                                targetStyle[key] = targetStyle[key];\r\n                                this.style[key] = sourceStyle[key];\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetKeys = keys(targetStyle);\r\n                    for (var i = 0; i < targetKeys.length; i++) {\r\n                        var key = targetKeys[i];\r\n                        this.style[key] = this.style[key];\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        style: targetStyle\r\n                    }, animationCfg, this.getAnimationStyleProps());\r\n                }\r\n                else {\r\n                    this.useStyle(targetStyle);\r\n                }\r\n            }\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS$1[i];\r\n                if (state && state[key] != null) {\r\n                    this[key] = state[key];\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        this[key] = normalState[key];\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedStyle;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.style) {\r\n                    mergedStyle = mergedStyle || {};\r\n                    this._mergeStyle(mergedStyle, state.style);\r\n                }\r\n            }\r\n            if (mergedStyle) {\r\n                mergedState.style = mergedStyle;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            extend(targetStyle, sourceStyle);\r\n            return targetStyle;\r\n        };\r\n        Displayable.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_COMMON_ANIMATION_PROPS;\r\n        };\r\n        Displayable.STYLE_CHANGED_BIT = 2;\r\n        Displayable.initDefaultProps = (function () {\r\n            var dispProto = Displayable.prototype;\r\n            dispProto.type = 'displayable';\r\n            dispProto.invisible = false;\r\n            dispProto.z = 0;\r\n            dispProto.z2 = 0;\r\n            dispProto.zlevel = 0;\r\n            dispProto.culling = false;\r\n            dispProto.cursor = 'pointer';\r\n            dispProto.rectHover = false;\r\n            dispProto.incremental = false;\r\n            dispProto._rect = null;\r\n            dispProto.dirtyRectTolerance = 0;\r\n            dispProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT;\r\n        })();\r\n        return Displayable;\r\n    }(Element));\r\n    var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n    var viewRect = new BoundingRect(0, 0, 0, 0);\r\n    function isDisplayableCulled(el, width, height) {\r\n        tmpRect.copy(el.getBoundingRect());\r\n        if (el.transform) {\r\n            tmpRect.applyTransform(el.transform);\r\n        }\r\n        viewRect.width = width;\r\n        viewRect.height = height;\r\n        return !tmpRect.intersect(viewRect);\r\n    }\n\n    var mathPow = Math.pow;\r\n    var mathSqrt = Math.sqrt;\r\n    var EPSILON$1 = 1e-8;\r\n    var EPSILON_NUMERIC = 1e-4;\r\n    var THREE_SQRT = mathSqrt(3);\r\n    var ONE_THIRD = 1 / 3;\r\n    var _v0 = create();\r\n    var _v1 = create();\r\n    var _v2 = create();\r\n    function isAroundZero(val) {\r\n        return val > -EPSILON$1 && val < EPSILON$1;\r\n    }\r\n    function isNotAroundZero$1(val) {\r\n        return val > EPSILON$1 || val < -EPSILON$1;\r\n    }\r\n    function cubicAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return onet * onet * (onet * p0 + 3 * t * p1)\r\n            + t * t * (t * p3 + 3 * onet * p2);\r\n    }\r\n    function cubicDerivativeAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\r\n            + (p3 - p2) * t * t);\r\n    }\r\n    function cubicRootAt(p0, p1, p2, p3, val, roots) {\r\n        var a = p3 + 3 * (p1 - p2) - p0;\r\n        var b = 3 * (p2 - p1 * 2 + p0);\r\n        var c = 3 * (p1 - p0);\r\n        var d = p0 - val;\r\n        var A = b * b - 3 * a * c;\r\n        var B = b * c - 9 * a * d;\r\n        var C = c * c - 3 * b * d;\r\n        var n = 0;\r\n        if (isAroundZero(A) && isAroundZero(B)) {\r\n            if (isAroundZero(b)) {\r\n                roots[0] = 0;\r\n            }\r\n            else {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = B * B - 4 * A * C;\r\n            if (isAroundZero(disc)) {\r\n                var K = B / A;\r\n                var t1 = -b / a + K;\r\n                var t2 = -K / 2;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var Y1 = A * b + 1.5 * a * (-B + discSqrt);\r\n                var Y2 = A * b + 1.5 * a * (-B - discSqrt);\r\n                if (Y1 < 0) {\r\n                    Y1 = -mathPow(-Y1, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y1 = mathPow(Y1, ONE_THIRD);\r\n                }\r\n                if (Y2 < 0) {\r\n                    Y2 = -mathPow(-Y2, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y2 = mathPow(Y2, ONE_THIRD);\r\n                }\r\n                var t1 = (-b - (Y1 + Y2)) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else {\r\n                var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\r\n                var theta = Math.acos(T) / 3;\r\n                var ASqrt = mathSqrt(A);\r\n                var tmp = Math.cos(theta);\r\n                var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\r\n                var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n                if (t3 >= 0 && t3 <= 1) {\r\n                    roots[n++] = t3;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicExtrema(p0, p1, p2, p3, extrema) {\r\n        var b = 6 * p2 - 12 * p1 + 6 * p0;\r\n        var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\r\n        var c = 3 * p1 - 3 * p0;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                extrema[0] = -b / (2 * a);\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    extrema[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicSubdivide(p0, p1, p2, p3, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p23 = (p3 - p2) * t + p2;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        var p123 = (p23 - p12) * t + p12;\r\n        var p0123 = (p123 - p012) * t + p012;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p0123;\r\n        out[4] = p0123;\r\n        out[5] = p123;\r\n        out[6] = p23;\r\n        out[7] = p3;\r\n    }\r\n    function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        var prev;\r\n        var next;\r\n        var d1;\r\n        var d2;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, _t);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, _t);\r\n            d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            prev = t - interval;\r\n            next = t + interval;\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, prev);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, prev);\r\n            d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = cubicAt(x0, x1, x2, x3, next);\r\n                _v2[1] = cubicAt(y0, y1, y2, y3, next);\r\n                d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = cubicAt(x0, x1, x2, x3, t);\r\n            out[1] = cubicAt(y0, y1, y2, y3, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = cubicAt(x0, x1, x2, x3, t);\r\n            var y = cubicAt(y0, y1, y2, y3, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\r\n    function quadraticAt(p0, p1, p2, t) {\r\n        var onet = 1 - t;\r\n        return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\r\n    }\r\n    function quadraticDerivativeAt(p0, p1, p2, t) {\r\n        return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\r\n    }\r\n    function quadraticRootAt(p0, p1, p2, val, roots) {\r\n        var a = p0 - 2 * p1 + p2;\r\n        var b = 2 * (p1 - p0);\r\n        var c = p0 - val;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                var t1 = -b / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function quadraticExtremum(p0, p1, p2) {\r\n        var divider = p0 + p2 - 2 * p1;\r\n        if (divider === 0) {\r\n            return 0.5;\r\n        }\r\n        else {\r\n            return (p0 - p1) / divider;\r\n        }\r\n    }\r\n    function quadraticSubdivide(p0, p1, p2, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p012;\r\n        out[4] = p12;\r\n        out[5] = p2;\r\n    }\r\n    function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = quadraticAt(x0, x1, x2, _t);\r\n            _v1[1] = quadraticAt(y0, y1, y2, _t);\r\n            var d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            var prev = t - interval;\r\n            var next = t + interval;\r\n            _v1[0] = quadraticAt(x0, x1, x2, prev);\r\n            _v1[1] = quadraticAt(y0, y1, y2, prev);\r\n            var d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = quadraticAt(x0, x1, x2, next);\r\n                _v2[1] = quadraticAt(y0, y1, y2, next);\r\n                var d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = quadraticAt(x0, x1, x2, t);\r\n            out[1] = quadraticAt(y0, y1, y2, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = quadraticAt(x0, x1, x2, t);\r\n            var y = quadraticAt(y0, y1, y2, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\n\n    var mathMin$1 = Math.min;\r\n    var mathMax$1 = Math.max;\r\n    var mathSin = Math.sin;\r\n    var mathCos = Math.cos;\r\n    var PI2 = Math.PI * 2;\r\n    var start = create();\r\n    var end = create();\r\n    var extremity = create();\r\n    function fromPoints(points, min, max) {\r\n        if (points.length === 0) {\r\n            return;\r\n        }\r\n        var p = points[0];\r\n        var left = p[0];\r\n        var right = p[0];\r\n        var top = p[1];\r\n        var bottom = p[1];\r\n        for (var i = 1; i < points.length; i++) {\r\n            p = points[i];\r\n            left = mathMin$1(left, p[0]);\r\n            right = mathMax$1(right, p[0]);\r\n            top = mathMin$1(top, p[1]);\r\n            bottom = mathMax$1(bottom, p[1]);\r\n        }\r\n        min[0] = left;\r\n        min[1] = top;\r\n        max[0] = right;\r\n        max[1] = bottom;\r\n    }\r\n    function fromLine(x0, y0, x1, y1, min, max) {\r\n        min[0] = mathMin$1(x0, x1);\r\n        min[1] = mathMin$1(y0, y1);\r\n        max[0] = mathMax$1(x0, x1);\r\n        max[1] = mathMax$1(y0, y1);\r\n    }\r\n    var xDim = [];\r\n    var yDim = [];\r\n    function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\r\n        var cubicExtrema$1 = cubicExtrema;\r\n        var cubicAt$1 = cubicAt;\r\n        var n = cubicExtrema$1(x0, x1, x2, x3, xDim);\r\n        min[0] = Infinity;\r\n        min[1] = Infinity;\r\n        max[0] = -Infinity;\r\n        max[1] = -Infinity;\r\n        for (var i = 0; i < n; i++) {\r\n            var x = cubicAt$1(x0, x1, x2, x3, xDim[i]);\r\n            min[0] = mathMin$1(x, min[0]);\r\n            max[0] = mathMax$1(x, max[0]);\r\n        }\r\n        n = cubicExtrema$1(y0, y1, y2, y3, yDim);\r\n        for (var i = 0; i < n; i++) {\r\n            var y = cubicAt$1(y0, y1, y2, y3, yDim[i]);\r\n            min[1] = mathMin$1(y, min[1]);\r\n            max[1] = mathMax$1(y, max[1]);\r\n        }\r\n        min[0] = mathMin$1(x0, min[0]);\r\n        max[0] = mathMax$1(x0, max[0]);\r\n        min[0] = mathMin$1(x3, min[0]);\r\n        max[0] = mathMax$1(x3, max[0]);\r\n        min[1] = mathMin$1(y0, min[1]);\r\n        max[1] = mathMax$1(y0, max[1]);\r\n        min[1] = mathMin$1(y3, min[1]);\r\n        max[1] = mathMax$1(y3, max[1]);\r\n    }\r\n    function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\r\n        var quadraticExtremum$1 = quadraticExtremum;\r\n        var quadraticAt$1 = quadraticAt;\r\n        var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0);\r\n        var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0);\r\n        var x = quadraticAt$1(x0, x1, x2, tx);\r\n        var y = quadraticAt$1(y0, y1, y2, ty);\r\n        min[0] = mathMin$1(x0, x2, x);\r\n        min[1] = mathMin$1(y0, y2, y);\r\n        max[0] = mathMax$1(x0, x2, x);\r\n        max[1] = mathMax$1(y0, y2, y);\r\n    }\r\n    function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$1, max$1) {\r\n        var vec2Min = min;\r\n        var vec2Max = max;\r\n        var diff = Math.abs(startAngle - endAngle);\r\n        if (diff % PI2 < 1e-4 && diff > 1e-4) {\r\n            min$1[0] = x - rx;\r\n            min$1[1] = y - ry;\r\n            max$1[0] = x + rx;\r\n            max$1[1] = y + ry;\r\n            return;\r\n        }\r\n        start[0] = mathCos(startAngle) * rx + x;\r\n        start[1] = mathSin(startAngle) * ry + y;\r\n        end[0] = mathCos(endAngle) * rx + x;\r\n        end[1] = mathSin(endAngle) * ry + y;\r\n        vec2Min(min$1, start, end);\r\n        vec2Max(max$1, start, end);\r\n        startAngle = startAngle % (PI2);\r\n        if (startAngle < 0) {\r\n            startAngle = startAngle + PI2;\r\n        }\r\n        endAngle = endAngle % (PI2);\r\n        if (endAngle < 0) {\r\n            endAngle = endAngle + PI2;\r\n        }\r\n        if (startAngle > endAngle && !anticlockwise) {\r\n            endAngle += PI2;\r\n        }\r\n        else if (startAngle < endAngle && anticlockwise) {\r\n            startAngle += PI2;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = endAngle;\r\n            endAngle = startAngle;\r\n            startAngle = tmp;\r\n        }\r\n        for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\r\n            if (angle > startAngle) {\r\n                extremity[0] = mathCos(angle) * rx + x;\r\n                extremity[1] = mathSin(angle) * ry + y;\r\n                vec2Min(min$1, extremity, min$1);\r\n                vec2Max(max$1, extremity, max$1);\r\n            }\r\n        }\r\n    }\n\n    var CMD = {\r\n        M: 1,\r\n        L: 2,\r\n        C: 3,\r\n        Q: 4,\r\n        A: 5,\r\n        Z: 6,\r\n        R: 7\r\n    };\r\n    var tmpOutX = [];\r\n    var tmpOutY = [];\r\n    var min$1 = [];\r\n    var max$1 = [];\r\n    var min2 = [];\r\n    var max2 = [];\r\n    var mathMin$2 = Math.min;\r\n    var mathMax$2 = Math.max;\r\n    var mathCos$1 = Math.cos;\r\n    var mathSin$1 = Math.sin;\r\n    var mathSqrt$1 = Math.sqrt;\r\n    var mathAbs = Math.abs;\r\n    var PI = Math.PI;\r\n    var PI2$1 = PI * 2;\r\n    var hasTypedArray = typeof Float32Array !== 'undefined';\r\n    var tmpAngles = [];\r\n    function modPI2(radian) {\r\n        var n = Math.round(radian / PI * 1e8) / 1e8;\r\n        return (n % 2) * PI;\r\n    }\r\n    function normalizeArcAngles(angles, anticlockwise) {\r\n        var newStartAngle = modPI2(angles[0]);\r\n        if (newStartAngle < 0) {\r\n            newStartAngle += PI2$1;\r\n        }\r\n        var delta = newStartAngle - angles[0];\r\n        var newEndAngle = angles[1];\r\n        newEndAngle += delta;\r\n        if (!anticlockwise && newEndAngle - newStartAngle >= PI2$1) {\r\n            newEndAngle = newStartAngle + PI2$1;\r\n        }\r\n        else if (anticlockwise && newStartAngle - newEndAngle >= PI2$1) {\r\n            newEndAngle = newStartAngle - PI2$1;\r\n        }\r\n        else if (!anticlockwise && newStartAngle > newEndAngle) {\r\n            newEndAngle = newStartAngle +\r\n                (PI2$1 - modPI2(newStartAngle - newEndAngle));\r\n        }\r\n        else if (anticlockwise && newStartAngle < newEndAngle) {\r\n            newEndAngle = newStartAngle -\r\n                (PI2$1 - modPI2(newEndAngle - newStartAngle));\r\n        }\r\n        angles[0] = newStartAngle;\r\n        angles[1] = newEndAngle;\r\n    }\r\n    var PathProxy = (function () {\r\n        function PathProxy(notSaveData) {\r\n            this.dpr = 1;\r\n            this._version = 0;\r\n            this._xi = 0;\r\n            this._yi = 0;\r\n            this._x0 = 0;\r\n            this._y0 = 0;\r\n            this._len = 0;\r\n            if (notSaveData) {\r\n                this._saveData = false;\r\n            }\r\n            if (this._saveData) {\r\n                this.data = [];\r\n            }\r\n        }\r\n        PathProxy.prototype.increaseVersion = function () {\r\n            this._version++;\r\n        };\r\n        PathProxy.prototype.getVersion = function () {\r\n            return this._version;\r\n        };\r\n        PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\r\n            segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\r\n            if (segmentIgnoreThreshold > 0) {\r\n                this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;\r\n                this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;\r\n            }\r\n        };\r\n        PathProxy.prototype.setDPR = function (dpr) {\r\n            this.dpr = dpr;\r\n        };\r\n        PathProxy.prototype.setContext = function (ctx) {\r\n            this._ctx = ctx;\r\n        };\r\n        PathProxy.prototype.getContext = function () {\r\n            return this._ctx;\r\n        };\r\n        PathProxy.prototype.beginPath = function () {\r\n            this._ctx && this._ctx.beginPath();\r\n            this.reset();\r\n            return this;\r\n        };\r\n        PathProxy.prototype.reset = function () {\r\n            if (this._saveData) {\r\n                this._len = 0;\r\n            }\r\n            if (this._lineDash) {\r\n                this._lineDash = null;\r\n                this._dashOffset = 0;\r\n            }\r\n            if (this._pathSegLen) {\r\n                this._pathSegLen = null;\r\n                this._pathLen = 0;\r\n            }\r\n            this._version++;\r\n        };\r\n        PathProxy.prototype.moveTo = function (x, y) {\r\n            this.addData(CMD.M, x, y);\r\n            this._ctx && this._ctx.moveTo(x, y);\r\n            this._x0 = x;\r\n            this._y0 = y;\r\n            this._xi = x;\r\n            this._yi = y;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.lineTo = function (x, y) {\r\n            var exceedUnit = mathAbs(x - this._xi) > this._ux\r\n                || mathAbs(y - this._yi) > this._uy\r\n                || this._len < 5;\r\n            this.addData(CMD.L, x, y);\r\n            if (this._ctx && exceedUnit) {\r\n                this._needsDash ? this._dashedLineTo(x, y)\r\n                    : this._ctx.lineTo(x, y);\r\n            }\r\n            if (exceedUnit) {\r\n                this._xi = x;\r\n                this._yi = y;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\r\n            this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3)\r\n                    : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n            }\r\n            this._xi = x3;\r\n            this._yi = y3;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\r\n            this.addData(CMD.Q, x1, y1, x2, y2);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2)\r\n                    : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n            }\r\n            this._xi = x2;\r\n            this._yi = y2;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n            tmpAngles[0] = startAngle;\r\n            tmpAngles[1] = endAngle;\r\n            normalizeArcAngles(tmpAngles, anticlockwise);\r\n            startAngle = tmpAngles[0];\r\n            endAngle = tmpAngles[1];\r\n            var delta = endAngle - startAngle;\r\n            this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\r\n            this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n            this._xi = mathCos$1(endAngle) * r + cx;\r\n            this._yi = mathSin$1(endAngle) * r + cy;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\r\n            if (this._ctx) {\r\n                this._ctx.arcTo(x1, y1, x2, y2, radius);\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.rect = function (x, y, w, h) {\r\n            this._ctx && this._ctx.rect(x, y, w, h);\r\n            this.addData(CMD.R, x, y, w, h);\r\n            return this;\r\n        };\r\n        PathProxy.prototype.closePath = function () {\r\n            this.addData(CMD.Z);\r\n            var ctx = this._ctx;\r\n            var x0 = this._x0;\r\n            var y0 = this._y0;\r\n            if (ctx) {\r\n                this._needsDash && this._dashedLineTo(x0, y0);\r\n                ctx.closePath();\r\n            }\r\n            this._xi = x0;\r\n            this._yi = y0;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.fill = function (ctx) {\r\n            ctx && ctx.fill();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.stroke = function (ctx) {\r\n            ctx && ctx.stroke();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.setLineDash = function (lineDash) {\r\n            if (lineDash instanceof Array) {\r\n                this._lineDash = lineDash;\r\n                this._dashIdx = 0;\r\n                var lineDashSum = 0;\r\n                for (var i = 0; i < lineDash.length; i++) {\r\n                    lineDashSum += lineDash[i];\r\n                }\r\n                this._dashSum = lineDashSum;\r\n                this._needsDash = true;\r\n            }\r\n            else {\r\n                this._lineDash = null;\r\n                this._needsDash = false;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.setLineDashOffset = function (offset) {\r\n            this._dashOffset = offset;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        PathProxy.prototype.setData = function (data) {\r\n            var len = data.length;\r\n            if (!(this.data && this.data.length === len) && hasTypedArray) {\r\n                this.data = new Float32Array(len);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                this.data[i] = data[i];\r\n            }\r\n            this._len = len;\r\n        };\r\n        PathProxy.prototype.appendPath = function (path) {\r\n            if (!(path instanceof Array)) {\r\n                path = [path];\r\n            }\r\n            var len = path.length;\r\n            var appendSize = 0;\r\n            var offset = this._len;\r\n            for (var i = 0; i < len; i++) {\r\n                appendSize += path[i].len();\r\n            }\r\n            if (hasTypedArray && (this.data instanceof Float32Array)) {\r\n                this.data = new Float32Array(offset + appendSize);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                var appendPathData = path[i].data;\r\n                for (var k = 0; k < appendPathData.length; k++) {\r\n                    this.data[offset++] = appendPathData[k];\r\n                }\r\n            }\r\n            this._len = offset;\r\n        };\r\n        PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (this._len + arguments.length > data.length) {\r\n                this._expandData();\r\n                data = this.data;\r\n            }\r\n            for (var i = 0; i < arguments.length; i++) {\r\n                data[this._len++] = arguments[i];\r\n            }\r\n        };\r\n        PathProxy.prototype._expandData = function () {\r\n            if (!(this.data instanceof Array)) {\r\n                var newData = [];\r\n                for (var i = 0; i < this._len; i++) {\r\n                    newData[i] = this.data[i];\r\n                }\r\n                this.data = newData;\r\n            }\r\n        };\r\n        PathProxy.prototype._dashedLineTo = function (x1, y1) {\r\n            var dashSum = this._dashSum;\r\n            var lineDash = this._lineDash;\r\n            var ctx = this._ctx;\r\n            var offset = this._dashOffset;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var dx = x1 - x0;\r\n            var dy = y1 - y0;\r\n            var dist = mathSqrt$1(dx * dx + dy * dy);\r\n            var x = x0;\r\n            var y = y0;\r\n            var nDash = lineDash.length;\r\n            var dash;\r\n            var idx;\r\n            dx /= dist;\r\n            dy /= dist;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            x -= offset * dx;\r\n            y -= offset * dy;\r\n            while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1)\r\n                || (dx === 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) {\r\n                idx = this._dashIdx;\r\n                dash = lineDash[idx];\r\n                x += dx * dash;\r\n                y += dy * dash;\r\n                this._dashIdx = (idx + 1) % nDash;\r\n                if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) {\r\n                    continue;\r\n                }\r\n                ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin$2(x, x1) : mathMax$2(x, x1), dy >= 0 ? mathMin$2(y, y1) : mathMax$2(y, y1));\r\n            }\r\n            dx = x - x1;\r\n            dy = y - y1;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedBezierTo = function (x1, y1, x2, y2, x3, y3) {\r\n            var ctx = this._ctx;\r\n            var dashSum = this._dashSum;\r\n            var offset = this._dashOffset;\r\n            var lineDash = this._lineDash;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var bezierLen = 0;\r\n            var idx = this._dashIdx;\r\n            var nDash = lineDash.length;\r\n            var t;\r\n            var dx;\r\n            var dy;\r\n            var x;\r\n            var y;\r\n            var tmpLen = 0;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            for (t = 0; t < 1; t += 0.1) {\r\n                dx = cubicAt(x0, x1, x2, x3, t + 0.1)\r\n                    - cubicAt(x0, x1, x2, x3, t);\r\n                dy = cubicAt(y0, y1, y2, y3, t + 0.1)\r\n                    - cubicAt(y0, y1, y2, y3, t);\r\n                bezierLen += mathSqrt$1(dx * dx + dy * dy);\r\n            }\r\n            for (; idx < nDash; idx++) {\r\n                tmpLen += lineDash[idx];\r\n                if (tmpLen > offset) {\r\n                    break;\r\n                }\r\n            }\r\n            t = (tmpLen - offset) / bezierLen;\r\n            while (t <= 1) {\r\n                x = cubicAt(x0, x1, x2, x3, t);\r\n                y = cubicAt(y0, y1, y2, y3, t);\r\n                idx % 2 ? ctx.moveTo(x, y)\r\n                    : ctx.lineTo(x, y);\r\n                t += lineDash[idx] / bezierLen;\r\n                idx = (idx + 1) % nDash;\r\n            }\r\n            (idx % 2 !== 0) && ctx.lineTo(x3, y3);\r\n            dx = x3 - x;\r\n            dy = y3 - y;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedQuadraticTo = function (x1, y1, x2, y2) {\r\n            var x3 = x2;\r\n            var y3 = y2;\r\n            x2 = (x2 + 2 * x1) / 3;\r\n            y2 = (y2 + 2 * y1) / 3;\r\n            x1 = (this._xi + 2 * x1) / 3;\r\n            y1 = (this._yi + 2 * y1) / 3;\r\n            this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\r\n        };\r\n        PathProxy.prototype.toStatic = function () {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (data instanceof Array) {\r\n                data.length = this._len;\r\n                if (hasTypedArray && this._len > 11) {\r\n                    this.data = new Float32Array(data);\r\n                }\r\n            }\r\n        };\r\n        PathProxy.prototype.getBoundingRect = function () {\r\n            min$1[0] = min$1[1] = min2[0] = min2[1] = Number.MAX_VALUE;\r\n            max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\r\n            var data = this.data;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            var i;\r\n            for (i = 0; i < this._len;) {\r\n                var cmd = data[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        min2[0] = x0;\r\n                        min2[1] = y0;\r\n                        max2[0] = x0;\r\n                        max2[1] = y0;\r\n                        break;\r\n                    case CMD.L:\r\n                        fromLine(xi, yi, data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.C:\r\n                        fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.Q:\r\n                        fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var endAngle = data[i++] + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\r\n                        break;\r\n                    case CMD.Z:\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                }\r\n                min(min$1, min$1, min2);\r\n                max(max$1, max$1, max2);\r\n            }\r\n            if (i === 0) {\r\n                min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n            }\r\n            return new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]);\r\n        };\r\n        PathProxy.prototype._calculateLength = function () {\r\n            var data = this.data;\r\n            var len = this._len;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            if (!this._pathSegLen) {\r\n                this._pathSegLen = [];\r\n            }\r\n            var pathSegLen = this._pathSegLen;\r\n            var pathTotalLen = 0;\r\n            var segCount = 0;\r\n            for (var i = 0; i < len;) {\r\n                var cmd = data[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                var l = -1;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        break;\r\n                    case CMD.L: {\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var dx = x2 - xi;\r\n                        var dy = y2 - yi;\r\n                        if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\r\n                            l = Math.sqrt(dx * dx + dy * dy);\r\n                            xi = x2;\r\n                            yi = y2;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var x3 = data[i++];\r\n                        var y3 = data[i++];\r\n                        l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var delta = data[i++];\r\n                        var endAngle = delta + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta));\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R: {\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        l = width * 2 + height * 2;\r\n                        break;\r\n                    }\r\n                    case CMD.Z: {\r\n                        var dx = x0 - xi;\r\n                        var dy = y0 - yi;\r\n                        l = Math.sqrt(dx * dx + dy * dy);\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                    }\r\n                }\r\n                if (l >= 0) {\r\n                    pathSegLen[segCount++] = l;\r\n                    pathTotalLen += l;\r\n                }\r\n            }\r\n            this._pathLen = pathTotalLen;\r\n            return pathTotalLen;\r\n        };\r\n        PathProxy.prototype.rebuildPath = function (ctx, percent) {\r\n            var d = this.data;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var len = this._len;\r\n            var x0;\r\n            var y0;\r\n            var xi;\r\n            var yi;\r\n            var x;\r\n            var y;\r\n            var drawPart = percent < 1;\r\n            var pathSegLen;\r\n            var pathTotalLen;\r\n            var accumLength = 0;\r\n            var segCount = 0;\r\n            var displayedLength;\r\n            if (drawPart) {\r\n                if (!this._pathSegLen) {\r\n                    this._calculateLength();\r\n                }\r\n                pathSegLen = this._pathSegLen;\r\n                pathTotalLen = this._pathLen;\r\n                displayedLength = percent * pathTotalLen;\r\n                if (!displayedLength) {\r\n                    return;\r\n                }\r\n            }\r\n            lo: for (var i = 0; i < len;) {\r\n                var cmd = d[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = d[i];\r\n                    yi = d[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = xi = d[i++];\r\n                        y0 = yi = d[i++];\r\n                        ctx.moveTo(xi, yi);\r\n                        break;\r\n                    case CMD.L: {\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\r\n                            if (drawPart) {\r\n                                var l = pathSegLen[segCount++];\r\n                                if (accumLength + l > displayedLength) {\r\n                                    var t = (displayedLength - accumLength) / l;\r\n                                    ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\r\n                                    break lo;\r\n                                }\r\n                                accumLength += l;\r\n                            }\r\n                            ctx.lineTo(x, y);\r\n                            xi = x;\r\n                            yi = y;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        var x3 = d[i++];\r\n                        var y3 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\r\n                                cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\r\n                                ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                quadraticSubdivide(xi, x1, x2, t, tmpOutX);\r\n                                quadraticSubdivide(yi, y1, y2, t, tmpOutY);\r\n                                ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = d[i++];\r\n                        var cy = d[i++];\r\n                        var rx = d[i++];\r\n                        var ry = d[i++];\r\n                        var startAngle = d[i++];\r\n                        var delta = d[i++];\r\n                        var psi = d[i++];\r\n                        var anticlockwise = !d[i++];\r\n                        var r = (rx > ry) ? rx : ry;\r\n                        var isEllipse = mathAbs(rx - ry) > 1e-3;\r\n                        var endAngle = startAngle + delta;\r\n                        var breakBuild = false;\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                endAngle = startAngle + delta * (displayedLength - accumLength) / l;\r\n                                breakBuild = true;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        if (isEllipse && ctx.ellipse) {\r\n                            ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        else {\r\n                            ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        if (breakBuild) {\r\n                            break lo;\r\n                        }\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = d[i];\r\n                        y0 = yi = d[i + 1];\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        var width = d[i++];\r\n                        var height = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var d_1 = displayedLength - accumLength;\r\n                                ctx.moveTo(x, y);\r\n                                ctx.lineTo(x + mathMin$2(d_1, width), y);\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + width, y + mathMin$2(d_1, height));\r\n                                }\r\n                                d_1 -= height;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height);\r\n                                }\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x, y + mathMax$2(height - d_1, 0));\r\n                                }\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.rect(x, y, width, height);\r\n                        break;\r\n                    case CMD.Z:\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.closePath();\r\n                        xi = x0;\r\n                        yi = y0;\r\n                }\r\n            }\r\n        };\r\n        PathProxy.CMD = CMD;\r\n        PathProxy.initDefaultProps = (function () {\r\n            var proto = PathProxy.prototype;\r\n            proto._saveData = true;\r\n            proto._needsDash = false;\r\n            proto._dashOffset = 0;\r\n            proto._dashIdx = 0;\r\n            proto._dashSum = 0;\r\n            proto._ux = 0;\r\n            proto._uy = 0;\r\n        })();\r\n        return PathProxy;\r\n    }());\n\n    function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        var _a = 0;\r\n        var _b = x0;\r\n        if ((y > y0 + _l && y > y1 + _l)\r\n            || (y < y0 - _l && y < y1 - _l)\r\n            || (x > x0 + _l && x > x1 + _l)\r\n            || (x < x0 - _l && x < x1 - _l)) {\r\n            return false;\r\n        }\r\n        if (x0 !== x1) {\r\n            _a = (y0 - y1) / (x0 - x1);\r\n            _b = (x0 * y1 - x1 * y0) / (x0 - x1);\r\n        }\r\n        else {\r\n            return Math.abs(x - x0) <= _l / 2;\r\n        }\r\n        var tmp = _a * x - y + _b;\r\n        var _s = tmp * tmp / (_a * _a + 1);\r\n        return _s <= _l / 2 * _l / 2;\r\n    }\n\n    function containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\r\n            return false;\r\n        }\r\n        var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\r\n            return false;\r\n        }\r\n        var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    var PI2$2 = Math.PI * 2;\r\n    function normalizeRadian(angle) {\r\n        angle %= PI2$2;\r\n        if (angle < 0) {\r\n            angle += PI2$2;\r\n        }\r\n        return angle;\r\n    }\n\n    var PI2$3 = Math.PI * 2;\r\n    function containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        if ((d - _l > r) || (d + _l < r)) {\r\n            return false;\r\n        }\r\n        if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) {\r\n            return true;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$3;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$3;\r\n        }\r\n        return (angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle);\r\n    }\n\n    function windingLine(x0, y0, x1, y1, x, y) {\r\n        if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\r\n            return 0;\r\n        }\r\n        if (y1 === y0) {\r\n            return 0;\r\n        }\r\n        var t = (y - y0) / (y1 - y0);\r\n        var dir = y1 < y0 ? 1 : -1;\r\n        if (t === 1 || t === 0) {\r\n            dir = y1 < y0 ? 0.5 : -0.5;\r\n        }\r\n        var x_ = t * (x1 - x0) + x0;\r\n        return x_ === x ? Infinity : x_ > x ? dir : 0;\r\n    }\n\n    var CMD$1 = PathProxy.CMD;\r\n    var PI2$4 = Math.PI * 2;\r\n    var EPSILON$2 = 1e-4;\r\n    function isAroundEqual(a, b) {\r\n        return Math.abs(a - b) < EPSILON$2;\r\n    }\r\n    var roots = [-1, -1, -1];\r\n    var extrema = [-1, -1];\r\n    function swapExtrema() {\r\n        var tmp = extrema[0];\r\n        extrema[0] = extrema[1];\r\n        extrema[1] = tmp;\r\n    }\r\n    function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2 && y > y3)\r\n            || (y < y0 && y < y1 && y < y2 && y < y3)) {\r\n            return 0;\r\n        }\r\n        var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var w = 0;\r\n            var nExtrema = -1;\r\n            var y0_ = void 0;\r\n            var y1_ = void 0;\r\n            for (var i = 0; i < nRoots; i++) {\r\n                var t = roots[i];\r\n                var unit = (t === 0 || t === 1) ? 0.5 : 1;\r\n                var x_ = cubicAt(x0, x1, x2, x3, t);\r\n                if (x_ < x) {\r\n                    continue;\r\n                }\r\n                if (nExtrema < 0) {\r\n                    nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);\r\n                    if (extrema[1] < extrema[0] && nExtrema > 1) {\r\n                        swapExtrema();\r\n                    }\r\n                    y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);\r\n                    if (nExtrema > 1) {\r\n                        y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);\r\n                    }\r\n                }\r\n                if (nExtrema === 2) {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else if (t < extrema[1]) {\r\n                        w += y1_ < y0_ ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y1_ ? unit : -unit;\r\n                    }\r\n                }\r\n                else {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y0_ ? unit : -unit;\r\n                    }\r\n                }\r\n            }\r\n            return w;\r\n        }\r\n    }\r\n    function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2)\r\n            || (y < y0 && y < y1 && y < y2)) {\r\n            return 0;\r\n        }\r\n        var nRoots = quadraticRootAt(y0, y1, y2, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var t = quadraticExtremum(y0, y1, y2);\r\n            if (t >= 0 && t <= 1) {\r\n                var w = 0;\r\n                var y_ = quadraticAt(y0, y1, y2, t);\r\n                for (var i = 0; i < nRoots; i++) {\r\n                    var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\r\n                    var x_ = quadraticAt(x0, x1, x2, roots[i]);\r\n                    if (x_ < x) {\r\n                        continue;\r\n                    }\r\n                    if (roots[i] < t) {\r\n                        w += y_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y2 < y_ ? unit : -unit;\r\n                    }\r\n                }\r\n                return w;\r\n            }\r\n            else {\r\n                var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\r\n                var x_ = quadraticAt(x0, x1, x2, roots[0]);\r\n                if (x_ < x) {\r\n                    return 0;\r\n                }\r\n                return y2 < y0 ? unit : -unit;\r\n            }\r\n        }\r\n    }\r\n    function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\r\n        y -= cy;\r\n        if (y > r || y < -r) {\r\n            return 0;\r\n        }\r\n        var tmp = Math.sqrt(r * r - y * y);\r\n        roots[0] = -tmp;\r\n        roots[1] = tmp;\r\n        var dTheta = Math.abs(startAngle - endAngle);\r\n        if (dTheta < 1e-4) {\r\n            return 0;\r\n        }\r\n        if (dTheta >= PI2$4 - 1e-4) {\r\n            startAngle = 0;\r\n            endAngle = PI2$4;\r\n            var dir = anticlockwise ? 1 : -1;\r\n            if (x >= roots[0] + cx && x <= roots[1] + cx) {\r\n                return dir;\r\n            }\r\n            else {\r\n                return 0;\r\n            }\r\n        }\r\n        if (startAngle > endAngle) {\r\n            var tmp_1 = startAngle;\r\n            startAngle = endAngle;\r\n            endAngle = tmp_1;\r\n        }\r\n        if (startAngle < 0) {\r\n            startAngle += PI2$4;\r\n            endAngle += PI2$4;\r\n        }\r\n        var w = 0;\r\n        for (var i = 0; i < 2; i++) {\r\n            var x_ = roots[i];\r\n            if (x_ + cx > x) {\r\n                var angle = Math.atan2(y, x_);\r\n                var dir = anticlockwise ? 1 : -1;\r\n                if (angle < 0) {\r\n                    angle = PI2$4 + angle;\r\n                }\r\n                if ((angle >= startAngle && angle <= endAngle)\r\n                    || (angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle)) {\r\n                    if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\r\n                        dir = -dir;\r\n                    }\r\n                    w += dir;\r\n                }\r\n            }\r\n        }\r\n        return w;\r\n    }\r\n    function containPath(path, lineWidth, isStroke, x, y) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var w = 0;\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        for (var i = 0; i < len;) {\r\n            var cmd = data[i++];\r\n            var isFirst = i === 1;\r\n            if (cmd === CMD$1.M && i > 1) {\r\n                if (!isStroke) {\r\n                    w += windingLine(xi, yi, x0, y0, x, y);\r\n                }\r\n            }\r\n            if (isFirst) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            switch (cmd) {\r\n                case CMD$1.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$1.L:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.C:\r\n                    if (isStroke) {\r\n                        if (containStroke$1(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.Q:\r\n                    if (isStroke) {\r\n                        if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (!isFirst) {\r\n                        w += windingLine(xi, yi, x1, y1, x, y);\r\n                    }\r\n                    else {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    if (isStroke) {\r\n                        if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\r\n                    }\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$1.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    x1 = x0 + width;\r\n                    y1 = y0 + height;\r\n                    if (isStroke) {\r\n                        if (containStroke(x0, y0, x1, y0, lineWidth, x, y)\r\n                            || containStroke(x1, y0, x1, y1, lineWidth, x, y)\r\n                            || containStroke(x1, y1, x0, y1, lineWidth, x, y)\r\n                            || containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(x1, y0, x1, y1, x, y);\r\n                        w += windingLine(x0, y1, x0, y0, x, y);\r\n                    }\r\n                    break;\r\n                case CMD$1.Z:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, x0, y0, x, y);\r\n                    }\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n        }\r\n        if (!isStroke && !isAroundEqual(yi, y0)) {\r\n            w += windingLine(xi, yi, x0, y0, x, y) || 0;\r\n        }\r\n        return w !== 0;\r\n    }\r\n    function contain(pathProxy, x, y) {\r\n        return containPath(pathProxy, 0, false, x, y);\r\n    }\r\n    function containStroke$4(pathProxy, lineWidth, x, y) {\r\n        return containPath(pathProxy, lineWidth, true, x, y);\r\n    }\n\n    var DEFAULT_PATH_STYLE = defaults({\r\n        fill: '#000',\r\n        stroke: null,\r\n        strokePercent: 1,\r\n        fillOpacity: 1,\r\n        strokeOpacity: 1,\r\n        lineDashOffset: 0,\r\n        lineWidth: 1,\r\n        lineCap: 'butt',\r\n        miterLimit: 10,\r\n        strokeNoScale: false,\r\n        strokeFirst: false\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_PATH_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            strokePercent: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineDashOffset: true,\r\n            lineWidth: true,\r\n            miterLimit: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var pathCopyParams = [\r\n        'x', 'y', 'rotation', 'scaleX', 'scaleY', 'originX', 'originY', 'invisible',\r\n        'culling', 'z', 'z2', 'zlevel', 'parent'\r\n    ];\r\n    var Path = (function (_super) {\r\n        __extends(Path, _super);\r\n        function Path(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Path.prototype.update = function () {\r\n            var _this = this;\r\n            _super.prototype.update.call(this);\r\n            var style = this.style;\r\n            if (style.decal) {\r\n                var decalEl = this._decalEl\r\n                    = this._decalEl || new Path();\r\n                if (decalEl.buildPath === Path.prototype.buildPath) {\r\n                    decalEl.buildPath = function (ctx) {\r\n                        _this.buildPath(ctx, _this.shape);\r\n                    };\r\n                }\r\n                decalEl.silent = true;\r\n                var decalElStyle = decalEl.style;\r\n                for (var key in style) {\r\n                    if (decalElStyle[key] !== style[key]) {\r\n                        decalElStyle[key] = style[key];\r\n                    }\r\n                }\r\n                decalElStyle.fill = style.fill ? style.decal : null;\r\n                decalElStyle.decal = null;\r\n                decalElStyle.shadowColor = null;\r\n                style.strokeFirst && (decalElStyle.stroke = null);\r\n                for (var i = 0; i < pathCopyParams.length; ++i) {\r\n                    decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\r\n                }\r\n                decalEl.__dirty |= Element.REDARAW_BIT;\r\n            }\r\n            else if (this._decalEl) {\r\n                this._decalEl = null;\r\n            }\r\n        };\r\n        Path.prototype.getDecalElement = function () {\r\n            return this._decalEl;\r\n        };\r\n        Path.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            this.shape = this.getDefaultShape();\r\n            var defaultStyle = this.getDefaultStyle();\r\n            if (defaultStyle) {\r\n                this.useStyle(defaultStyle);\r\n            }\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                var value = props[key];\r\n                if (key === 'style') {\r\n                    if (!this.style) {\r\n                        this.useStyle(value);\r\n                    }\r\n                    else {\r\n                        extend(this.style, value);\r\n                    }\r\n                }\r\n                else if (key === 'shape') {\r\n                    extend(this.shape, value);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, value);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Path.prototype.getDefaultStyle = function () {\r\n            return null;\r\n        };\r\n        Path.prototype.getDefaultShape = function () {\r\n            return {};\r\n        };\r\n        Path.prototype.canBeInsideText = function () {\r\n            return this.hasFill();\r\n        };\r\n        Path.prototype.getInsideTextFill = function () {\r\n            var pathFill = this.style.fill;\r\n            if (pathFill !== 'none') {\r\n                if (isString(pathFill)) {\r\n                    var fillLum = lum(pathFill, 0);\r\n                    if (fillLum > 0.5) {\r\n                        return DARK_LABEL_COLOR;\r\n                    }\r\n                    else if (fillLum > 0.2) {\r\n                        return LIGHTER_LABEL_COLOR;\r\n                    }\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n                else if (pathFill) {\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n            }\r\n            return DARK_LABEL_COLOR;\r\n        };\r\n        Path.prototype.getInsideTextStroke = function (textFill) {\r\n            var pathFill = this.style.fill;\r\n            if (isString(pathFill)) {\r\n                var zr = this.__zr;\r\n                var isDarkMode = !!(zr && zr.isDarkMode());\r\n                var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\r\n                if (isDarkMode === isDarkLabel) {\r\n                    return pathFill;\r\n                }\r\n            }\r\n        };\r\n        Path.prototype.buildPath = function (ctx, shapeCfg, inBundle) { };\r\n        Path.prototype.pathUpdated = function () {\r\n            this.__dirty &= ~Path.SHAPE_CHANGED_BIT;\r\n        };\r\n        Path.prototype.createPathProxy = function () {\r\n            this.path = new PathProxy(false);\r\n        };\r\n        Path.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n        };\r\n        Path.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        Path.prototype.getBoundingRect = function () {\r\n            var rect = this._rect;\r\n            var style = this.style;\r\n            var needsUpdateRect = !rect;\r\n            if (needsUpdateRect) {\r\n                var firstInvoke = false;\r\n                if (!this.path) {\r\n                    firstInvoke = true;\r\n                    this.createPathProxy();\r\n                }\r\n                var path = this.path;\r\n                if (firstInvoke || (this.__dirty & Path.SHAPE_CHANGED_BIT)) {\r\n                    path.beginPath();\r\n                    this.buildPath(path, this.shape, false);\r\n                    this.pathUpdated();\r\n                }\r\n                rect = path.getBoundingRect();\r\n            }\r\n            this._rect = rect;\r\n            if (this.hasStroke() && this.path && this.path.len() > 0) {\r\n                var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\r\n                if (this.__dirty || needsUpdateRect) {\r\n                    rectWithStroke.copy(rect);\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    var w = style.lineWidth;\r\n                    if (!this.hasFill()) {\r\n                        var strokeContainThreshold = this.strokeContainThreshold;\r\n                        w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\r\n                    }\r\n                    if (lineScale > 1e-10) {\r\n                        rectWithStroke.width += w / lineScale;\r\n                        rectWithStroke.height += w / lineScale;\r\n                        rectWithStroke.x -= w / lineScale / 2;\r\n                        rectWithStroke.y -= w / lineScale / 2;\r\n                    }\r\n                }\r\n                return rectWithStroke;\r\n            }\r\n            return rect;\r\n        };\r\n        Path.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            var style = this.style;\r\n            x = localPos[0];\r\n            y = localPos[1];\r\n            if (rect.contain(x, y)) {\r\n                var pathProxy = this.path;\r\n                if (this.hasStroke()) {\r\n                    var lineWidth = style.lineWidth;\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    if (lineScale > 1e-10) {\r\n                        if (!this.hasFill()) {\r\n                            lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\r\n                        }\r\n                        if (containStroke$4(pathProxy, lineWidth / lineScale, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                }\r\n                if (this.hasFill()) {\r\n                    return contain(pathProxy, x, y);\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Path.prototype.dirtyShape = function () {\r\n            this.__dirty |= Path.SHAPE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n            if (this._decalEl) {\r\n                this._decalEl.dirtyShape();\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        Path.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n            this.dirtyShape();\r\n        };\r\n        Path.prototype.animateShape = function (loop) {\r\n            return this.animate('shape', loop);\r\n        };\r\n        Path.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else if (targetKey === 'shape') {\r\n                this.dirtyShape();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Path.prototype.attrKV = function (key, value) {\r\n            if (key === 'shape') {\r\n                this.setShape(value);\r\n            }\r\n            else {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n        };\r\n        Path.prototype.setShape = function (keyOrObj, value) {\r\n            var shape = this.shape;\r\n            if (!shape) {\r\n                shape = this.shape = {};\r\n            }\r\n            if (typeof keyOrObj === 'string') {\r\n                shape[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(shape, keyOrObj);\r\n            }\r\n            this.dirtyShape();\r\n            return this;\r\n        };\r\n        Path.prototype.shapeChanged = function () {\r\n            return !!(this.__dirty & Path.SHAPE_CHANGED_BIT);\r\n        };\r\n        Path.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_PATH_STYLE, obj);\r\n        };\r\n        Path.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.shape && !normalState.shape) {\r\n                normalState.shape = extend({}, this.shape);\r\n            }\r\n        };\r\n        Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetShape;\r\n            if (state && state.shape) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetShape = state.shape;\r\n                    }\r\n                    else {\r\n                        targetShape = extend({}, normalState.shape);\r\n                        extend(targetShape, state.shape);\r\n                    }\r\n                }\r\n                else {\r\n                    targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\r\n                    extend(targetShape, state.shape);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetShape = normalState.shape;\r\n            }\r\n            if (targetShape) {\r\n                if (transition) {\r\n                    this.shape = extend({}, this.shape);\r\n                    var targetShapePrimaryProps = {};\r\n                    var shapeKeys = keys(targetShape);\r\n                    for (var i = 0; i < shapeKeys.length; i++) {\r\n                        var key = shapeKeys[i];\r\n                        if (typeof targetShape[key] === 'object') {\r\n                            this.shape[key] = targetShape[key];\r\n                        }\r\n                        else {\r\n                            targetShapePrimaryProps[key] = targetShape[key];\r\n                        }\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        shape: targetShapePrimaryProps\r\n                    }, animationCfg);\r\n                }\r\n                else {\r\n                    this.shape = targetShape;\r\n                    this.dirtyShape();\r\n                }\r\n            }\r\n        };\r\n        Path.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedShape;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.shape) {\r\n                    mergedShape = mergedShape || {};\r\n                    this._mergeStyle(mergedShape, state.shape);\r\n                }\r\n            }\r\n            if (mergedShape) {\r\n                mergedState.shape = mergedShape;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Path.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_PATH_ANIMATION_PROPS;\r\n        };\r\n        Path.prototype.isZeroArea = function () {\r\n            return false;\r\n        };\r\n        Path.extend = function (defaultProps) {\r\n            var Sub = (function (_super) {\r\n                __extends(Sub, _super);\r\n                function Sub(opts) {\r\n                    var _this = _super.call(this, opts) || this;\r\n                    defaultProps.init && defaultProps.init.call(_this, opts);\r\n                    return _this;\r\n                }\r\n                Sub.prototype.getDefaultStyle = function () {\r\n                    return clone(defaultProps.style);\r\n                };\r\n                Sub.prototype.getDefaultShape = function () {\r\n                    return clone(defaultProps.shape);\r\n                };\r\n                return Sub;\r\n            }(Path));\r\n            for (var key in defaultProps) {\r\n                if (typeof defaultProps[key] === 'function') {\r\n                    Sub.prototype[key] = defaultProps[key];\r\n                }\r\n            }\r\n            return Sub;\r\n        };\r\n        Path.SHAPE_CHANGED_BIT = 4;\r\n        Path.initDefaultProps = (function () {\r\n            var pathProto = Path.prototype;\r\n            pathProto.type = 'path';\r\n            pathProto.strokeContainThreshold = 5;\r\n            pathProto.segmentIgnoreThreshold = 0;\r\n            pathProto.subPixelOptimize = false;\r\n            pathProto.autoBatch = false;\r\n            pathProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT | Path.SHAPE_CHANGED_BIT;\r\n        })();\r\n        return Path;\r\n    }(Displayable));\n\n    var CMD$2 = PathProxy.CMD;\r\n    var points = [[], [], []];\r\n    var mathSqrt$2 = Math.sqrt;\r\n    var mathAtan2 = Math.atan2;\r\n    function transformPath(path, m) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var cmd;\r\n        var nPoint;\r\n        var i;\r\n        var j;\r\n        var k;\r\n        var p;\r\n        var M = CMD$2.M;\r\n        var C = CMD$2.C;\r\n        var L = CMD$2.L;\r\n        var R = CMD$2.R;\r\n        var A = CMD$2.A;\r\n        var Q = CMD$2.Q;\r\n        for (i = 0, j = 0; i < len;) {\r\n            cmd = data[i++];\r\n            j = i;\r\n            nPoint = 0;\r\n            switch (cmd) {\r\n                case M:\r\n                    nPoint = 1;\r\n                    break;\r\n                case L:\r\n                    nPoint = 1;\r\n                    break;\r\n                case C:\r\n                    nPoint = 3;\r\n                    break;\r\n                case Q:\r\n                    nPoint = 2;\r\n                    break;\r\n                case A:\r\n                    var x = m[4];\r\n                    var y = m[5];\r\n                    var sx = mathSqrt$2(m[0] * m[0] + m[1] * m[1]);\r\n                    var sy = mathSqrt$2(m[2] * m[2] + m[3] * m[3]);\r\n                    var angle = mathAtan2(-m[1] / sy, m[0] / sx);\r\n                    data[i] *= sx;\r\n                    data[i++] += x;\r\n                    data[i] *= sy;\r\n                    data[i++] += y;\r\n                    data[i++] *= sx;\r\n                    data[i++] *= sy;\r\n                    data[i++] += angle;\r\n                    data[i++] += angle;\r\n                    i += 2;\r\n                    j = i;\r\n                    break;\r\n                case R:\r\n                    p[0] = data[i++];\r\n                    p[1] = data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n                    p[0] += data[i++];\r\n                    p[1] += data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n            }\r\n            for (k = 0; k < nPoint; k++) {\r\n                var p_1 = points[k];\r\n                p_1[0] = data[i++];\r\n                p_1[1] = data[i++];\r\n                applyTransform(p_1, p_1, m);\r\n                data[j++] = p_1[0];\r\n                data[j++] = p_1[1];\r\n            }\r\n        }\r\n        path.increaseVersion();\r\n    }\n\n    var mathSqrt$3 = Math.sqrt;\r\n    var mathSin$2 = Math.sin;\r\n    var mathCos$2 = Math.cos;\r\n    var PI$1 = Math.PI;\r\n    function vMag(v) {\r\n        return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n    }\r\n    function vRatio(u, v) {\r\n        return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n    }\r\n    function vAngle(u, v) {\r\n        return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\r\n            * Math.acos(vRatio(u, v));\r\n    }\r\n    function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\r\n        var psi = psiDeg * (PI$1 / 180.0);\r\n        var xp = mathCos$2(psi) * (x1 - x2) / 2.0\r\n            + mathSin$2(psi) * (y1 - y2) / 2.0;\r\n        var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2.0\r\n            + mathCos$2(psi) * (y1 - y2) / 2.0;\r\n        var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\r\n        if (lambda > 1) {\r\n            rx *= mathSqrt$3(lambda);\r\n            ry *= mathSqrt$3(lambda);\r\n        }\r\n        var f = (fa === fs ? -1 : 1)\r\n            * mathSqrt$3((((rx * rx) * (ry * ry))\r\n                - ((rx * rx) * (yp * yp))\r\n                - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\r\n                + (ry * ry) * (xp * xp))) || 0;\r\n        var cxp = f * rx * yp / ry;\r\n        var cyp = f * -ry * xp / rx;\r\n        var cx = (x1 + x2) / 2.0\r\n            + mathCos$2(psi) * cxp\r\n            - mathSin$2(psi) * cyp;\r\n        var cy = (y1 + y2) / 2.0\r\n            + mathSin$2(psi) * cxp\r\n            + mathCos$2(psi) * cyp;\r\n        var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\r\n        var u = [(xp - cxp) / rx, (yp - cyp) / ry];\r\n        var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\r\n        var dTheta = vAngle(u, v);\r\n        if (vRatio(u, v) <= -1) {\r\n            dTheta = PI$1;\r\n        }\r\n        if (vRatio(u, v) >= 1) {\r\n            dTheta = 0;\r\n        }\r\n        if (dTheta < 0) {\r\n            var n = Math.round(dTheta / PI$1 * 1e6) / 1e6;\r\n            dTheta = PI$1 * 2 + (n % 2) * PI$1;\r\n        }\r\n        path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\r\n    }\r\n    var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\r\n    var numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\r\n    function createPathProxyFromString(data) {\r\n        if (!data) {\r\n            return new PathProxy();\r\n        }\r\n        var cpx = 0;\r\n        var cpy = 0;\r\n        var subpathX = cpx;\r\n        var subpathY = cpy;\r\n        var prevCmd;\r\n        var path = new PathProxy();\r\n        var CMD = PathProxy.CMD;\r\n        var cmdList = data.match(commandReg);\r\n        for (var l = 0; l < cmdList.length; l++) {\r\n            var cmdText = cmdList[l];\r\n            var cmdStr = cmdText.charAt(0);\r\n            var cmd = void 0;\r\n            var p = cmdText.match(numberReg) || [];\r\n            var pLen = p.length;\r\n            for (var i = 0; i < pLen; i++) {\r\n                p[i] = parseFloat(p[i]);\r\n            }\r\n            var off = 0;\r\n            while (off < pLen) {\r\n                var ctlPtx = void 0;\r\n                var ctlPty = void 0;\r\n                var rx = void 0;\r\n                var ry = void 0;\r\n                var psi = void 0;\r\n                var fa = void 0;\r\n                var fs = void 0;\r\n                var x1 = cpx;\r\n                var y1 = cpy;\r\n                var len = void 0;\r\n                var pathData = void 0;\r\n                switch (cmdStr) {\r\n                    case 'l':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'L':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'm':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'l';\r\n                        break;\r\n                    case 'M':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'L';\r\n                        break;\r\n                    case 'h':\r\n                        cpx += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'H':\r\n                        cpx = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'v':\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'V':\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'C':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\r\n                        cpx = p[off - 2];\r\n                        cpy = p[off - 1];\r\n                        break;\r\n                    case 'c':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\r\n                        cpx += p[off - 2];\r\n                        cpy += p[off - 1];\r\n                        break;\r\n                    case 'S':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 's':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = cpx + p[off++];\r\n                        y1 = cpy + p[off++];\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'Q':\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'q':\r\n                        x1 = p[off++] + cpx;\r\n                        y1 = p[off++] + cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'T':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 't':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 'A':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                    case 'a':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                }\r\n            }\r\n            if (cmdStr === 'z' || cmdStr === 'Z') {\r\n                cmd = CMD.Z;\r\n                path.addData(cmd);\r\n                cpx = subpathX;\r\n                cpy = subpathY;\r\n            }\r\n            prevCmd = cmd;\r\n        }\r\n        path.toStatic();\r\n        return path;\r\n    }\r\n    var SVGPath = (function (_super) {\r\n        __extends(SVGPath, _super);\r\n        function SVGPath() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SVGPath.prototype.applyTransform = function (m) { };\r\n        return SVGPath;\r\n    }(Path));\r\n    function isPathProxy(path) {\r\n        return path.setData != null;\r\n    }\r\n    function createPathOptions(str, opts) {\r\n        var pathProxy = createPathProxyFromString(str);\r\n        var innerOpts = extend({}, opts);\r\n        innerOpts.buildPath = function (path) {\r\n            if (isPathProxy(path)) {\r\n                path.setData(pathProxy.data);\r\n                var ctx = path.getContext();\r\n                if (ctx) {\r\n                    path.rebuildPath(ctx, 1);\r\n                }\r\n            }\r\n            else {\r\n                var ctx = path;\r\n                pathProxy.rebuildPath(ctx, 1);\r\n            }\r\n        };\r\n        innerOpts.applyTransform = function (m) {\r\n            transformPath(pathProxy, m);\r\n            this.dirtyShape();\r\n        };\r\n        return innerOpts;\r\n    }\r\n    function createFromString(str, opts) {\r\n        return new SVGPath(createPathOptions(str, opts));\r\n    }\r\n    function extendFromString(str, defaultOpts) {\r\n        var innerOpts = createPathOptions(str, defaultOpts);\r\n        var Sub = (function (_super) {\r\n            __extends(Sub, _super);\r\n            function Sub(opts) {\r\n                var _this = _super.call(this, opts) || this;\r\n                _this.applyTransform = innerOpts.applyTransform;\r\n                _this.buildPath = innerOpts.buildPath;\r\n                return _this;\r\n            }\r\n            return Sub;\r\n        }(SVGPath));\r\n        return Sub;\r\n    }\r\n    function mergePath(pathEls, opts) {\r\n        var pathList = [];\r\n        var len = pathEls.length;\r\n        for (var i = 0; i < len; i++) {\r\n            var pathEl = pathEls[i];\r\n            if (!pathEl.path) {\r\n                pathEl.createPathProxy();\r\n            }\r\n            if (pathEl.shapeChanged()) {\r\n                pathEl.buildPath(pathEl.path, pathEl.shape, true);\r\n            }\r\n            pathList.push(pathEl.path);\r\n        }\r\n        var pathBundle = new Path(opts);\r\n        pathBundle.createPathProxy();\r\n        pathBundle.buildPath = function (path) {\r\n            if (isPathProxy(path)) {\r\n                path.appendPath(pathList);\r\n                var ctx = path.getContext();\r\n                if (ctx) {\r\n                    path.rebuildPath(ctx, 1);\r\n                }\r\n            }\r\n        };\r\n        return pathBundle;\r\n    }\n\n    var Group = (function (_super) {\r\n        __extends(Group, _super);\r\n        function Group(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.isGroup = true;\r\n            _this._children = [];\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        Group.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        Group.prototype.children = function () {\r\n            return this._children.slice();\r\n        };\r\n        Group.prototype.childAt = function (idx) {\r\n            return this._children[idx];\r\n        };\r\n        Group.prototype.childOfName = function (name) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                if (children[i].name === name) {\r\n                    return children[i];\r\n                }\r\n            }\r\n        };\r\n        Group.prototype.childCount = function () {\r\n            return this._children.length;\r\n        };\r\n        Group.prototype.add = function (child) {\r\n            if (child) {\r\n                if (child !== this && child.parent !== this) {\r\n                    this._children.push(child);\r\n                    this._doAdd(child);\r\n                }\r\n                if (child.__hostTarget) {\r\n                    throw 'This elemenet has been used as an attachment';\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addBefore = function (child, nextSibling) {\r\n            if (child && child !== this && child.parent !== this\r\n                && nextSibling && nextSibling.parent === this) {\r\n                var children = this._children;\r\n                var idx = children.indexOf(nextSibling);\r\n                if (idx >= 0) {\r\n                    children.splice(idx, 0, child);\r\n                    this._doAdd(child);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.replaceAt = function (child, index) {\r\n            var children = this._children;\r\n            var old = children[index];\r\n            if (child && child !== this && child.parent !== this && child !== old) {\r\n                children[index] = child;\r\n                old.parent = null;\r\n                var zr = this.__zr;\r\n                if (zr) {\r\n                    old.removeSelfFromZr(zr);\r\n                }\r\n                this._doAdd(child);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype._doAdd = function (child) {\r\n            if (child.parent) {\r\n                child.parent.remove(child);\r\n            }\r\n            child.parent = this;\r\n            var zr = this.__zr;\r\n            if (zr && zr !== child.__zr) {\r\n                child.addSelfToZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n        };\r\n        Group.prototype.remove = function (child) {\r\n            var zr = this.__zr;\r\n            var children = this._children;\r\n            var idx = indexOf(children, child);\r\n            if (idx < 0) {\r\n                return this;\r\n            }\r\n            children.splice(idx, 1);\r\n            child.parent = null;\r\n            if (zr) {\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n            return this;\r\n        };\r\n        Group.prototype.removeAll = function () {\r\n            var children = this._children;\r\n            var zr = this.__zr;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (zr) {\r\n                    child.removeSelfFromZr(zr);\r\n                }\r\n                child.parent = null;\r\n            }\r\n            children.length = 0;\r\n            return this;\r\n        };\r\n        Group.prototype.eachChild = function (cb, context) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                cb.call(context, child, i);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                var stopped = cb.call(context, child);\r\n                if (child.isGroup && !stopped) {\r\n                    child.traverse(cb, context);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.getBoundingRect = function (includeChildren) {\r\n            var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n            var children = includeChildren || this._children;\r\n            var tmpMat = [];\r\n            var rect = null;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (child.ignore || child.invisible) {\r\n                    continue;\r\n                }\r\n                var childRect = child.getBoundingRect();\r\n                var transform = child.getLocalTransform(tmpMat);\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(tmpRect, childRect, transform);\r\n                    rect = rect || tmpRect.clone();\r\n                    rect.union(tmpRect);\r\n                }\r\n                else {\r\n                    rect = rect || childRect.clone();\r\n                    rect.union(childRect);\r\n                }\r\n            }\r\n            return rect || tmpRect;\r\n        };\r\n        return Group;\r\n    }(Element));\r\n    Group.prototype.type = 'group';\n\n    var DEFAULT_IMAGE_STYLE = defaults({\r\n        x: 0,\r\n        y: 0\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_IMAGE_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            x: true,\r\n            y: true,\r\n            width: true,\r\n            height: true,\r\n            sx: true,\r\n            sy: true,\r\n            sWidth: true,\r\n            sHeight: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    function isImageLike(source) {\r\n        return !!(source\r\n            && typeof source !== 'string'\r\n            && source.width && source.height);\r\n    }\r\n    var ZRImage = (function (_super) {\r\n        __extends(ZRImage, _super);\r\n        function ZRImage() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ZRImage.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_IMAGE_STYLE, obj);\r\n        };\r\n        ZRImage.prototype._getSize = function (dim) {\r\n            var style = this.style;\r\n            var size = style[dim];\r\n            if (size != null) {\r\n                return size;\r\n            }\r\n            var imageSource = isImageLike(style.image)\r\n                ? style.image : this.__image;\r\n            if (!imageSource) {\r\n                return 0;\r\n            }\r\n            var otherDim = dim === 'width' ? 'height' : 'width';\r\n            var otherDimSize = style[otherDim];\r\n            if (otherDimSize == null) {\r\n                return imageSource[dim];\r\n            }\r\n            else {\r\n                return imageSource[dim] / imageSource[otherDim] * otherDimSize;\r\n            }\r\n        };\r\n        ZRImage.prototype.getWidth = function () {\r\n            return this._getSize('width');\r\n        };\r\n        ZRImage.prototype.getHeight = function () {\r\n            return this._getSize('height');\r\n        };\r\n        ZRImage.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_IMAGE_ANIMATION_PROPS;\r\n        };\r\n        ZRImage.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\r\n            }\r\n            return this._rect;\r\n        };\r\n        return ZRImage;\r\n    }(Displayable));\r\n    ZRImage.prototype.type = 'image';\n\n    var CircleShape = (function () {\r\n        function CircleShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n        }\r\n        return CircleShape;\r\n    }());\r\n    var Circle = (function (_super) {\r\n        __extends(Circle, _super);\r\n        function Circle(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Circle.prototype.getDefaultShape = function () {\r\n            return new CircleShape();\r\n        };\r\n        Circle.prototype.buildPath = function (ctx, shape, inBundle) {\r\n            if (inBundle) {\r\n                ctx.moveTo(shape.cx + shape.r, shape.cy);\r\n            }\r\n            ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\r\n        };\r\n        return Circle;\r\n    }(Path));\r\n    Circle.prototype.type = 'circle';\n\n    function buildPath(ctx, shape) {\r\n        var x = shape.x;\r\n        var y = shape.y;\r\n        var width = shape.width;\r\n        var height = shape.height;\r\n        var r = shape.r;\r\n        var r1;\r\n        var r2;\r\n        var r3;\r\n        var r4;\r\n        if (width < 0) {\r\n            x = x + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y = y + height;\r\n            height = -height;\r\n        }\r\n        if (typeof r === 'number') {\r\n            r1 = r2 = r3 = r4 = r;\r\n        }\r\n        else if (r instanceof Array) {\r\n            if (r.length === 1) {\r\n                r1 = r2 = r3 = r4 = r[0];\r\n            }\r\n            else if (r.length === 2) {\r\n                r1 = r3 = r[0];\r\n                r2 = r4 = r[1];\r\n            }\r\n            else if (r.length === 3) {\r\n                r1 = r[0];\r\n                r2 = r4 = r[1];\r\n                r3 = r[2];\r\n            }\r\n            else {\r\n                r1 = r[0];\r\n                r2 = r[1];\r\n                r3 = r[2];\r\n                r4 = r[3];\r\n            }\r\n        }\r\n        else {\r\n            r1 = r2 = r3 = r4 = 0;\r\n        }\r\n        var total;\r\n        if (r1 + r2 > width) {\r\n            total = r1 + r2;\r\n            r1 *= width / total;\r\n            r2 *= width / total;\r\n        }\r\n        if (r3 + r4 > width) {\r\n            total = r3 + r4;\r\n            r3 *= width / total;\r\n            r4 *= width / total;\r\n        }\r\n        if (r2 + r3 > height) {\r\n            total = r2 + r3;\r\n            r2 *= height / total;\r\n            r3 *= height / total;\r\n        }\r\n        if (r1 + r4 > height) {\r\n            total = r1 + r4;\r\n            r1 *= height / total;\r\n            r4 *= height / total;\r\n        }\r\n        ctx.moveTo(x + r1, y);\r\n        ctx.lineTo(x + width - r2, y);\r\n        r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\r\n        ctx.lineTo(x + width, y + height - r3);\r\n        r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\r\n        ctx.lineTo(x + r4, y + height);\r\n        r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\r\n        ctx.lineTo(x, y + r1);\r\n        r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\r\n    }\n\n    var round = Math.round;\r\n    function subPixelOptimizeLine(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var x1 = inputShape.x1;\r\n        var x2 = inputShape.x2;\r\n        var y1 = inputShape.y1;\r\n        var y2 = inputShape.y2;\r\n        outputShape.x1 = x1;\r\n        outputShape.x2 = x2;\r\n        outputShape.y1 = y1;\r\n        outputShape.y2 = y2;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        if (round(x1 * 2) === round(x2 * 2)) {\r\n            outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\r\n        }\r\n        if (round(y1 * 2) === round(y2 * 2)) {\r\n            outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\r\n        }\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimizeRect(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var originX = inputShape.x;\r\n        var originY = inputShape.y;\r\n        var originWidth = inputShape.width;\r\n        var originHeight = inputShape.height;\r\n        outputShape.x = originX;\r\n        outputShape.y = originY;\r\n        outputShape.width = originWidth;\r\n        outputShape.height = originHeight;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        outputShape.x = subPixelOptimize(originX, lineWidth, true);\r\n        outputShape.y = subPixelOptimize(originY, lineWidth, true);\r\n        outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\r\n        outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimize(position, lineWidth, positiveOrNegative) {\r\n        if (!lineWidth) {\r\n            return position;\r\n        }\r\n        var doubledPosition = round(position * 2);\r\n        return (doubledPosition + round(lineWidth)) % 2 === 0\r\n            ? doubledPosition / 2\r\n            : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\r\n    }\n\n    var RectShape = (function () {\r\n        function RectShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return RectShape;\r\n    }());\r\n    var subPixelOptimizeOutputShape = {};\r\n    var Rect = (function (_super) {\r\n        __extends(Rect, _super);\r\n        function Rect(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rect.prototype.getDefaultShape = function () {\r\n            return new RectShape();\r\n        };\r\n        Rect.prototype.buildPath = function (ctx, shape) {\r\n            var x;\r\n            var y;\r\n            var width;\r\n            var height;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\r\n                x = optimizedShape.x;\r\n                y = optimizedShape.y;\r\n                width = optimizedShape.width;\r\n                height = optimizedShape.height;\r\n                optimizedShape.r = shape.r;\r\n                shape = optimizedShape;\r\n            }\r\n            else {\r\n                x = shape.x;\r\n                y = shape.y;\r\n                width = shape.width;\r\n                height = shape.height;\r\n            }\r\n            if (!shape.r) {\r\n                ctx.rect(x, y, width, height);\r\n            }\r\n            else {\r\n                buildPath(ctx, shape);\r\n            }\r\n        };\r\n        Rect.prototype.isZeroArea = function () {\r\n            return !this.shape.width || !this.shape.height;\r\n        };\r\n        return Rect;\r\n    }(Path));\r\n    Rect.prototype.type = 'rect';\n\n    var EllipseShape = (function () {\r\n        function EllipseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.rx = 0;\r\n            this.ry = 0;\r\n        }\r\n        return EllipseShape;\r\n    }());\r\n    var Ellipse = (function (_super) {\r\n        __extends(Ellipse, _super);\r\n        function Ellipse(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ellipse.prototype.getDefaultShape = function () {\r\n            return new EllipseShape();\r\n        };\r\n        Ellipse.prototype.buildPath = function (ctx, shape) {\r\n            var k = 0.5522848;\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.rx;\r\n            var b = shape.ry;\r\n            var ox = a * k;\r\n            var oy = b * k;\r\n            ctx.moveTo(x - a, y);\r\n            ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\r\n            ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\r\n            ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\r\n            ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\r\n            ctx.closePath();\r\n        };\r\n        return Ellipse;\r\n    }(Path));\r\n    Ellipse.prototype.type = 'ellipse';\n\n    var subPixelOptimizeOutputShape$1 = {};\r\n    var LineShape = (function () {\r\n        function LineShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return LineShape;\r\n    }());\r\n    var Line = (function (_super) {\r\n        __extends(Line, _super);\r\n        function Line(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Line.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Line.prototype.getDefaultShape = function () {\r\n            return new LineShape();\r\n        };\r\n        Line.prototype.buildPath = function (ctx, shape) {\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape$1, shape, this.style);\r\n                x1 = optimizedShape.x1;\r\n                y1 = optimizedShape.y1;\r\n                x2 = optimizedShape.x2;\r\n                y2 = optimizedShape.y2;\r\n            }\r\n            else {\r\n                x1 = shape.x1;\r\n                y1 = shape.y1;\r\n                x2 = shape.x2;\r\n                y2 = shape.y2;\r\n            }\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (percent < 1) {\r\n                x2 = x1 * (1 - percent) + x2 * percent;\r\n                y2 = y1 * (1 - percent) + y2 * percent;\r\n            }\r\n            ctx.lineTo(x2, y2);\r\n        };\r\n        Line.prototype.pointAt = function (p) {\r\n            var shape = this.shape;\r\n            return [\r\n                shape.x1 * (1 - p) + shape.x2 * p,\r\n                shape.y1 * (1 - p) + shape.y2 * p\r\n            ];\r\n        };\r\n        return Line;\r\n    }(Path));\r\n    Line.prototype.type = 'line';\n\n    function interpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function smoothSpline(points, isLoop) {\r\n        var len = points.length;\r\n        var ret = [];\r\n        var distance$1 = 0;\r\n        for (var i = 1; i < len; i++) {\r\n            distance$1 += distance(points[i - 1], points[i]);\r\n        }\r\n        var segs = distance$1 / 2;\r\n        segs = segs < len ? len : segs;\r\n        for (var i = 0; i < segs; i++) {\r\n            var pos = i / (segs - 1) * (isLoop ? len : len - 1);\r\n            var idx = Math.floor(pos);\r\n            var w = pos - idx;\r\n            var p0 = void 0;\r\n            var p1 = points[idx % len];\r\n            var p2 = void 0;\r\n            var p3 = void 0;\r\n            if (!isLoop) {\r\n                p0 = points[idx === 0 ? idx : idx - 1];\r\n                p2 = points[idx > len - 2 ? len - 1 : idx + 1];\r\n                p3 = points[idx > len - 3 ? len - 1 : idx + 2];\r\n            }\r\n            else {\r\n                p0 = points[(idx - 1 + len) % len];\r\n                p2 = points[(idx + 1) % len];\r\n                p3 = points[(idx + 2) % len];\r\n            }\r\n            var w2 = w * w;\r\n            var w3 = w * w2;\r\n            ret.push([\r\n                interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),\r\n                interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)\r\n            ]);\r\n        }\r\n        return ret;\r\n    }\n\n    function smoothBezier(points, smooth, isLoop, constraint) {\r\n        var cps = [];\r\n        var v = [];\r\n        var v1 = [];\r\n        var v2 = [];\r\n        var prevPoint;\r\n        var nextPoint;\r\n        var min$1;\r\n        var max$1;\r\n        if (constraint) {\r\n            min$1 = [Infinity, Infinity];\r\n            max$1 = [-Infinity, -Infinity];\r\n            for (var i = 0, len = points.length; i < len; i++) {\r\n                min(min$1, min$1, points[i]);\r\n                max(max$1, max$1, points[i]);\r\n            }\r\n            min(min$1, min$1, constraint[0]);\r\n            max(max$1, max$1, constraint[1]);\r\n        }\r\n        for (var i = 0, len = points.length; i < len; i++) {\r\n            var point = points[i];\r\n            if (isLoop) {\r\n                prevPoint = points[i ? i - 1 : len - 1];\r\n                nextPoint = points[(i + 1) % len];\r\n            }\r\n            else {\r\n                if (i === 0 || i === len - 1) {\r\n                    cps.push(clone$1(points[i]));\r\n                    continue;\r\n                }\r\n                else {\r\n                    prevPoint = points[i - 1];\r\n                    nextPoint = points[i + 1];\r\n                }\r\n            }\r\n            sub(v, nextPoint, prevPoint);\r\n            scale(v, v, smooth);\r\n            var d0 = distance(point, prevPoint);\r\n            var d1 = distance(point, nextPoint);\r\n            var sum = d0 + d1;\r\n            if (sum !== 0) {\r\n                d0 /= sum;\r\n                d1 /= sum;\r\n            }\r\n            scale(v1, v, -d0);\r\n            scale(v2, v, d1);\r\n            var cp0 = add([], point, v1);\r\n            var cp1 = add([], point, v2);\r\n            if (constraint) {\r\n                max(cp0, cp0, min$1);\r\n                min(cp0, cp0, max$1);\r\n                max(cp1, cp1, min$1);\r\n                min(cp1, cp1, max$1);\r\n            }\r\n            cps.push(cp0);\r\n            cps.push(cp1);\r\n        }\r\n        if (isLoop) {\r\n            cps.push(cps.shift());\r\n        }\r\n        return cps;\r\n    }\n\n    function buildPath$1(ctx, shape, closePath) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (points && points.length >= 2) {\r\n            if (smooth && smooth !== 'spline') {\r\n                var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                var len = points.length;\r\n                for (var i = 0; i < (closePath ? len : len - 1); i++) {\r\n                    var cp1 = controlPoints[i * 2];\r\n                    var cp2 = controlPoints[i * 2 + 1];\r\n                    var p = points[(i + 1) % len];\r\n                    ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\r\n                }\r\n            }\r\n            else {\r\n                if (smooth === 'spline') {\r\n                    points = smoothSpline(points, closePath);\r\n                }\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                for (var i = 1, l = points.length; i < l; i++) {\r\n                    ctx.lineTo(points[i][0], points[i][1]);\r\n                }\r\n            }\r\n            closePath && ctx.closePath();\r\n        }\r\n    }\n\n    var PolygonShape = (function () {\r\n        function PolygonShape() {\r\n            this.points = null;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolygonShape;\r\n    }());\r\n    var Polygon = (function (_super) {\r\n        __extends(Polygon, _super);\r\n        function Polygon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polygon.prototype.getDefaultShape = function () {\r\n            return new PolygonShape();\r\n        };\r\n        Polygon.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, true);\r\n        };\r\n        return Polygon;\r\n    }(Path));\r\n    Polygon.prototype.type = 'polygon';\n\n    var PolylineShape = (function () {\r\n        function PolylineShape() {\r\n            this.points = null;\r\n            this.percent = 1;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolylineShape;\r\n    }());\r\n    var Polyline = (function (_super) {\r\n        __extends(Polyline, _super);\r\n        function Polyline(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Polyline.prototype.getDefaultShape = function () {\r\n            return new PolylineShape();\r\n        };\r\n        Polyline.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, false);\r\n        };\r\n        return Polyline;\r\n    }(Path));\r\n    Polyline.prototype.type = 'polyline';\n\n    var Gradient = (function () {\r\n        function Gradient(colorStops) {\r\n            this.colorStops = colorStops || [];\r\n        }\r\n        Gradient.prototype.addColorStop = function (offset, color) {\r\n            this.colorStops.push({\r\n                offset: offset,\r\n                color: color\r\n            });\r\n        };\r\n        return Gradient;\r\n    }());\n\n    var LinearGradient = (function (_super) {\r\n        __extends(LinearGradient, _super);\r\n        function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0 : x;\r\n            _this.y = y == null ? 0 : y;\r\n            _this.x2 = x2 == null ? 1 : x2;\r\n            _this.y2 = y2 == null ? 0 : y2;\r\n            _this.type = 'linear';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return LinearGradient;\r\n    }(Gradient));\n\n    var DEFAULT_TSPAN_STYLE = defaults({\r\n        strokeFirst: true,\r\n        font: DEFAULT_FONT,\r\n        x: 0,\r\n        y: 0,\r\n        textAlign: 'left',\r\n        textBaseline: 'top',\r\n        miterLimit: 2\r\n    }, DEFAULT_PATH_STYLE);\r\n    var TSpan = (function (_super) {\r\n        __extends(TSpan, _super);\r\n        function TSpan() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        TSpan.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return stroke != null && stroke !== 'none' && style.lineWidth > 0;\r\n        };\r\n        TSpan.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        TSpan.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_TSPAN_STYLE, obj);\r\n        };\r\n        TSpan.prototype.setBoundingRect = function (rect) {\r\n            this._rect = rect;\r\n        };\r\n        TSpan.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                var text = style.text;\r\n                text != null ? (text += '') : (text = '');\r\n                var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\r\n                rect.x += style.x || 0;\r\n                rect.y += style.y || 0;\r\n                if (this.hasStroke()) {\r\n                    var w = style.lineWidth;\r\n                    rect.x -= w / 2;\r\n                    rect.y -= w / 2;\r\n                    rect.width += w;\r\n                    rect.height += w;\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        TSpan.initDefaultProps = (function () {\r\n            var tspanProto = TSpan.prototype;\r\n            tspanProto.dirtyRectTolerance = 10;\r\n        })();\r\n        return TSpan;\r\n    }(Displayable));\r\n    TSpan.prototype.type = 'tspan';\n\n    var DILIMITER_REG = /[\\s,]+/;\r\n    function parseXML(svg) {\r\n        if (isString(svg)) {\r\n            var parser = new DOMParser();\r\n            svg = parser.parseFromString(svg, 'text/xml');\r\n        }\r\n        var svgNode = svg;\r\n        if (svgNode.nodeType === 9) {\r\n            svgNode = svgNode.firstChild;\r\n        }\r\n        while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\r\n            svgNode = svgNode.nextSibling;\r\n        }\r\n        return svgNode;\r\n    }\r\n    var nodeParsers;\r\n    var SVGParser = (function () {\r\n        function SVGParser() {\r\n            this._defs = {};\r\n            this._root = null;\r\n            this._isDefine = false;\r\n            this._isText = false;\r\n        }\r\n        SVGParser.prototype.parse = function (xml, opt) {\r\n            opt = opt || {};\r\n            var svg = parseXML(xml);\r\n            if (!svg) {\r\n                throw new Error('Illegal svg');\r\n            }\r\n            var root = new Group();\r\n            this._root = root;\r\n            var viewBox = svg.getAttribute('viewBox') || '';\r\n            var width = parseFloat((svg.getAttribute('width') || opt.width));\r\n            var height = parseFloat((svg.getAttribute('height') || opt.height));\r\n            isNaN(width) && (width = null);\r\n            isNaN(height) && (height = null);\r\n            parseAttributes(svg, root, null, true);\r\n            var child = svg.firstChild;\r\n            while (child) {\r\n                this._parseNode(child, root);\r\n                child = child.nextSibling;\r\n            }\r\n            var viewBoxRect;\r\n            var viewBoxTransform;\r\n            if (viewBox) {\r\n                var viewBoxArr = trim(viewBox).split(DILIMITER_REG);\r\n                if (viewBoxArr.length >= 4) {\r\n                    viewBoxRect = {\r\n                        x: parseFloat((viewBoxArr[0] || 0)),\r\n                        y: parseFloat((viewBoxArr[1] || 0)),\r\n                        width: parseFloat(viewBoxArr[2]),\r\n                        height: parseFloat(viewBoxArr[3])\r\n                    };\r\n                }\r\n            }\r\n            if (viewBoxRect && width != null && height != null) {\r\n                viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\r\n                if (!opt.ignoreViewBox) {\r\n                    var elRoot = root;\r\n                    root = new Group();\r\n                    root.add(elRoot);\r\n                    elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;\r\n                    elRoot.x = viewBoxTransform.x;\r\n                    elRoot.y = viewBoxTransform.y;\r\n                }\r\n            }\r\n            if (!opt.ignoreRootClip && width != null && height != null) {\r\n                root.setClipPath(new Rect({\r\n                    shape: { x: 0, y: 0, width: width, height: height }\r\n                }));\r\n            }\r\n            return {\r\n                root: root,\r\n                width: width,\r\n                height: height,\r\n                viewBoxRect: viewBoxRect,\r\n                viewBoxTransform: viewBoxTransform\r\n            };\r\n        };\r\n        SVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\r\n            var nodeName = xmlNode.nodeName.toLowerCase();\r\n            if (nodeName === 'defs') {\r\n                this._isDefine = true;\r\n            }\r\n            else if (nodeName === 'text') {\r\n                this._isText = true;\r\n            }\r\n            var el;\r\n            if (this._isDefine) {\r\n                var parser = defineParsers[nodeName];\r\n                if (parser) {\r\n                    var def = parser.call(this, xmlNode);\r\n                    var id = xmlNode.getAttribute('id');\r\n                    if (id) {\r\n                        this._defs[id] = def;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                var parser = nodeParsers[nodeName];\r\n                if (parser) {\r\n                    el = parser.call(this, xmlNode, parentGroup);\r\n                    parentGroup.add(el);\r\n                }\r\n            }\r\n            if (el) {\r\n                var child = xmlNode.firstChild;\r\n                while (child) {\r\n                    if (child.nodeType === 1) {\r\n                        this._parseNode(child, el);\r\n                    }\r\n                    if (child.nodeType === 3 && this._isText) {\r\n                        this._parseText(child, el);\r\n                    }\r\n                    child = child.nextSibling;\r\n                }\r\n            }\r\n            if (nodeName === 'defs') {\r\n                this._isDefine = false;\r\n            }\r\n            else if (nodeName === 'text') {\r\n                this._isText = false;\r\n            }\r\n        };\r\n        SVGParser.prototype._parseText = function (xmlNode, parentGroup) {\r\n            if (xmlNode.nodeType === 1) {\r\n                var dx = xmlNode.getAttribute('dx') || 0;\r\n                var dy = xmlNode.getAttribute('dy') || 0;\r\n                this._textX += parseFloat(dx);\r\n                this._textY += parseFloat(dy);\r\n            }\r\n            var text = new TSpan({\r\n                style: {\r\n                    text: xmlNode.textContent\r\n                },\r\n                x: this._textX || 0,\r\n                y: this._textY || 0\r\n            });\r\n            inheritStyle(parentGroup, text);\r\n            parseAttributes(xmlNode, text, this._defs);\r\n            var textStyle = text.style;\r\n            var fontSize = textStyle.fontSize;\r\n            if (fontSize && fontSize < 9) {\r\n                textStyle.fontSize = 9;\r\n                text.scaleX *= fontSize / 9;\r\n                text.scaleY *= fontSize / 9;\r\n            }\r\n            var font = (textStyle.fontSize || textStyle.fontFamily) && [\r\n                textStyle.fontStyle,\r\n                textStyle.fontWeight,\r\n                (textStyle.fontSize || 12) + 'px',\r\n                textStyle.fontFamily || 'sans-serif'\r\n            ].join(' ');\r\n            textStyle.font = font;\r\n            var rect = text.getBoundingRect();\r\n            this._textX += rect.width;\r\n            parentGroup.add(text);\r\n            return text;\r\n        };\r\n        SVGParser.internalField = (function () {\r\n            nodeParsers = {\r\n                'g': function (xmlNode, parentGroup) {\r\n                    var g = new Group();\r\n                    inheritStyle(parentGroup, g);\r\n                    parseAttributes(xmlNode, g, this._defs);\r\n                    return g;\r\n                },\r\n                'rect': function (xmlNode, parentGroup) {\r\n                    var rect = new Rect();\r\n                    inheritStyle(parentGroup, rect);\r\n                    parseAttributes(xmlNode, rect, this._defs);\r\n                    rect.setShape({\r\n                        x: parseFloat(xmlNode.getAttribute('x') || '0'),\r\n                        y: parseFloat(xmlNode.getAttribute('y') || '0'),\r\n                        width: parseFloat(xmlNode.getAttribute('width') || '0'),\r\n                        height: parseFloat(xmlNode.getAttribute('height') || '0')\r\n                    });\r\n                    return rect;\r\n                },\r\n                'circle': function (xmlNode, parentGroup) {\r\n                    var circle = new Circle();\r\n                    inheritStyle(parentGroup, circle);\r\n                    parseAttributes(xmlNode, circle, this._defs);\r\n                    circle.setShape({\r\n                        cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\r\n                        cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\r\n                        r: parseFloat(xmlNode.getAttribute('r') || '0')\r\n                    });\r\n                    return circle;\r\n                },\r\n                'line': function (xmlNode, parentGroup) {\r\n                    var line = new Line();\r\n                    inheritStyle(parentGroup, line);\r\n                    parseAttributes(xmlNode, line, this._defs);\r\n                    line.setShape({\r\n                        x1: parseFloat(xmlNode.getAttribute('x1') || '0'),\r\n                        y1: parseFloat(xmlNode.getAttribute('y1') || '0'),\r\n                        x2: parseFloat(xmlNode.getAttribute('x2') || '0'),\r\n                        y2: parseFloat(xmlNode.getAttribute('y2') || '0')\r\n                    });\r\n                    return line;\r\n                },\r\n                'ellipse': function (xmlNode, parentGroup) {\r\n                    var ellipse = new Ellipse();\r\n                    inheritStyle(parentGroup, ellipse);\r\n                    parseAttributes(xmlNode, ellipse, this._defs);\r\n                    ellipse.setShape({\r\n                        cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\r\n                        cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\r\n                        rx: parseFloat(xmlNode.getAttribute('rx') || '0'),\r\n                        ry: parseFloat(xmlNode.getAttribute('ry') || '0')\r\n                    });\r\n                    return ellipse;\r\n                },\r\n                'polygon': function (xmlNode, parentGroup) {\r\n                    var pointsStr = xmlNode.getAttribute('points');\r\n                    var pointsArr;\r\n                    if (pointsStr) {\r\n                        pointsArr = parsePoints(pointsStr);\r\n                    }\r\n                    var polygon = new Polygon({\r\n                        shape: {\r\n                            points: pointsArr || []\r\n                        }\r\n                    });\r\n                    inheritStyle(parentGroup, polygon);\r\n                    parseAttributes(xmlNode, polygon, this._defs);\r\n                    return polygon;\r\n                },\r\n                'polyline': function (xmlNode, parentGroup) {\r\n                    var path = new Path();\r\n                    inheritStyle(parentGroup, path);\r\n                    parseAttributes(xmlNode, path, this._defs);\r\n                    var pointsStr = xmlNode.getAttribute('points');\r\n                    var pointsArr;\r\n                    if (pointsStr) {\r\n                        pointsArr = parsePoints(pointsStr);\r\n                    }\r\n                    var polyline = new Polyline({\r\n                        shape: {\r\n                            points: pointsArr || []\r\n                        }\r\n                    });\r\n                    return polyline;\r\n                },\r\n                'image': function (xmlNode, parentGroup) {\r\n                    var img = new ZRImage();\r\n                    inheritStyle(parentGroup, img);\r\n                    parseAttributes(xmlNode, img, this._defs);\r\n                    img.setStyle({\r\n                        image: xmlNode.getAttribute('xlink:href'),\r\n                        x: +xmlNode.getAttribute('x'),\r\n                        y: +xmlNode.getAttribute('y'),\r\n                        width: +xmlNode.getAttribute('width'),\r\n                        height: +xmlNode.getAttribute('height')\r\n                    });\r\n                    return img;\r\n                },\r\n                'text': function (xmlNode, parentGroup) {\r\n                    var x = xmlNode.getAttribute('x') || '0';\r\n                    var y = xmlNode.getAttribute('y') || '0';\r\n                    var dx = xmlNode.getAttribute('dx') || '0';\r\n                    var dy = xmlNode.getAttribute('dy') || '0';\r\n                    this._textX = parseFloat(x) + parseFloat(dx);\r\n                    this._textY = parseFloat(y) + parseFloat(dy);\r\n                    var g = new Group();\r\n                    inheritStyle(parentGroup, g);\r\n                    parseAttributes(xmlNode, g, this._defs);\r\n                    return g;\r\n                },\r\n                'tspan': function (xmlNode, parentGroup) {\r\n                    var x = xmlNode.getAttribute('x');\r\n                    var y = xmlNode.getAttribute('y');\r\n                    if (x != null) {\r\n                        this._textX = parseFloat(x);\r\n                    }\r\n                    if (y != null) {\r\n                        this._textY = parseFloat(y);\r\n                    }\r\n                    var dx = xmlNode.getAttribute('dx') || 0;\r\n                    var dy = xmlNode.getAttribute('dy') || 0;\r\n                    var g = new Group();\r\n                    inheritStyle(parentGroup, g);\r\n                    parseAttributes(xmlNode, g, this._defs);\r\n                    this._textX += dx;\r\n                    this._textY += dy;\r\n                    return g;\r\n                },\r\n                'path': function (xmlNode, parentGroup) {\r\n                    var d = xmlNode.getAttribute('d') || '';\r\n                    var path = createFromString(d);\r\n                    inheritStyle(parentGroup, path);\r\n                    parseAttributes(xmlNode, path, this._defs);\r\n                    return path;\r\n                }\r\n            };\r\n        })();\r\n        return SVGParser;\r\n    }());\r\n    var defineParsers = {\r\n        'lineargradient': function (xmlNode) {\r\n            var x1 = parseInt(xmlNode.getAttribute('x1') || '0', 10);\r\n            var y1 = parseInt(xmlNode.getAttribute('y1') || '0', 10);\r\n            var x2 = parseInt(xmlNode.getAttribute('x2') || '10', 10);\r\n            var y2 = parseInt(xmlNode.getAttribute('y2') || '0', 10);\r\n            var gradient = new LinearGradient(x1, y1, x2, y2);\r\n            _parseGradientColorStops(xmlNode, gradient);\r\n            return gradient;\r\n        }\r\n    };\r\n    function _parseGradientColorStops(xmlNode, gradient) {\r\n        var stop = xmlNode.firstChild;\r\n        while (stop) {\r\n            if (stop.nodeType === 1) {\r\n                var offsetStr = stop.getAttribute('offset');\r\n                var offset = void 0;\r\n                if (offsetStr.indexOf('%') > 0) {\r\n                    offset = parseInt(offsetStr, 10) / 100;\r\n                }\r\n                else if (offsetStr) {\r\n                    offset = parseFloat(offsetStr);\r\n                }\r\n                else {\r\n                    offset = 0;\r\n                }\r\n                var stopColor = stop.getAttribute('stop-color') || '#000000';\r\n                gradient.colorStops.push({\r\n                    offset: offset,\r\n                    color: stopColor\r\n                });\r\n            }\r\n            stop = stop.nextSibling;\r\n        }\r\n    }\r\n    function inheritStyle(parent, child) {\r\n        if (parent && parent.__inheritedStyle) {\r\n            if (!child.__inheritedStyle) {\r\n                child.__inheritedStyle = {};\r\n            }\r\n            defaults(child.__inheritedStyle, parent.__inheritedStyle);\r\n        }\r\n    }\r\n    function parsePoints(pointsString) {\r\n        var list = trim(pointsString).split(DILIMITER_REG);\r\n        var points = [];\r\n        for (var i = 0; i < list.length; i += 2) {\r\n            var x = parseFloat(list[i]);\r\n            var y = parseFloat(list[i + 1]);\r\n            points.push([x, y]);\r\n        }\r\n        return points;\r\n    }\r\n    var attributesMap = {\r\n        'fill': 'fill',\r\n        'stroke': 'stroke',\r\n        'stroke-width': 'lineWidth',\r\n        'opacity': 'opacity',\r\n        'fill-opacity': 'fillOpacity',\r\n        'stroke-opacity': 'strokeOpacity',\r\n        'stroke-dasharray': 'lineDash',\r\n        'stroke-dashoffset': 'lineDashOffset',\r\n        'stroke-linecap': 'lineCap',\r\n        'stroke-linejoin': 'lineJoin',\r\n        'stroke-miterlimit': 'miterLimit',\r\n        'font-family': 'fontFamily',\r\n        'font-size': 'fontSize',\r\n        'font-style': 'fontStyle',\r\n        'font-weight': 'fontWeight',\r\n        'text-align': 'textAlign',\r\n        'alignment-baseline': 'textBaseline'\r\n    };\r\n    function parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\r\n        var disp = el;\r\n        var zrStyle = disp.__inheritedStyle || {};\r\n        if (xmlNode.nodeType === 1) {\r\n            parseTransformAttribute(xmlNode, el);\r\n            extend(zrStyle, parseStyleAttribute(xmlNode));\r\n            if (!onlyInlineStyle) {\r\n                for (var svgAttrName in attributesMap) {\r\n                    if (attributesMap.hasOwnProperty(svgAttrName)) {\r\n                        var attrValue = xmlNode.getAttribute(svgAttrName);\r\n                        if (attrValue != null) {\r\n                            zrStyle[attributesMap[svgAttrName]] = attrValue;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        disp.style = disp.style || {};\r\n        zrStyle.fill != null && (disp.style.fill = getPaint(zrStyle.fill, defs));\r\n        zrStyle.stroke != null && (disp.style.stroke = getPaint(zrStyle.stroke, defs));\r\n        each([\r\n            'lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'\r\n        ], function (propName) {\r\n            zrStyle[propName] != null && (disp.style[propName] = parseFloat(zrStyle[propName]));\r\n        });\r\n        if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\r\n            zrStyle.textBaseline = 'alphabetic';\r\n        }\r\n        if (zrStyle.textBaseline === 'alphabetic') {\r\n            zrStyle.textBaseline = 'bottom';\r\n        }\r\n        if (zrStyle.textAlign === 'start') {\r\n            zrStyle.textAlign = 'left';\r\n        }\r\n        if (zrStyle.textAlign === 'end') {\r\n            zrStyle.textAlign = 'right';\r\n        }\r\n        each(['lineDashOffset', 'lineCap', 'lineJoin',\r\n            'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'\r\n        ], function (propName) {\r\n            zrStyle[propName] != null && (disp.style[propName] = zrStyle[propName]);\r\n        });\r\n        if (zrStyle.lineDash) {\r\n            disp.style.lineDash = map(trim(zrStyle.lineDash).split(DILIMITER_REG), function (str) {\r\n                return parseFloat(str);\r\n            });\r\n        }\r\n        disp.__inheritedStyle = zrStyle;\r\n    }\r\n    var urlRegex = /url\\(\\s*#(.*?)\\)/;\r\n    function getPaint(str, defs) {\r\n        var urlMatch = defs && str && str.match(urlRegex);\r\n        if (urlMatch) {\r\n            var url = trim(urlMatch[1]);\r\n            var def = defs[url];\r\n            return def;\r\n        }\r\n        return str;\r\n    }\r\n    var transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\r\n    function parseTransformAttribute(xmlNode, node) {\r\n        var transform = xmlNode.getAttribute('transform');\r\n        if (transform) {\r\n            transform = transform.replace(/,/g, ' ');\r\n            var transformOps_1 = [];\r\n            var m = null;\r\n            transform.replace(transformRegex, function (str, type, value) {\r\n                transformOps_1.push(type, value);\r\n                return '';\r\n            });\r\n            for (var i = transformOps_1.length - 1; i > 0; i -= 2) {\r\n                var value = transformOps_1[i];\r\n                var type = transformOps_1[i - 1];\r\n                var valueArr = void 0;\r\n                m = m || create$1();\r\n                switch (type) {\r\n                    case 'translate':\r\n                        valueArr = trim(value).split(DILIMITER_REG);\r\n                        translate(m, m, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || '0')]);\r\n                        break;\r\n                    case 'scale':\r\n                        valueArr = trim(value).split(DILIMITER_REG);\r\n                        scale$1(m, m, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]);\r\n                        break;\r\n                    case 'rotate':\r\n                        valueArr = trim(value).split(DILIMITER_REG);\r\n                        rotate(m, m, parseFloat(valueArr[0]));\r\n                        break;\r\n                    case 'skew':\r\n                        valueArr = trim(value).split(DILIMITER_REG);\r\n                        console.warn('Skew transform is not supported yet');\r\n                        break;\r\n                    case 'matrix':\r\n                        valueArr = trim(value).split(DILIMITER_REG);\r\n                        m[0] = parseFloat(valueArr[0]);\r\n                        m[1] = parseFloat(valueArr[1]);\r\n                        m[2] = parseFloat(valueArr[2]);\r\n                        m[3] = parseFloat(valueArr[3]);\r\n                        m[4] = parseFloat(valueArr[4]);\r\n                        m[5] = parseFloat(valueArr[5]);\r\n                        break;\r\n                }\r\n            }\r\n            node.setLocalTransform(m);\r\n        }\r\n    }\r\n    var styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\r\n    function parseStyleAttribute(xmlNode) {\r\n        var style = xmlNode.getAttribute('style');\r\n        var result = {};\r\n        if (!style) {\r\n            return result;\r\n        }\r\n        var styleList = {};\r\n        styleRegex.lastIndex = 0;\r\n        var styleRegResult;\r\n        while ((styleRegResult = styleRegex.exec(style)) != null) {\r\n            styleList[styleRegResult[1]] = styleRegResult[2];\r\n        }\r\n        for (var svgAttrName in attributesMap) {\r\n            if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\r\n                result[attributesMap[svgAttrName]] = styleList[svgAttrName];\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function makeViewBoxTransform(viewBoxRect, width, height) {\r\n        var scaleX = width / viewBoxRect.width;\r\n        var scaleY = height / viewBoxRect.height;\r\n        var scale = Math.min(scaleX, scaleY);\r\n        return {\r\n            scale: scale,\r\n            x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2,\r\n            y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2\r\n        };\r\n    }\r\n    function parseSVG(xml, opt) {\r\n        var parser = new SVGParser();\r\n        return parser.parse(xml, opt);\r\n    }\n\n    var PI$2 = Math.PI;\r\n    var PI2$5 = PI$2 * 2;\r\n    var mathSin$3 = Math.sin;\r\n    var mathCos$3 = Math.cos;\r\n    var mathACos = Math.acos;\r\n    var mathATan2 = Math.atan2;\r\n    var mathAbs$1 = Math.abs;\r\n    var mathSqrt$4 = Math.sqrt;\r\n    var mathMax$3 = Math.max;\r\n    var mathMin$3 = Math.min;\r\n    var e = 1e-4;\r\n    function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\r\n        var x10 = x1 - x0;\r\n        var y10 = y1 - y0;\r\n        var x32 = x3 - x2;\r\n        var y32 = y3 - y2;\r\n        var t = y32 * x10 - x32 * y10;\r\n        if (t * t < e) {\r\n            return;\r\n        }\r\n        t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\r\n        return [x0 + t * x10, y0 + t * y10];\r\n    }\r\n    function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\r\n        var x01 = x0 - x1;\r\n        var y01 = y0 - y1;\r\n        var lo = (clockwise ? cr : -cr) / mathSqrt$4(x01 * x01 + y01 * y01);\r\n        var ox = lo * y01;\r\n        var oy = -lo * x01;\r\n        var x11 = x0 + ox;\r\n        var y11 = y0 + oy;\r\n        var x10 = x1 + ox;\r\n        var y10 = y1 + oy;\r\n        var x00 = (x11 + x10) / 2;\r\n        var y00 = (y11 + y10) / 2;\r\n        var dx = x10 - x11;\r\n        var dy = y10 - y11;\r\n        var d2 = dx * dx + dy * dy;\r\n        var r = radius - cr;\r\n        var s = x11 * y10 - x10 * y11;\r\n        var d = (dy < 0 ? -1 : 1) * mathSqrt$4(mathMax$3(0, r * r * d2 - s * s));\r\n        var cx0 = (s * dy - dx * d) / d2;\r\n        var cy0 = (-s * dx - dy * d) / d2;\r\n        var cx1 = (s * dy + dx * d) / d2;\r\n        var cy1 = (-s * dx + dy * d) / d2;\r\n        var dx0 = cx0 - x00;\r\n        var dy0 = cy0 - y00;\r\n        var dx1 = cx1 - x00;\r\n        var dy1 = cy1 - y00;\r\n        if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\r\n            cx0 = cx1;\r\n            cy0 = cy1;\r\n        }\r\n        return {\r\n            cx: cx0,\r\n            cy: cy0,\r\n            x01: -ox,\r\n            y01: -oy,\r\n            x11: cx0 * (radius / r - 1),\r\n            y11: cy0 * (radius / r - 1)\r\n        };\r\n    }\r\n    function buildPath$2(ctx, shape) {\r\n        var radius = mathMax$3(shape.r, 0);\r\n        var innerRadius = mathMax$3(shape.r0 || 0, 0);\r\n        var hasRadius = radius > 0;\r\n        var hasInnerRadius = innerRadius > 0;\r\n        if (!hasRadius && !hasInnerRadius) {\r\n            return;\r\n        }\r\n        if (!hasRadius) {\r\n            radius = innerRadius;\r\n            innerRadius = 0;\r\n        }\r\n        if (innerRadius > radius) {\r\n            var tmp = radius;\r\n            radius = innerRadius;\r\n            innerRadius = tmp;\r\n        }\r\n        var clockwise = !!shape.clockwise;\r\n        var startAngle = shape.startAngle;\r\n        var endAngle = shape.endAngle;\r\n        var tmpAngles = [startAngle, endAngle];\r\n        normalizeArcAngles(tmpAngles, !clockwise);\r\n        var arc = mathAbs$1(tmpAngles[0] - tmpAngles[1]);\r\n        var x = shape.cx;\r\n        var y = shape.cy;\r\n        var cornerRadius = shape.cornerRadius || 0;\r\n        var innerCornerRadius = shape.innerCornerRadius || 0;\r\n        if (!(radius > e)) {\r\n            ctx.moveTo(x, y);\r\n        }\r\n        else if (arc > PI2$5 - e) {\r\n            ctx.moveTo(x + radius * mathCos$3(startAngle), y + radius * mathSin$3(startAngle));\r\n            ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n            if (innerRadius > e) {\r\n                ctx.moveTo(x + innerRadius * mathCos$3(endAngle), y + innerRadius * mathSin$3(endAngle));\r\n                ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n            }\r\n        }\r\n        else {\r\n            var halfRd = mathAbs$1(radius - innerRadius) / 2;\r\n            var cr = mathMin$3(halfRd, cornerRadius);\r\n            var icr = mathMin$3(halfRd, innerCornerRadius);\r\n            var cr0 = icr;\r\n            var cr1 = cr;\r\n            var xrs = radius * mathCos$3(startAngle);\r\n            var yrs = radius * mathSin$3(startAngle);\r\n            var xire = innerRadius * mathCos$3(endAngle);\r\n            var yire = innerRadius * mathSin$3(endAngle);\r\n            var xre = void 0;\r\n            var yre = void 0;\r\n            var xirs = void 0;\r\n            var yirs = void 0;\r\n            if (cr > e || icr > e) {\r\n                xre = radius * mathCos$3(endAngle);\r\n                yre = radius * mathSin$3(endAngle);\r\n                xirs = innerRadius * mathCos$3(startAngle);\r\n                yirs = innerRadius * mathSin$3(startAngle);\r\n                if (arc < PI$2) {\r\n                    var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\r\n                    if (it_1) {\r\n                        var x0 = xrs - it_1[0];\r\n                        var y0 = yrs - it_1[1];\r\n                        var x1 = xre - it_1[0];\r\n                        var y1 = yre - it_1[1];\r\n                        var a = 1 / mathSin$3(mathACos((x0 * x1 + y0 * y1) / (mathSqrt$4(x0 * x0 + y0 * y0) * mathSqrt$4(x1 * x1 + y1 * y1))) / 2);\r\n                        var b = mathSqrt$4(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\r\n                        cr0 = mathMin$3(icr, (innerRadius - b) / (a - 1));\r\n                        cr1 = mathMin$3(cr, (radius - b) / (a + 1));\r\n                    }\r\n                }\r\n            }\r\n            if (!(arc > e)) {\r\n                ctx.moveTo(x + xrs, y + yrs);\r\n            }\r\n            else if (cr1 > e) {\r\n                var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, cr1, clockwise);\r\n                var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, cr1, clockwise);\r\n                ctx.moveTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n                if (cr1 < cr) {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n                else {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n                    ctx.arc(x, y, radius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), !clockwise);\r\n                    ctx.arc(x + ct1.cx, y + ct1.cy, cr1, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n            }\r\n            else {\r\n                ctx.moveTo(x + xrs, y + yrs);\r\n                ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n            }\r\n            if (!(innerRadius > e) || !(arc > e)) {\r\n                ctx.lineTo(x + xire, y + yire);\r\n            }\r\n            else if (cr0 > e) {\r\n                var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -cr0, clockwise);\r\n                var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -cr0, clockwise);\r\n                ctx.lineTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n                if (cr0 < icr) {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n                else {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n                    ctx.arc(x, y, innerRadius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), clockwise);\r\n                    ctx.arc(x + ct1.cx, y + ct1.cy, cr0, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n            }\r\n            else {\r\n                ctx.lineTo(x + xire, y + yire);\r\n                ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n            }\r\n        }\r\n        ctx.closePath();\r\n    }\n\n    var SectorShape = (function () {\r\n        function SectorShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n            this.cornerRadius = 0;\r\n            this.innerCornerRadius = 0;\r\n        }\r\n        return SectorShape;\r\n    }());\r\n    var Sector = (function (_super) {\r\n        __extends(Sector, _super);\r\n        function Sector(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Sector.prototype.getDefaultShape = function () {\r\n            return new SectorShape();\r\n        };\r\n        Sector.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$2(ctx, shape);\r\n        };\r\n        Sector.prototype.isZeroArea = function () {\r\n            return this.shape.startAngle === this.shape.endAngle\r\n                || this.shape.r === this.shape.r0;\r\n        };\r\n        return Sector;\r\n    }(Path));\r\n    Sector.prototype.type = 'sector';\n\n    var CMD$3 = PathProxy.CMD;\r\n    var PI2$6 = Math.PI * 2;\r\n    var PROP_XY = ['x', 'y'];\r\n    var PROP_WH = ['width', 'height'];\r\n    var tmpArr = [];\r\n    function aroundEqual(a, b) {\r\n        return Math.abs(a - b) < 1e-5;\r\n    }\r\n    function pathToBezierCurves(path) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var bezierArray = [];\r\n        var currentSubpath;\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        function createNewSubpath(x, y) {\r\n            if (currentSubpath && currentSubpath.length > 2) {\r\n                bezierArray.push(currentSubpath);\r\n            }\r\n            currentSubpath = [x, y];\r\n        }\r\n        function addLine(x0, y0, x1, y1) {\r\n            if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) {\r\n                currentSubpath.push(x0, y0, x1, y1, x1, y1);\r\n            }\r\n        }\r\n        function addArc(startAngle, endAngle, cx, cy, rx, ry) {\r\n            var delta = Math.abs(endAngle - startAngle);\r\n            var len = Math.tan(delta / 4) * 4 / 3;\r\n            var dir = endAngle < startAngle ? -1 : 1;\r\n            var c1 = Math.cos(startAngle);\r\n            var s1 = Math.sin(startAngle);\r\n            var c2 = Math.cos(endAngle);\r\n            var s2 = Math.sin(endAngle);\r\n            var x1 = c1 * rx + cx;\r\n            var y1 = s1 * ry + cy;\r\n            var x4 = c2 * rx + cx;\r\n            var y4 = s2 * ry + cy;\r\n            var hx = rx * len * dir;\r\n            var hy = ry * len * dir;\r\n            currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);\r\n        }\r\n        var x1;\r\n        var y1;\r\n        var x2;\r\n        var y2;\r\n        for (var i = 0; i < len;) {\r\n            var cmd = data[i++];\r\n            var isFirst = i === 1;\r\n            if (isFirst) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n                if (cmd === CMD$3.L || cmd === CMD$3.C || cmd === CMD$3.Q) {\r\n                    currentSubpath = [x0, y0];\r\n                }\r\n            }\r\n            switch (cmd) {\r\n                case CMD$3.M:\r\n                    xi = x0 = data[i++];\r\n                    yi = y0 = data[i++];\r\n                    createNewSubpath(x0, y0);\r\n                    break;\r\n                case CMD$3.L:\r\n                    x1 = data[i++];\r\n                    y1 = data[i++];\r\n                    addLine(xi, yi, x1, y1);\r\n                    xi = x1;\r\n                    yi = y1;\r\n                    break;\r\n                case CMD$3.C:\r\n                    currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);\r\n                    break;\r\n                case CMD$3.Q:\r\n                    x1 = data[i++];\r\n                    y1 = data[i++];\r\n                    x2 = data[i++];\r\n                    y2 = data[i++];\r\n                    currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);\r\n                    xi = x2;\r\n                    yi = y2;\r\n                    break;\r\n                case CMD$3.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var startAngle = data[i++];\r\n                    var endAngle = data[i++] + startAngle;\r\n                    i += 1;\r\n                    var anticlockwise = !data[i++];\r\n                    x1 = Math.cos(startAngle) * rx + cx;\r\n                    y1 = Math.sin(startAngle) * ry + cy;\r\n                    if (isFirst) {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                        createNewSubpath(x0, y0);\r\n                    }\r\n                    else {\r\n                        addLine(xi, yi, x1, y1);\r\n                    }\r\n                    xi = Math.cos(endAngle) * rx + cx;\r\n                    yi = Math.sin(endAngle) * ry + cy;\r\n                    var step = (anticlockwise ? -1 : 1) * Math.PI / 2;\r\n                    for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\r\n                        var nextAngle = anticlockwise ? Math.max(angle + step, endAngle)\r\n                            : Math.min(angle + step, endAngle);\r\n                        addArc(angle, nextAngle, cx, cy, rx, ry);\r\n                    }\r\n                    break;\r\n                case CMD$3.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    x1 = x0 + data[i++];\r\n                    y1 = y0 + data[i++];\r\n                    createNewSubpath(x1, y0);\r\n                    addLine(x1, y0, x1, y1);\r\n                    addLine(x1, y1, x0, y1);\r\n                    addLine(x0, y1, x0, y0);\r\n                    addLine(x0, y0, x1, y0);\r\n                    break;\r\n                case CMD$3.Z:\r\n                    currentSubpath && addLine(xi, yi, x0, y0);\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n        }\r\n        if (currentSubpath && currentSubpath.length > 2) {\r\n            bezierArray.push(currentSubpath);\r\n        }\r\n        return bezierArray;\r\n    }\r\n    function alignSubpath(subpath1, subpath2) {\r\n        var len1 = subpath1.length;\r\n        var len2 = subpath2.length;\r\n        if (len1 === len2) {\r\n            return [subpath1, subpath2];\r\n        }\r\n        var shorterPath = len1 < len2 ? subpath1 : subpath2;\r\n        var shorterLen = Math.min(len1, len2);\r\n        var diff = Math.abs(len2 - len1) / 6;\r\n        var shorterBezierCount = (shorterLen - 2) / 6;\r\n        var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;\r\n        var newSubpath = [shorterPath[0], shorterPath[1]];\r\n        var remained = diff;\r\n        var tmpSegX = [];\r\n        var tmpSegY = [];\r\n        for (var i = 2; i < shorterLen;) {\r\n            var x0 = shorterPath[i - 2];\r\n            var y0 = shorterPath[i - 1];\r\n            var x1 = shorterPath[i++];\r\n            var y1 = shorterPath[i++];\r\n            var x2 = shorterPath[i++];\r\n            var y2 = shorterPath[i++];\r\n            var x3 = shorterPath[i++];\r\n            var y3 = shorterPath[i++];\r\n            if (remained <= 0) {\r\n                newSubpath.push(x1, y1, x2, y2, x3, y3);\r\n                continue;\r\n            }\r\n            var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;\r\n            for (var k = 1; k <= actualSubDivCount; k++) {\r\n                var p = k / actualSubDivCount;\r\n                cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\r\n                cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\r\n                x0 = tmpSegX[3];\r\n                y0 = tmpSegY[3];\r\n                newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\r\n                x1 = tmpSegX[5];\r\n                y1 = tmpSegY[5];\r\n                x2 = tmpSegX[6];\r\n                y2 = tmpSegY[6];\r\n            }\r\n            remained -= actualSubDivCount - 1;\r\n        }\r\n        return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\r\n    }\r\n    function createSubpath(lastSubpathSubpath, otherSubpath) {\r\n        var len = lastSubpathSubpath.length;\r\n        var lastX = lastSubpathSubpath[len - 2];\r\n        var lastY = lastSubpathSubpath[len - 1];\r\n        var newSubpath = [];\r\n        for (var i = 0; i < otherSubpath.length;) {\r\n            newSubpath[i++] = lastX;\r\n            newSubpath[i++] = lastY;\r\n        }\r\n        return newSubpath;\r\n    }\r\n    function alignBezierCurves(array1, array2) {\r\n        var _a;\r\n        var lastSubpath1;\r\n        var lastSubpath2;\r\n        var newArray1 = [];\r\n        var newArray2 = [];\r\n        for (var i = 0; i < Math.max(array1.length, array2.length); i++) {\r\n            var subpath1 = array1[i];\r\n            var subpath2 = array2[i];\r\n            var newSubpath1 = void 0;\r\n            var newSubpath2 = void 0;\r\n            if (!subpath1) {\r\n                newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);\r\n                newSubpath2 = subpath2;\r\n            }\r\n            else if (!subpath2) {\r\n                newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);\r\n                newSubpath1 = subpath1;\r\n            }\r\n            else {\r\n                _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];\r\n                lastSubpath1 = newSubpath1;\r\n                lastSubpath2 = newSubpath2;\r\n            }\r\n            newArray1.push(newSubpath1);\r\n            newArray2.push(newSubpath2);\r\n        }\r\n        return [newArray1, newArray2];\r\n    }\r\n    function centroid(array) {\r\n        var signedArea = 0;\r\n        var cx = 0;\r\n        var cy = 0;\r\n        var len = array.length;\r\n        for (var i = 0, j = len - 2; i < len; j = i, i += 2) {\r\n            var x0 = array[j];\r\n            var y0 = array[j + 1];\r\n            var x1 = array[i];\r\n            var y1 = array[i + 1];\r\n            var a = x0 * y1 - x1 * y0;\r\n            signedArea += a;\r\n            cx += (x0 + x1) * a;\r\n            cy += (y0 + y1) * a;\r\n        }\r\n        if (signedArea === 0) {\r\n            return [array[0] || 0, array[1] || 0];\r\n        }\r\n        return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\r\n    }\r\n    function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {\r\n        var bezierCount = (fromSubBeziers.length - 2) / 6;\r\n        var bestScore = Infinity;\r\n        var bestOffset = 0;\r\n        var len = fromSubBeziers.length;\r\n        var len2 = len - 2;\r\n        for (var offset = 0; offset < bezierCount; offset++) {\r\n            var cursorOffset = offset * 6;\r\n            var score = 0;\r\n            for (var k = 0; k < len; k += 2) {\r\n                var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2);\r\n                var x0 = fromSubBeziers[idx] - fromCp[0];\r\n                var y0 = fromSubBeziers[idx + 1] - fromCp[1];\r\n                var x1 = toSubBeziers[k] - toCp[0];\r\n                var y1 = toSubBeziers[k + 1] - toCp[1];\r\n                var dx = x1 - x0;\r\n                var dy = y1 - y0;\r\n                score += dx * dx + dy * dy;\r\n            }\r\n            if (score < bestScore) {\r\n                bestScore = score;\r\n                bestOffset = offset;\r\n            }\r\n        }\r\n        return bestOffset;\r\n    }\r\n    function reverse(array) {\r\n        var newArr = [];\r\n        var len = array.length;\r\n        for (var i = 0; i < len; i += 2) {\r\n            newArr[i] = array[len - i - 2];\r\n            newArr[i + 1] = array[len - i - 1];\r\n        }\r\n        return newArr;\r\n    }\r\n    function findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {\r\n        var result = [];\r\n        var fromNeedsReverse;\r\n        for (var i = 0; i < fromArr.length; i++) {\r\n            var fromSubpathBezier = fromArr[i];\r\n            var toSubpathBezier = toArr[i];\r\n            var fromCp = centroid(fromSubpathBezier);\r\n            var toCp = centroid(toSubpathBezier);\r\n            if (fromNeedsReverse == null) {\r\n                fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\r\n            }\r\n            var newFromSubpathBezier = [];\r\n            var newToSubpathBezier = [];\r\n            var bestAngle = 0;\r\n            var bestScore = Infinity;\r\n            var tmpArr_1 = [];\r\n            var len = fromSubpathBezier.length;\r\n            if (fromNeedsReverse) {\r\n                fromSubpathBezier = reverse(fromSubpathBezier);\r\n            }\r\n            var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\r\n            var len2 = len - 2;\r\n            for (var k = 0; k < len2; k += 2) {\r\n                var idx = (offset + k) % len2 + 2;\r\n                newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\r\n                newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\r\n            }\r\n            newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\r\n            newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\r\n            if (searchAngleIteration > 0) {\r\n                var step = searchAngleRange / searchAngleIteration;\r\n                for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\r\n                    var sa = Math.sin(angle);\r\n                    var ca = Math.cos(angle);\r\n                    var score = 0;\r\n                    for (var k = 0; k < fromSubpathBezier.length; k += 2) {\r\n                        var x0 = newFromSubpathBezier[k];\r\n                        var y0 = newFromSubpathBezier[k + 1];\r\n                        var x1 = toSubpathBezier[k] - toCp[0];\r\n                        var y1 = toSubpathBezier[k + 1] - toCp[1];\r\n                        var newX1 = x1 * ca - y1 * sa;\r\n                        var newY1 = x1 * sa + y1 * ca;\r\n                        tmpArr_1[k] = newX1;\r\n                        tmpArr_1[k + 1] = newY1;\r\n                        var dx = newX1 - x0;\r\n                        var dy = newY1 - y0;\r\n                        score += dx * dx + dy * dy;\r\n                    }\r\n                    if (score < bestScore) {\r\n                        bestScore = score;\r\n                        bestAngle = angle;\r\n                        for (var m = 0; m < tmpArr_1.length; m++) {\r\n                            newToSubpathBezier[m] = tmpArr_1[m];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var i_1 = 0; i_1 < len; i_1 += 2) {\r\n                    newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];\r\n                    newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];\r\n                }\r\n            }\r\n            result.push({\r\n                from: newFromSubpathBezier,\r\n                to: newToSubpathBezier,\r\n                fromCp: fromCp,\r\n                toCp: toCp,\r\n                rotation: -bestAngle\r\n            });\r\n        }\r\n        return result;\r\n    }\r\n    function morphPath(fromPath, toPath, animationOpts) {\r\n        var fromPathProxy;\r\n        var toPathProxy;\r\n        if (!fromPath || !toPath) {\r\n            return toPath;\r\n        }\r\n        !fromPath.path && fromPath.createPathProxy();\r\n        fromPathProxy = fromPath.path;\r\n        fromPathProxy.beginPath();\r\n        fromPath.buildPath(fromPathProxy, fromPath.shape);\r\n        !toPath.path && toPath.createPathProxy();\r\n        toPathProxy = toPath.path;\r\n        toPathProxy === fromPathProxy && (toPathProxy = new PathProxy(false));\r\n        toPathProxy.beginPath();\r\n        if (isIndividualMorphingPath(toPath)) {\r\n            toPath.__oldBuildPath(toPathProxy, toPath.shape);\r\n        }\r\n        else {\r\n            toPath.buildPath(toPathProxy, toPath.shape);\r\n        }\r\n        var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];\r\n        var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);\r\n        becomeIndividualMorphingPath(toPath, morphingData, 0);\r\n        var oldDone = animationOpts && animationOpts.done;\r\n        var oldAborted = animationOpts && animationOpts.aborted;\r\n        var oldDuring = animationOpts && animationOpts.during;\r\n        toPath.animateTo({\r\n            __morphT: 1\r\n        }, defaults({\r\n            during: function (p) {\r\n                toPath.dirtyShape();\r\n                oldDuring && oldDuring(p);\r\n            },\r\n            done: function () {\r\n                restoreIndividualMorphingPath(toPath);\r\n                toPath.createPathProxy();\r\n                toPath.dirtyShape();\r\n                oldDone && oldDone();\r\n            },\r\n            aborted: function () {\r\n                oldAborted && oldAborted();\r\n            }\r\n        }, animationOpts));\r\n        return toPath;\r\n    }\r\n    function morphingPathBuildPath(path) {\r\n        var morphingData = this.__morphingData;\r\n        var t = this.__morphT;\r\n        var onet = 1 - t;\r\n        var newCp = [];\r\n        for (var i = 0; i < morphingData.length; i++) {\r\n            var item = morphingData[i];\r\n            var from = item.from;\r\n            var to = item.to;\r\n            var angle = item.rotation * t;\r\n            var fromCp = item.fromCp;\r\n            var toCp = item.toCp;\r\n            var sa = Math.sin(angle);\r\n            var ca = Math.cos(angle);\r\n            lerp(newCp, fromCp, toCp, t);\r\n            for (var m = 0; m < from.length; m += 2) {\r\n                var x0 = from[m];\r\n                var y0 = from[m + 1];\r\n                var x1 = to[m];\r\n                var y1 = to[m + 1];\r\n                var x = x0 * onet + x1 * t;\r\n                var y = y0 * onet + y1 * t;\r\n                tmpArr[m] = (x * ca - y * sa) + newCp[0];\r\n                tmpArr[m + 1] = (x * sa + y * ca) + newCp[1];\r\n            }\r\n            for (var m = 0; m < from.length;) {\r\n                if (m === 0) {\r\n                    path.moveTo(tmpArr[m++], tmpArr[m++]);\r\n                }\r\n                path.bezierCurveTo(tmpArr[m++], tmpArr[m++], tmpArr[m++], tmpArr[m++], tmpArr[m++], tmpArr[m++]);\r\n            }\r\n        }\r\n    }\r\n    function becomeIndividualMorphingPath(path, morphingData, morphT) {\r\n        if (isIndividualMorphingPath(path)) {\r\n            updateIndividualMorphingPath(path, morphingData, morphT);\r\n            return;\r\n        }\r\n        var morphingPath = path;\r\n        morphingPath.__oldBuildPath = morphingPath.buildPath;\r\n        morphingPath.buildPath = morphingPathBuildPath;\r\n        updateIndividualMorphingPath(morphingPath, morphingData, morphT);\r\n    }\r\n    function updateIndividualMorphingPath(morphingPath, morphingData, morphT) {\r\n        morphingPath.__morphingData = morphingData;\r\n        morphingPath.__morphT = morphT;\r\n    }\r\n    function restoreIndividualMorphingPath(path) {\r\n        if (isIndividualMorphingPath(path)) {\r\n            path.buildPath = path.__oldBuildPath;\r\n            path.__oldBuildPath = path.__morphingData = null;\r\n        }\r\n    }\r\n    function isIndividualMorphingPath(path) {\r\n        return path.__oldBuildPath != null;\r\n    }\r\n    function isCombiningPath(path) {\r\n        return !!path.__combiningSubList;\r\n    }\r\n    function isInAnyMorphing(path) {\r\n        return isIndividualMorphingPath(path) || isCombiningPath(path);\r\n    }\r\n    function combine(fromPathList, toPath, animationOpts, copyPropsIfDivided) {\r\n        var fromIndividuals = [];\r\n        var separateCount = 0;\r\n        for (var i = 0; i < fromPathList.length; i++) {\r\n            var fromPath = fromPathList[i];\r\n            if (isCombiningPath(fromPath)) {\r\n                var fromCombiningSubList = fromPath.__combiningSubList;\r\n                for (var j = 0; j < fromCombiningSubList.length; j++) {\r\n                    fromIndividuals.push(fromCombiningSubList[j]);\r\n                }\r\n                separateCount += fromCombiningSubList.length;\r\n            }\r\n            else {\r\n                fromIndividuals.push(fromPath);\r\n                separateCount++;\r\n            }\r\n        }\r\n        if (!separateCount) {\r\n            return;\r\n        }\r\n        var dividingMethod = animationOpts ? animationOpts.dividingMethod : null;\r\n        var toPathSplittedList = divideShape(toPath, separateCount, dividingMethod);\r\n        assert(toPathSplittedList.length === separateCount);\r\n        var oldDone = animationOpts && animationOpts.done;\r\n        var oldAborted = animationOpts && animationOpts.aborted;\r\n        var oldDuring = animationOpts && animationOpts.during;\r\n        var doneCount = 0;\r\n        var abortedCalled = false;\r\n        var morphAnimationOpts = defaults({\r\n            during: function (p) {\r\n                oldDuring && oldDuring(p);\r\n            },\r\n            done: function () {\r\n                doneCount++;\r\n                if (doneCount === toPathSplittedList.length) {\r\n                    restoreCombiningPath(toPath);\r\n                    oldDone && oldDone();\r\n                }\r\n            },\r\n            aborted: function () {\r\n                if (!abortedCalled) {\r\n                    abortedCalled = true;\r\n                    oldAborted && oldAborted();\r\n                }\r\n            }\r\n        }, animationOpts);\r\n        for (var i = 0; i < separateCount; i++) {\r\n            var from = fromIndividuals[i];\r\n            var to = toPathSplittedList[i];\r\n            copyPropsIfDivided && copyPropsIfDivided(toPath, to, true);\r\n            morphPath(from, to, morphAnimationOpts);\r\n        }\r\n        becomeCombiningPath(toPath, toPathSplittedList);\r\n        return {\r\n            fromIndividuals: fromIndividuals,\r\n            toIndividuals: toPathSplittedList,\r\n            count: separateCount\r\n        };\r\n    }\r\n    function becomeCombiningPath(path, combiningSubList) {\r\n        if (isCombiningPath(path)) {\r\n            updateCombiningPathSubList(path, combiningSubList);\r\n            return;\r\n        }\r\n        var combiningPath = path;\r\n        updateCombiningPathSubList(combiningPath, combiningSubList);\r\n        combiningPath.__oldAddSelfToZr = path.addSelfToZr;\r\n        combiningPath.__oldRemoveSelfFromZr = path.removeSelfFromZr;\r\n        combiningPath.addSelfToZr = combiningAddSelfToZr;\r\n        combiningPath.removeSelfFromZr = combiningRemoveSelfFromZr;\r\n        combiningPath.__oldBuildPath = combiningPath.buildPath;\r\n        combiningPath.buildPath = noop;\r\n        combiningPath.childrenRef = combiningChildrenRef;\r\n    }\r\n    function restoreCombiningPath(path) {\r\n        if (!isCombiningPath(path)) {\r\n            return;\r\n        }\r\n        var combiningPath = path;\r\n        updateCombiningPathSubList(combiningPath, null);\r\n        combiningPath.addSelfToZr = combiningPath.__oldAddSelfToZr;\r\n        combiningPath.removeSelfFromZr = combiningPath.__oldRemoveSelfFromZr;\r\n        combiningPath.buildPath = combiningPath.__oldBuildPath;\r\n        combiningPath.childrenRef =\r\n            combiningPath.__combiningSubList =\r\n                combiningPath.__oldAddSelfToZr =\r\n                    combiningPath.__oldRemoveSelfFromZr =\r\n                        combiningPath.__oldBuildPath = null;\r\n    }\r\n    function updateCombiningPathSubList(combiningPath, combiningSubList) {\r\n        if (combiningPath.__combiningSubList !== combiningSubList) {\r\n            combiningPathSubListAddRemoveWithZr(combiningPath, 'removeSelfFromZr');\r\n            combiningPath.__combiningSubList = combiningSubList;\r\n            if (combiningSubList) {\r\n                for (var i = 0; i < combiningSubList.length; i++) {\r\n                    combiningSubList[i].parent = combiningPath;\r\n                }\r\n            }\r\n            combiningPathSubListAddRemoveWithZr(combiningPath, 'addSelfToZr');\r\n        }\r\n    }\r\n    function combiningAddSelfToZr(zr) {\r\n        this.__oldAddSelfToZr(zr);\r\n        combiningPathSubListAddRemoveWithZr(this, 'addSelfToZr');\r\n    }\r\n    function combiningPathSubListAddRemoveWithZr(path, method) {\r\n        var combiningSubList = path.__combiningSubList;\r\n        var zr = path.__zr;\r\n        if (combiningSubList && zr) {\r\n            for (var i = 0; i < combiningSubList.length; i++) {\r\n                var child = combiningSubList[i];\r\n                child[method](zr);\r\n            }\r\n        }\r\n    }\r\n    function combiningRemoveSelfFromZr(zr) {\r\n        this.__oldRemoveSelfFromZr(zr);\r\n        var combiningSubList = this.__combiningSubList;\r\n        for (var i = 0; i < combiningSubList.length; i++) {\r\n            var child = combiningSubList[i];\r\n            child.removeSelfFromZr(zr);\r\n        }\r\n    }\r\n    function combiningChildrenRef() {\r\n        return this.__combiningSubList;\r\n    }\r\n    function separate(fromPath, toPathList, animationOpts, copyPropsIfDivided) {\r\n        var toPathListLen = toPathList.length;\r\n        var fromPathList;\r\n        var dividingMethod = animationOpts ? animationOpts.dividingMethod : null;\r\n        var copyProps = false;\r\n        if (isCombiningPath(fromPath)) {\r\n            var fromCombiningSubList = fromPath.__combiningSubList;\r\n            if (fromCombiningSubList.length === toPathListLen) {\r\n                fromPathList = fromCombiningSubList;\r\n            }\r\n            else {\r\n                fromPathList = divideShape(fromPath, toPathListLen, dividingMethod);\r\n                copyProps = true;\r\n            }\r\n        }\r\n        else {\r\n            fromPathList = divideShape(fromPath, toPathListLen, dividingMethod);\r\n            copyProps = true;\r\n        }\r\n        assert(fromPathList.length === toPathListLen);\r\n        for (var i = 0; i < toPathListLen; i++) {\r\n            if (copyProps && copyPropsIfDivided) {\r\n                copyPropsIfDivided(fromPath, fromPathList[i], false);\r\n            }\r\n            morphPath(fromPathList[i], toPathList[i], animationOpts);\r\n        }\r\n        return {\r\n            fromIndividuals: fromPathList,\r\n            toIndividuals: toPathList,\r\n            count: toPathListLen\r\n        };\r\n    }\r\n    function divideShape(path, separateCount, dividingMethod) {\r\n        return dividingMethod === 'duplicate'\r\n            ? duplicateShape(path, separateCount)\r\n            : splitShape(path, separateCount);\r\n    }\r\n    function splitShape(path, separateCount) {\r\n        var resultPaths = [];\r\n        if (separateCount <= 0) {\r\n            return resultPaths;\r\n        }\r\n        if (separateCount === 1) {\r\n            return duplicateShape(path, separateCount);\r\n        }\r\n        if (path instanceof Rect) {\r\n            var toPathShape = path.shape;\r\n            var splitPropIdx = toPathShape.height > toPathShape.width ? 1 : 0;\r\n            var propWH = PROP_WH[splitPropIdx];\r\n            var propXY = PROP_XY[splitPropIdx];\r\n            var subWH = toPathShape[propWH] / separateCount;\r\n            var xyCurr = toPathShape[propXY];\r\n            for (var i = 0; i < separateCount; i++, xyCurr += subWH) {\r\n                var subShape = {\r\n                    x: toPathShape.x,\r\n                    y: toPathShape.y,\r\n                    width: toPathShape.width,\r\n                    height: toPathShape.height\r\n                };\r\n                subShape[propXY] = xyCurr;\r\n                subShape[propWH] = i < separateCount - 1\r\n                    ? subWH\r\n                    : toPathShape[propXY] + toPathShape[propWH] - xyCurr;\r\n                var splitted = new Rect({ shape: subShape });\r\n                resultPaths.push(splitted);\r\n            }\r\n        }\r\n        else if (path instanceof Sector) {\r\n            var toPathShape = path.shape;\r\n            var clockwise = toPathShape.clockwise;\r\n            var startAngle = toPathShape.startAngle;\r\n            var endAngle = toPathShape.endAngle;\r\n            var endAngleNormalized = normalizeRadian$1(startAngle, toPathShape.endAngle, clockwise);\r\n            var step = (endAngleNormalized - startAngle) / separateCount;\r\n            var angleCurr = startAngle;\r\n            for (var i = 0; i < separateCount; i++, angleCurr += step) {\r\n                var splitted = new Sector({\r\n                    shape: {\r\n                        cx: toPathShape.cx,\r\n                        cy: toPathShape.cy,\r\n                        r: toPathShape.r,\r\n                        r0: toPathShape.r0,\r\n                        clockwise: clockwise,\r\n                        startAngle: angleCurr,\r\n                        endAngle: i === separateCount - 1 ? endAngle : angleCurr + step\r\n                    }\r\n                });\r\n                resultPaths.push(splitted);\r\n            }\r\n        }\r\n        else {\r\n            return duplicateShape(path, separateCount);\r\n        }\r\n        return resultPaths;\r\n    }\r\n    function duplicateShape(path, separateCount) {\r\n        var resultPaths = [];\r\n        if (separateCount <= 0) {\r\n            return resultPaths;\r\n        }\r\n        var ctor = path.constructor;\r\n        for (var i = 0; i < separateCount; i++) {\r\n            var sub = new ctor({\r\n                shape: clone(path.shape)\r\n            });\r\n            resultPaths.push(sub);\r\n        }\r\n        return resultPaths;\r\n    }\r\n    function normalizeRadian$1(start, end, clockwise) {\r\n        return end + PI2$6 * (Math[clockwise ? 'ceil' : 'floor']((start - end) / PI2$6));\r\n    }\n\n    var CompoundPath = (function (_super) {\r\n        __extends(CompoundPath, _super);\r\n        function CompoundPath() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'compound';\r\n            return _this;\r\n        }\r\n        CompoundPath.prototype._updatePathDirty = function () {\r\n            var paths = this.shape.paths;\r\n            var dirtyPath = this.shapeChanged();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                dirtyPath = dirtyPath || paths[i].shapeChanged();\r\n            }\r\n            if (dirtyPath) {\r\n                this.dirtyShape();\r\n            }\r\n        };\r\n        CompoundPath.prototype.beforeBrush = function () {\r\n            this._updatePathDirty();\r\n            var paths = this.shape.paths || [];\r\n            var scale = this.getGlobalScale();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                if (!paths[i].path) {\r\n                    paths[i].createPathProxy();\r\n                }\r\n                paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\r\n            }\r\n        };\r\n        CompoundPath.prototype.buildPath = function (ctx, shape) {\r\n            var paths = shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].buildPath(ctx, paths[i].shape, true);\r\n            }\r\n        };\r\n        CompoundPath.prototype.afterBrush = function () {\r\n            var paths = this.shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].pathUpdated();\r\n            }\r\n        };\r\n        CompoundPath.prototype.getBoundingRect = function () {\r\n            this._updatePathDirty.call(this);\r\n            return Path.prototype.getBoundingRect.call(this);\r\n        };\r\n        return CompoundPath;\r\n    }(Path));\n\n    var m = [];\r\n    var IncrementalDisplayble = (function (_super) {\r\n        __extends(IncrementalDisplayble, _super);\r\n        function IncrementalDisplayble() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.notClear = true;\r\n            _this.incremental = true;\r\n            _this._displayables = [];\r\n            _this._temporaryDisplayables = [];\r\n            _this._cursor = 0;\r\n            return _this;\r\n        }\r\n        IncrementalDisplayble.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        IncrementalDisplayble.prototype.useStyle = function () {\r\n            this.style = {};\r\n        };\r\n        IncrementalDisplayble.prototype.getCursor = function () {\r\n            return this._cursor;\r\n        };\r\n        IncrementalDisplayble.prototype.innerAfterBrush = function () {\r\n            this._cursor = this._displayables.length;\r\n        };\r\n        IncrementalDisplayble.prototype.clearDisplaybles = function () {\r\n            this._displayables = [];\r\n            this._temporaryDisplayables = [];\r\n            this._cursor = 0;\r\n            this.markRedraw();\r\n            this.notClear = false;\r\n        };\r\n        IncrementalDisplayble.prototype.clearTemporalDisplayables = function () {\r\n            this._temporaryDisplayables = [];\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\r\n            if (notPersistent) {\r\n                this._temporaryDisplayables.push(displayable);\r\n            }\r\n            else {\r\n                this._displayables.push(displayable);\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\r\n            notPersistent = notPersistent || false;\r\n            for (var i = 0; i < displayables.length; i++) {\r\n                this.addDisplayable(displayables[i], notPersistent);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getDisplayables = function () {\r\n            return this._displayables;\r\n        };\r\n        IncrementalDisplayble.prototype.getTemporalDisplayables = function () {\r\n            return this._temporaryDisplayables;\r\n        };\r\n        IncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                cb && cb(this._displayables[i]);\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                cb && cb(this._temporaryDisplayables[i]);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.update = function () {\r\n            this.updateTransform();\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                var displayable = this._displayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                var displayable = this._temporaryDisplayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getBoundingRect = function () {\r\n            if (!this._rect) {\r\n                var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    var childRect = displayable.getBoundingRect().clone();\r\n                    if (displayable.needLocalTransform()) {\r\n                        childRect.applyTransform(displayable.getLocalTransform(m));\r\n                    }\r\n                    rect.union(childRect);\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        IncrementalDisplayble.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            if (rect.contain(localPos[0], localPos[1])) {\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    if (displayable.contain(x, y)) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        return IncrementalDisplayble;\r\n    }(Displayable));\n\n    var globalImageCache = new LRU(50);\r\n    function findExistImage(newImageOrSrc) {\r\n        if (typeof newImageOrSrc === 'string') {\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            return cachedImgObj && cachedImgObj.image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\r\n        if (!newImageOrSrc) {\r\n            return image;\r\n        }\r\n        else if (typeof newImageOrSrc === 'string') {\r\n            if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\r\n                return image;\r\n            }\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\r\n            if (cachedImgObj) {\r\n                image = cachedImgObj.image;\r\n                !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\r\n            }\r\n            else {\r\n                image = new Image();\r\n                image.onload = image.onerror = imageOnLoad;\r\n                globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\r\n                    image: image,\r\n                    pending: [pendingWrap]\r\n                });\r\n                image.src = image.__zrImageSrc = newImageOrSrc;\r\n            }\r\n            return image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function imageOnLoad() {\r\n        var cachedImgObj = this.__cachedImgObj;\r\n        this.onload = this.onerror = this.__cachedImgObj = null;\r\n        for (var i = 0; i < cachedImgObj.pending.length; i++) {\r\n            var pendingWrap = cachedImgObj.pending[i];\r\n            var cb = pendingWrap.cb;\r\n            cb && cb(this, pendingWrap.cbPayload);\r\n            pendingWrap.hostEl.dirty();\r\n        }\r\n        cachedImgObj.pending.length = 0;\r\n    }\r\n    function isImageReady(image) {\r\n        return image && image.width && image.height;\r\n    }\n\n    var STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\r\n    function truncateText(text, containerWidth, font, ellipsis, options) {\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var textLines = (text + '').split('\\n');\r\n        options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\r\n        for (var i = 0, len = textLines.length; i < len; i++) {\r\n            textLines[i] = truncateSingleLine(textLines[i], options);\r\n        }\r\n        return textLines.join('\\n');\r\n    }\r\n    function prepareTruncateOptions(containerWidth, font, ellipsis, options) {\r\n        options = options || {};\r\n        var preparedOpts = extend({}, options);\r\n        preparedOpts.font = font;\r\n        ellipsis = retrieve2(ellipsis, '...');\r\n        preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\r\n        var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\r\n        preparedOpts.cnCharWidth = getWidth('国', font);\r\n        var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\r\n        preparedOpts.placeholder = retrieve2(options.placeholder, '');\r\n        var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\r\n        for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\r\n            contentWidth -= ascCharWidth;\r\n        }\r\n        var ellipsisWidth = getWidth(ellipsis, font);\r\n        if (ellipsisWidth > contentWidth) {\r\n            ellipsis = '';\r\n            ellipsisWidth = 0;\r\n        }\r\n        contentWidth = containerWidth - ellipsisWidth;\r\n        preparedOpts.ellipsis = ellipsis;\r\n        preparedOpts.ellipsisWidth = ellipsisWidth;\r\n        preparedOpts.contentWidth = contentWidth;\r\n        preparedOpts.containerWidth = containerWidth;\r\n        return preparedOpts;\r\n    }\r\n    function truncateSingleLine(textLine, options) {\r\n        var containerWidth = options.containerWidth;\r\n        var font = options.font;\r\n        var contentWidth = options.contentWidth;\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var lineWidth = getWidth(textLine, font);\r\n        if (lineWidth <= containerWidth) {\r\n            return textLine;\r\n        }\r\n        for (var j = 0;; j++) {\r\n            if (lineWidth <= contentWidth || j >= options.maxIterations) {\r\n                textLine += options.ellipsis;\r\n                break;\r\n            }\r\n            var subLength = j === 0\r\n                ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\r\n                : lineWidth > 0\r\n                    ? Math.floor(textLine.length * contentWidth / lineWidth)\r\n                    : 0;\r\n            textLine = textLine.substr(0, subLength);\r\n            lineWidth = getWidth(textLine, font);\r\n        }\r\n        if (textLine === '') {\r\n            textLine = options.placeholder;\r\n        }\r\n        return textLine;\r\n    }\r\n    function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\r\n        var width = 0;\r\n        var i = 0;\r\n        for (var len = text.length; i < len && width < contentWidth; i++) {\r\n            var charCode = text.charCodeAt(i);\r\n            width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\r\n        }\r\n        return i;\r\n    }\r\n    function parsePlainText(text, style) {\r\n        text != null && (text += '');\r\n        var overflow = style.overflow;\r\n        var padding = style.padding;\r\n        var font = style.font;\r\n        var truncate = overflow === 'truncate';\r\n        var calculatedLineHeight = getLineHeight(font);\r\n        var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\r\n        var truncateLineOverflow = style.lineOverflow === 'truncate';\r\n        var width = style.width;\r\n        var lines;\r\n        if (width != null && overflow === 'break' || overflow === 'breakAll') {\r\n            lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\r\n        }\r\n        else {\r\n            lines = text ? text.split('\\n') : [];\r\n        }\r\n        var contentHeight = lines.length * lineHeight;\r\n        var height = retrieve2(style.height, contentHeight);\r\n        if (contentHeight > height && truncateLineOverflow) {\r\n            var lineCount = Math.floor(height / lineHeight);\r\n            lines = lines.slice(0, lineCount);\r\n        }\r\n        var outerHeight = height;\r\n        var outerWidth = width;\r\n        if (padding) {\r\n            outerHeight += padding[0] + padding[2];\r\n            if (outerWidth != null) {\r\n                outerWidth += padding[1] + padding[3];\r\n            }\r\n        }\r\n        if (text && truncate && outerWidth != null) {\r\n            var options = prepareTruncateOptions(width, font, style.ellipsis, {\r\n                minChar: style.truncateMinChar,\r\n                placeholder: style.placeholder\r\n            });\r\n            for (var i = 0; i < lines.length; i++) {\r\n                lines[i] = truncateSingleLine(lines[i], options);\r\n            }\r\n        }\r\n        if (width == null) {\r\n            var maxWidth = 0;\r\n            for (var i = 0; i < lines.length; i++) {\r\n                maxWidth = Math.max(getWidth(lines[i], font), maxWidth);\r\n            }\r\n            width = maxWidth;\r\n        }\r\n        return {\r\n            lines: lines,\r\n            height: height,\r\n            outerHeight: outerHeight,\r\n            lineHeight: lineHeight,\r\n            calculatedLineHeight: calculatedLineHeight,\r\n            contentHeight: contentHeight,\r\n            width: width\r\n        };\r\n    }\r\n    var RichTextToken = (function () {\r\n        function RichTextToken() {\r\n        }\r\n        return RichTextToken;\r\n    }());\r\n    var RichTextLine = (function () {\r\n        function RichTextLine(tokens) {\r\n            this.tokens = [];\r\n            if (tokens) {\r\n                this.tokens = tokens;\r\n            }\r\n        }\r\n        return RichTextLine;\r\n    }());\r\n    var RichTextContentBlock = (function () {\r\n        function RichTextContentBlock() {\r\n            this.width = 0;\r\n            this.height = 0;\r\n            this.contentWidth = 0;\r\n            this.contentHeight = 0;\r\n            this.outerWidth = 0;\r\n            this.outerHeight = 0;\r\n            this.lines = [];\r\n        }\r\n        return RichTextContentBlock;\r\n    }());\r\n    function parseRichText(text, style) {\r\n        var contentBlock = new RichTextContentBlock();\r\n        text != null && (text += '');\r\n        if (!text) {\r\n            return contentBlock;\r\n        }\r\n        var topWidth = style.width;\r\n        var topHeight = style.height;\r\n        var overflow = style.overflow;\r\n        var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\r\n            ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\r\n            : null;\r\n        var lastIndex = STYLE_REG.lastIndex = 0;\r\n        var result;\r\n        while ((result = STYLE_REG.exec(text)) != null) {\r\n            var matchedIndex = result.index;\r\n            if (matchedIndex > lastIndex) {\r\n                pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\r\n            }\r\n            pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\r\n            lastIndex = STYLE_REG.lastIndex;\r\n        }\r\n        if (lastIndex < text.length) {\r\n            pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\r\n        }\r\n        var pendingList = [];\r\n        var calculatedHeight = 0;\r\n        var calculatedWidth = 0;\r\n        var stlPadding = style.padding;\r\n        var truncate = overflow === 'truncate';\r\n        var truncateLine = style.lineOverflow === 'truncate';\r\n        function finishLine(line, lineWidth, lineHeight) {\r\n            line.width = lineWidth;\r\n            line.lineHeight = lineHeight;\r\n            calculatedHeight += lineHeight;\r\n            calculatedWidth = Math.max(calculatedWidth, lineWidth);\r\n        }\r\n        outer: for (var i = 0; i < contentBlock.lines.length; i++) {\r\n            var line = contentBlock.lines[i];\r\n            var lineHeight = 0;\r\n            var lineWidth = 0;\r\n            for (var j = 0; j < line.tokens.length; j++) {\r\n                var token = line.tokens[j];\r\n                var tokenStyle = token.styleName && style.rich[token.styleName] || {};\r\n                var textPadding = token.textPadding = tokenStyle.padding;\r\n                var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\r\n                var font = token.font = tokenStyle.font || style.font;\r\n                token.contentHeight = getLineHeight(font);\r\n                var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\r\n                token.innerHeight = tokenHeight;\r\n                textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\r\n                token.height = tokenHeight;\r\n                token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\r\n                token.align = tokenStyle && tokenStyle.align || style.align;\r\n                token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\r\n                if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\r\n                    if (j > 0) {\r\n                        line.tokens = line.tokens.slice(0, j);\r\n                        finishLine(line, lineWidth, lineHeight);\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i + 1);\r\n                    }\r\n                    else {\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i);\r\n                    }\r\n                    break outer;\r\n                }\r\n                var styleTokenWidth = tokenStyle.width;\r\n                var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\r\n                if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\r\n                    token.percentWidth = styleTokenWidth;\r\n                    pendingList.push(token);\r\n                    token.contentWidth = getWidth(token.text, font);\r\n                }\r\n                else {\r\n                    if (tokenWidthNotSpecified) {\r\n                        var textBackgroundColor = tokenStyle.backgroundColor;\r\n                        var bgImg = textBackgroundColor && textBackgroundColor.image;\r\n                        if (bgImg) {\r\n                            bgImg = findExistImage(bgImg);\r\n                            if (isImageReady(bgImg)) {\r\n                                token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\r\n                            }\r\n                        }\r\n                    }\r\n                    var remainTruncWidth = truncate && topWidth != null\r\n                        ? topWidth - lineWidth : null;\r\n                    if (remainTruncWidth != null && remainTruncWidth < token.width) {\r\n                        if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\r\n                            token.text = '';\r\n                            token.width = token.contentWidth = 0;\r\n                        }\r\n                        else {\r\n                            token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\r\n                            token.width = token.contentWidth = getWidth(token.text, font);\r\n                        }\r\n                    }\r\n                    else {\r\n                        token.contentWidth = getWidth(token.text, font);\r\n                    }\r\n                }\r\n                token.width += paddingH;\r\n                lineWidth += token.width;\r\n                tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\r\n            }\r\n            finishLine(line, lineWidth, lineHeight);\r\n        }\r\n        contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\r\n        contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\r\n        contentBlock.contentHeight = calculatedHeight;\r\n        contentBlock.contentWidth = calculatedWidth;\r\n        if (stlPadding) {\r\n            contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\r\n            contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\r\n        }\r\n        for (var i = 0; i < pendingList.length; i++) {\r\n            var token = pendingList[i];\r\n            var percentWidth = token.percentWidth;\r\n            token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\r\n        }\r\n        return contentBlock;\r\n    }\r\n    function pushTokens(block, str, style, wrapInfo, styleName) {\r\n        var isEmptyStr = str === '';\r\n        var tokenStyle = styleName && style.rich[styleName] || {};\r\n        var lines = block.lines;\r\n        var font = tokenStyle.font || style.font;\r\n        var newLine = false;\r\n        var strLines;\r\n        var linesWidths;\r\n        if (wrapInfo) {\r\n            var tokenPadding = tokenStyle.padding;\r\n            var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\r\n            if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\r\n                var outerWidth_1 = parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\r\n                if (lines.length > 0) {\r\n                    if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\r\n                        strLines = str.split('\\n');\r\n                        newLine = true;\r\n                    }\r\n                }\r\n                wrapInfo.accumWidth = outerWidth_1;\r\n            }\r\n            else {\r\n                var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\r\n                wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\r\n                linesWidths = res.linesWidths;\r\n                strLines = res.lines;\r\n            }\r\n        }\r\n        else {\r\n            strLines = str.split('\\n');\r\n        }\r\n        for (var i = 0; i < strLines.length; i++) {\r\n            var text = strLines[i];\r\n            var token = new RichTextToken();\r\n            token.styleName = styleName;\r\n            token.text = text;\r\n            token.isLineHolder = !text && !isEmptyStr;\r\n            if (typeof tokenStyle.width === 'number') {\r\n                token.width = tokenStyle.width;\r\n            }\r\n            else {\r\n                token.width = linesWidths\r\n                    ? linesWidths[i]\r\n                    : getWidth(text, font);\r\n            }\r\n            if (!i && !newLine) {\r\n                var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\r\n                var tokensLen = tokens.length;\r\n                (tokensLen === 1 && tokens[0].isLineHolder)\r\n                    ? (tokens[0] = token)\r\n                    : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\r\n            }\r\n            else {\r\n                lines.push(new RichTextLine([token]));\r\n            }\r\n        }\r\n    }\r\n    function isLatin(ch) {\r\n        var code = ch.charCodeAt(0);\r\n        return code >= 0x21 && code <= 0xFF;\r\n    }\r\n    var breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\r\n        obj[ch] = true;\r\n        return obj;\r\n    }, {});\r\n    function isWordBreakChar(ch) {\r\n        if (isLatin(ch)) {\r\n            if (breakCharMap[ch]) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\r\n        var lines = [];\r\n        var linesWidths = [];\r\n        var line = '';\r\n        var currentWord = '';\r\n        var currentWordWidth = 0;\r\n        var accumWidth = 0;\r\n        for (var i = 0; i < text.length; i++) {\r\n            var ch = text.charAt(i);\r\n            if (ch === '\\n') {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    accumWidth += currentWordWidth;\r\n                }\r\n                lines.push(line);\r\n                linesWidths.push(accumWidth);\r\n                line = '';\r\n                currentWord = '';\r\n                currentWordWidth = 0;\r\n                accumWidth = 0;\r\n                continue;\r\n            }\r\n            var chWidth = getWidth(ch, font);\r\n            var inWord = isBreakAll ? false : !isWordBreakChar(ch);\r\n            if (!lines.length\r\n                ? lastAccumWidth + accumWidth + chWidth > lineWidth\r\n                : accumWidth + chWidth > lineWidth) {\r\n                if (!accumWidth) {\r\n                    if (inWord) {\r\n                        lines.push(currentWord);\r\n                        linesWidths.push(currentWordWidth);\r\n                        currentWord = ch;\r\n                        currentWordWidth = chWidth;\r\n                    }\r\n                    else {\r\n                        lines.push(ch);\r\n                        linesWidths.push(chWidth);\r\n                    }\r\n                }\r\n                else if (line || currentWord) {\r\n                    if (inWord) {\r\n                        if (!line) {\r\n                            line = currentWord;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                            accumWidth = currentWordWidth;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth - currentWordWidth);\r\n                        currentWord += ch;\r\n                        currentWordWidth += chWidth;\r\n                        line = '';\r\n                        accumWidth = currentWordWidth;\r\n                    }\r\n                    else {\r\n                        if (currentWord) {\r\n                            line += currentWord;\r\n                            accumWidth += currentWordWidth;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth);\r\n                        line = ch;\r\n                        accumWidth = chWidth;\r\n                    }\r\n                }\r\n                continue;\r\n            }\r\n            accumWidth += chWidth;\r\n            if (inWord) {\r\n                currentWord += ch;\r\n                currentWordWidth += chWidth;\r\n            }\r\n            else {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    currentWord = '';\r\n                    currentWordWidth = 0;\r\n                }\r\n                line += ch;\r\n            }\r\n        }\r\n        if (!lines.length && !line) {\r\n            line = text;\r\n            currentWord = '';\r\n            currentWordWidth = 0;\r\n        }\r\n        if (currentWord) {\r\n            line += currentWord;\r\n        }\r\n        if (line) {\r\n            lines.push(line);\r\n            linesWidths.push(accumWidth);\r\n        }\r\n        if (lines.length === 1) {\r\n            accumWidth += lastAccumWidth;\r\n        }\r\n        return {\r\n            accumWidth: accumWidth,\r\n            lines: lines,\r\n            linesWidths: linesWidths\r\n        };\r\n    }\r\n    function parsePercent$1(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\n\n    var DEFAULT_RICH_TEXT_COLOR = {\r\n        fill: '#000'\r\n    };\r\n    var DEFAULT_STROKE_LINE_WIDTH = 2;\r\n    var DEFAULT_TEXT_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineWidth: true,\r\n            fontSize: true,\r\n            lineHeight: true,\r\n            width: true,\r\n            height: true,\r\n            textShadowColor: true,\r\n            textShadowBlur: true,\r\n            textShadowOffsetX: true,\r\n            textShadowOffsetY: true,\r\n            backgroundColor: true,\r\n            padding: true,\r\n            borderColor: true,\r\n            borderWidth: true,\r\n            borderRadius: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var ZRText = (function (_super) {\r\n        __extends(ZRText, _super);\r\n        function ZRText(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = 'text';\r\n            _this._children = [];\r\n            _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        ZRText.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        ZRText.prototype.update = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.zlevel = this.zlevel;\r\n                child.z = this.z;\r\n                child.z2 = this.z2;\r\n                child.culling = this.culling;\r\n                child.cursor = this.cursor;\r\n                child.invisible = this.invisible;\r\n            }\r\n            var attachedTransform = this.attachedTransform;\r\n            if (attachedTransform) {\r\n                attachedTransform.updateTransform();\r\n                var m = attachedTransform.transform;\r\n                if (m) {\r\n                    this.transform = this.transform || [];\r\n                    copy$1(this.transform, m);\r\n                }\r\n                else {\r\n                    this.transform = null;\r\n                }\r\n            }\r\n            else {\r\n                _super.prototype.update.call(this);\r\n            }\r\n        };\r\n        ZRText.prototype.getComputedTransform = function () {\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.getComputedTransform();\r\n                this.__hostTarget.updateInnerText(true);\r\n            }\r\n            return this.attachedTransform ? this.attachedTransform.getComputedTransform()\r\n                : _super.prototype.getComputedTransform.call(this);\r\n        };\r\n        ZRText.prototype._updateSubTexts = function () {\r\n            this._childCursor = 0;\r\n            normalizeTextStyle(this.style);\r\n            this.style.rich\r\n                ? this._updateRichTexts()\r\n                : this._updatePlainTexts();\r\n            this._children.length = this._childCursor;\r\n            this.styleUpdated();\r\n        };\r\n        ZRText.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = zr;\r\n            }\r\n        };\r\n        ZRText.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = null;\r\n            }\r\n        };\r\n        ZRText.prototype.getBoundingRect = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            if (!this._rect) {\r\n                var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n                var children = this._children;\r\n                var tmpMat = [];\r\n                var rect = null;\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    var childRect = child.getBoundingRect();\r\n                    var transform = child.getLocalTransform(tmpMat);\r\n                    if (transform) {\r\n                        tmpRect.copy(childRect);\r\n                        tmpRect.applyTransform(transform);\r\n                        rect = rect || tmpRect.clone();\r\n                        rect.union(tmpRect);\r\n                    }\r\n                    else {\r\n                        rect = rect || childRect.clone();\r\n                        rect.union(childRect);\r\n                    }\r\n                }\r\n                this._rect = rect || tmpRect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\r\n            this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\r\n        };\r\n        ZRText.prototype.setTextContent = function (textContent) {\r\n            throw new Error('Can\\'t attach text on another text');\r\n        };\r\n        ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            if (!sourceStyle) {\r\n                return targetStyle;\r\n            }\r\n            var sourceRich = sourceStyle.rich;\r\n            var targetRich = targetStyle.rich || (sourceRich && {});\r\n            extend(targetStyle, sourceStyle);\r\n            if (sourceRich && targetRich) {\r\n                this._mergeRich(targetRich, sourceRich);\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            else if (targetRich) {\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            return targetStyle;\r\n        };\r\n        ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\r\n            var richNames = keys(sourceRich);\r\n            for (var i = 0; i < richNames.length; i++) {\r\n                var richName = richNames[i];\r\n                targetRich[richName] = targetRich[richName] || {};\r\n                extend(targetRich[richName], sourceRich[richName]);\r\n            }\r\n        };\r\n        ZRText.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_TEXT_ANIMATION_PROPS;\r\n        };\r\n        ZRText.prototype._getOrCreateChild = function (Ctor) {\r\n            var child = this._children[this._childCursor];\r\n            if (!child || !(child instanceof Ctor)) {\r\n                child = new Ctor();\r\n            }\r\n            this._children[this._childCursor++] = child;\r\n            child.__zr = this.__zr;\r\n            child.parent = this;\r\n            return child;\r\n        };\r\n        ZRText.prototype._updatePlainTexts = function () {\r\n            var style = this.style;\r\n            var textFont = style.font || DEFAULT_FONT;\r\n            var textPadding = style.padding;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parsePlainText(text, style);\r\n            var needDrawBg = needDrawBackground(style);\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textLines = contentBlock.lines;\r\n            var lineHeight = contentBlock.lineHeight;\r\n            var defaultStyle = this._defaultStyle;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var textAlign = style.align || defaultStyle.align || 'left';\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\r\n            var textX = baseX;\r\n            var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\r\n            if (needDrawBg || textPadding) {\r\n                var outerWidth_1 = contentBlock.width;\r\n                textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]);\r\n                var boxX = adjustTextX(baseX, outerWidth_1, textAlign);\r\n                var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n                needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth_1, outerHeight);\r\n            }\r\n            textY += lineHeight / 2;\r\n            if (textPadding) {\r\n                textX = getTextXForPadding(baseX, textAlign, textPadding);\r\n                if (verticalAlign === 'top') {\r\n                    textY += textPadding[0];\r\n                }\r\n                else if (verticalAlign === 'bottom') {\r\n                    textY -= textPadding[2];\r\n                }\r\n            }\r\n            var defaultLineWidth = 0;\r\n            var useDefaultFill = false;\r\n            var textFill = getFill('fill' in style\r\n                ? style.fill\r\n                : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in style\r\n                ? style.stroke\r\n                : (!bgColorDrawn\r\n                    && (!defaultStyle.autoStroke || useDefaultFill))\r\n                    ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                    : null);\r\n            var hasShadow = style.textShadowBlur > 0;\r\n            var fixedBoundingRect = style.width != null\r\n                && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\r\n            var calculatedLineHeight = contentBlock.calculatedLineHeight;\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var el = this._getOrCreateChild(TSpan);\r\n                var subElStyle = el.createStyle();\r\n                el.useStyle(subElStyle);\r\n                subElStyle.text = textLines[i];\r\n                subElStyle.x = textX;\r\n                subElStyle.y = textY;\r\n                if (textAlign) {\r\n                    subElStyle.textAlign = textAlign;\r\n                }\r\n                subElStyle.textBaseline = 'middle';\r\n                subElStyle.opacity = style.opacity;\r\n                subElStyle.strokeFirst = true;\r\n                if (hasShadow) {\r\n                    subElStyle.shadowBlur = style.textShadowBlur || 0;\r\n                    subElStyle.shadowColor = style.textShadowColor || 'transparent';\r\n                    subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\r\n                    subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\r\n                }\r\n                if (textStroke) {\r\n                    subElStyle.stroke = textStroke;\r\n                    subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\r\n                    subElStyle.lineDash = style.lineDash;\r\n                    subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                }\r\n                if (textFill) {\r\n                    subElStyle.fill = textFill;\r\n                }\r\n                subElStyle.font = textFont;\r\n                textY += lineHeight;\r\n                if (fixedBoundingRect) {\r\n                    el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight));\r\n                }\r\n            }\r\n        };\r\n        ZRText.prototype._updateRichTexts = function () {\r\n            var style = this.style;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parseRichText(text, style);\r\n            var contentWidth = contentBlock.width;\r\n            var outerWidth = contentBlock.outerWidth;\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textPadding = style.padding;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var defaultStyle = this._defaultStyle;\r\n            var textAlign = style.align || defaultStyle.align;\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\r\n            var boxX = adjustTextX(baseX, outerWidth, textAlign);\r\n            var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n            var xLeft = boxX;\r\n            var lineTop = boxY;\r\n            if (textPadding) {\r\n                xLeft += textPadding[3];\r\n                lineTop += textPadding[0];\r\n            }\r\n            var xRight = xLeft + contentWidth;\r\n            if (needDrawBackground(style)) {\r\n                this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\r\n            }\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            for (var i = 0; i < contentBlock.lines.length; i++) {\r\n                var line = contentBlock.lines[i];\r\n                var tokens = line.tokens;\r\n                var tokenCount = tokens.length;\r\n                var lineHeight = line.lineHeight;\r\n                var remainedWidth = line.width;\r\n                var leftIndex = 0;\r\n                var lineXLeft = xLeft;\r\n                var lineXRight = xRight;\r\n                var rightIndex = tokenCount - 1;\r\n                var token = void 0;\r\n                while (leftIndex < tokenCount\r\n                    && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                while (rightIndex >= 0\r\n                    && (token = tokens[rightIndex], token.align === 'right')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXRight -= token.width;\r\n                    rightIndex--;\r\n                }\r\n                lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\r\n                while (leftIndex <= rightIndex) {\r\n                    token = tokens[leftIndex];\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                lineTop += lineHeight;\r\n            }\r\n        };\r\n        ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\r\n            var tokenStyle = style.rich[token.styleName] || {};\r\n            tokenStyle.text = token.text;\r\n            var verticalAlign = token.verticalAlign;\r\n            var y = lineTop + lineHeight / 2;\r\n            if (verticalAlign === 'top') {\r\n                y = lineTop + token.height / 2;\r\n            }\r\n            else if (verticalAlign === 'bottom') {\r\n                y = lineTop + lineHeight - token.height / 2;\r\n            }\r\n            var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\r\n            needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\r\n                ? x - token.width\r\n                : textAlign === 'center'\r\n                    ? x - token.width / 2\r\n                    : x, y - token.height / 2, token.width, token.height);\r\n            var bgColorDrawn = !!tokenStyle.backgroundColor;\r\n            var textPadding = token.textPadding;\r\n            if (textPadding) {\r\n                x = getTextXForPadding(x, textAlign, textPadding);\r\n                y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\r\n            }\r\n            var el = this._getOrCreateChild(TSpan);\r\n            var subElStyle = el.createStyle();\r\n            el.useStyle(subElStyle);\r\n            var defaultStyle = this._defaultStyle;\r\n            var useDefaultFill = false;\r\n            var defaultLineWidth = 0;\r\n            var textFill = getStroke('fill' in tokenStyle ? tokenStyle.fill\r\n                : 'fill' in style ? style.fill\r\n                    : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\r\n                : 'stroke' in style ? style.stroke\r\n                    : (!bgColorDrawn\r\n                        && !parentBgColorDrawn\r\n                        && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                        : null);\r\n            var hasShadow = tokenStyle.textShadowBlur > 0\r\n                || style.textShadowBlur > 0;\r\n            subElStyle.text = token.text;\r\n            subElStyle.x = x;\r\n            subElStyle.y = y;\r\n            if (hasShadow) {\r\n                subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\r\n                subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\r\n                subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\r\n                subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\r\n            }\r\n            subElStyle.textAlign = textAlign;\r\n            subElStyle.textBaseline = 'middle';\r\n            subElStyle.font = token.font || DEFAULT_FONT;\r\n            subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\r\n            if (textStroke) {\r\n                subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\r\n                subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\r\n                subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                subElStyle.stroke = textStroke;\r\n            }\r\n            if (textFill) {\r\n                subElStyle.fill = textFill;\r\n            }\r\n            var textWidth = token.contentWidth;\r\n            var textHeight = token.contentHeight;\r\n            el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\r\n        };\r\n        ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\r\n            var textBackgroundColor = style.backgroundColor;\r\n            var textBorderWidth = style.borderWidth;\r\n            var textBorderColor = style.borderColor;\r\n            var isPlainBg = isString(textBackgroundColor);\r\n            var textBorderRadius = style.borderRadius;\r\n            var self = this;\r\n            var rectEl;\r\n            var imgEl;\r\n            if (isPlainBg || (textBorderWidth && textBorderColor)) {\r\n                rectEl = this._getOrCreateChild(Rect);\r\n                rectEl.useStyle(rectEl.createStyle());\r\n                rectEl.style.fill = null;\r\n                var rectShape = rectEl.shape;\r\n                rectShape.x = x;\r\n                rectShape.y = y;\r\n                rectShape.width = width;\r\n                rectShape.height = height;\r\n                rectShape.r = textBorderRadius;\r\n                rectEl.dirtyShape();\r\n            }\r\n            if (isPlainBg) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.fill = textBackgroundColor || null;\r\n                rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\r\n            }\r\n            else if (textBackgroundColor && textBackgroundColor.image) {\r\n                imgEl = this._getOrCreateChild(ZRImage);\r\n                imgEl.onload = function () {\r\n                    self.dirtyStyle();\r\n                };\r\n                var imgStyle = imgEl.style;\r\n                imgStyle.image = textBackgroundColor.image;\r\n                imgStyle.x = x;\r\n                imgStyle.y = y;\r\n                imgStyle.width = width;\r\n                imgStyle.height = height;\r\n            }\r\n            if (textBorderWidth && textBorderColor) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.lineWidth = textBorderWidth;\r\n                rectStyle.stroke = textBorderColor;\r\n                rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\r\n                rectStyle.lineDash = style.borderDash;\r\n                rectStyle.lineDashOffset = style.borderDashOffset || 0;\r\n                rectEl.strokeContainThreshold = 0;\r\n                if (rectEl.hasFill() && rectEl.hasStroke()) {\r\n                    rectStyle.strokeFirst = true;\r\n                    rectStyle.lineWidth *= 2;\r\n                }\r\n            }\r\n            var commonStyle = (rectEl || imgEl).style;\r\n            commonStyle.shadowBlur = style.shadowBlur || 0;\r\n            commonStyle.shadowColor = style.shadowColor || 'transparent';\r\n            commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\r\n            commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\r\n            commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\r\n        };\r\n        ZRText.makeFont = function (style) {\r\n            var font = '';\r\n            if (style.fontSize || style.fontFamily || style.fontWeight) {\r\n                var fontSize = '';\r\n                if (typeof style.fontSize === 'string'\r\n                    && (style.fontSize.indexOf('px') !== -1\r\n                        || style.fontSize.indexOf('rem') !== -1\r\n                        || style.fontSize.indexOf('em') !== -1)) {\r\n                    fontSize = style.fontSize;\r\n                }\r\n                else if (!isNaN(+style.fontSize)) {\r\n                    fontSize = style.fontSize + 'px';\r\n                }\r\n                else {\r\n                    fontSize = '12px';\r\n                }\r\n                font = [\r\n                    style.fontStyle,\r\n                    style.fontWeight,\r\n                    fontSize,\r\n                    style.fontFamily || 'sans-serif'\r\n                ].join(' ');\r\n            }\r\n            return font && trim(font) || style.textFont || style.font;\r\n        };\r\n        return ZRText;\r\n    }(Displayable));\r\n    var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\r\n    var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\r\n    function normalizeTextStyle(style) {\r\n        normalizeStyle(style);\r\n        each(style.rich, normalizeStyle);\r\n        return style;\r\n    }\r\n    function normalizeStyle(style) {\r\n        if (style) {\r\n            style.font = ZRText.makeFont(style);\r\n            var textAlign = style.align;\r\n            textAlign === 'middle' && (textAlign = 'center');\r\n            style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\r\n            var verticalAlign = style.verticalAlign;\r\n            verticalAlign === 'center' && (verticalAlign = 'middle');\r\n            style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\r\n            var textPadding = style.padding;\r\n            if (textPadding) {\r\n                style.padding = normalizeCssArray(style.padding);\r\n            }\r\n        }\r\n    }\r\n    function getStroke(stroke, lineWidth) {\r\n        return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\r\n            ? null\r\n            : (stroke.image || stroke.colorStops)\r\n                ? '#000'\r\n                : stroke;\r\n    }\r\n    function getFill(fill) {\r\n        return (fill == null || fill === 'none')\r\n            ? null\r\n            : (fill.image || fill.colorStops)\r\n                ? '#000'\r\n                : fill;\r\n    }\r\n    function getTextXForPadding(x, textAlign, textPadding) {\r\n        return textAlign === 'right'\r\n            ? (x - textPadding[1])\r\n            : textAlign === 'center'\r\n                ? (x + textPadding[3] / 2 - textPadding[1] / 2)\r\n                : (x + textPadding[3]);\r\n    }\r\n    function getStyleText(style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        return text;\r\n    }\r\n    function needDrawBackground(style) {\r\n        return !!(style.backgroundColor\r\n            || (style.borderWidth && style.borderColor));\r\n    }\n\n    var ArcShape = (function () {\r\n        function ArcShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return ArcShape;\r\n    }());\r\n    var Arc = (function (_super) {\r\n        __extends(Arc, _super);\r\n        function Arc(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Arc.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Arc.prototype.getDefaultShape = function () {\r\n            return new ArcShape();\r\n        };\r\n        Arc.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = Math.max(shape.r, 0);\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitX = Math.cos(startAngle);\r\n            var unitY = Math.sin(startAngle);\r\n            ctx.moveTo(unitX * r + x, unitY * r + y);\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n        };\r\n        return Arc;\r\n    }(Path));\r\n    Arc.prototype.type = 'arc';\n\n    var out = [];\r\n    var BezierCurveShape = (function () {\r\n        function BezierCurveShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.cpx1 = 0;\r\n            this.cpy1 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return BezierCurveShape;\r\n    }());\r\n    function someVectorAt(shape, t, isTangent) {\r\n        var cpx2 = shape.cpx2;\r\n        var cpy2 = shape.cpy2;\r\n        if (cpx2 === null || cpy2 === null) {\r\n            return [\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\r\n            ];\r\n        }\r\n        else {\r\n            return [\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\r\n            ];\r\n        }\r\n    }\r\n    var BezierCurve = (function (_super) {\r\n        __extends(BezierCurve, _super);\r\n        function BezierCurve(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        BezierCurve.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        BezierCurve.prototype.getDefaultShape = function () {\r\n            return new BezierCurveShape();\r\n        };\r\n        BezierCurve.prototype.buildPath = function (ctx, shape) {\r\n            var x1 = shape.x1;\r\n            var y1 = shape.y1;\r\n            var x2 = shape.x2;\r\n            var y2 = shape.y2;\r\n            var cpx1 = shape.cpx1;\r\n            var cpy1 = shape.cpy1;\r\n            var cpx2 = shape.cpx2;\r\n            var cpy2 = shape.cpy2;\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (cpx2 == null || cpy2 == null) {\r\n                if (percent < 1) {\r\n                    quadraticSubdivide(x1, cpx1, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    x2 = out[2];\r\n                    quadraticSubdivide(y1, cpy1, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    y2 = out[2];\r\n                }\r\n                ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\r\n            }\r\n            else {\r\n                if (percent < 1) {\r\n                    cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    cpx2 = out[2];\r\n                    x2 = out[3];\r\n                    cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    cpy2 = out[2];\r\n                    y2 = out[3];\r\n                }\r\n                ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\r\n            }\r\n        };\r\n        BezierCurve.prototype.pointAt = function (t) {\r\n            return someVectorAt(this.shape, t, false);\r\n        };\r\n        BezierCurve.prototype.tangentAt = function (t) {\r\n            var p = someVectorAt(this.shape, t, true);\r\n            return normalize(p, p);\r\n        };\r\n        return BezierCurve;\r\n    }(Path));\r\n    BezierCurve.prototype.type = 'bezier-curve';\n\n    var DropletShape = (function () {\r\n        function DropletShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return DropletShape;\r\n    }());\r\n    var Droplet = (function (_super) {\r\n        __extends(Droplet, _super);\r\n        function Droplet(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Droplet.prototype.getDefaultShape = function () {\r\n            return new DropletShape();\r\n        };\r\n        Droplet.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y + a);\r\n            ctx.bezierCurveTo(x + a, y + a, x + a * 3 / 2, y - a / 3, x, y - b);\r\n            ctx.bezierCurveTo(x - a * 3 / 2, y - a / 3, x - a, y + a, x, y + a);\r\n            ctx.closePath();\r\n        };\r\n        return Droplet;\r\n    }(Path));\r\n    Droplet.prototype.type = 'droplet';\n\n    var HeartShape = (function () {\r\n        function HeartShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return HeartShape;\r\n    }());\r\n    var Heart = (function (_super) {\r\n        __extends(Heart, _super);\r\n        function Heart(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Heart.prototype.getDefaultShape = function () {\r\n            return new HeartShape();\r\n        };\r\n        Heart.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y);\r\n            ctx.bezierCurveTo(x + a / 2, y - b * 2 / 3, x + a * 2, y + b / 3, x, y + b);\r\n            ctx.bezierCurveTo(x - a * 2, y + b / 3, x - a / 2, y - b * 2 / 3, x, y);\r\n        };\r\n        return Heart;\r\n    }(Path));\r\n    Heart.prototype.type = 'heart';\n\n    var PI$3 = Math.PI;\r\n    var sin = Math.sin;\r\n    var cos = Math.cos;\r\n    var IsogonShape = (function () {\r\n        function IsogonShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.r = 0;\r\n            this.n = 0;\r\n        }\r\n        return IsogonShape;\r\n    }());\r\n    var Isogon = (function (_super) {\r\n        __extends(Isogon, _super);\r\n        function Isogon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Isogon.prototype.getDefaultShape = function () {\r\n            return new IsogonShape();\r\n        };\r\n        Isogon.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var r = shape.r;\r\n            var dStep = 2 * PI$3 / n;\r\n            var deg = -PI$3 / 2;\r\n            ctx.moveTo(x + r * cos(deg), y + r * sin(deg));\r\n            for (var i = 0, end = n - 1; i < end; i++) {\r\n                deg += dStep;\r\n                ctx.lineTo(x + r * cos(deg), y + r * sin(deg));\r\n            }\r\n            ctx.closePath();\r\n            return;\r\n        };\r\n        return Isogon;\r\n    }(Path));\r\n    Isogon.prototype.type = 'isogon';\n\n    var RingShape = (function () {\r\n        function RingShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n        }\r\n        return RingShape;\r\n    }());\r\n    var Ring = (function (_super) {\r\n        __extends(Ring, _super);\r\n        function Ring(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ring.prototype.getDefaultShape = function () {\r\n            return new RingShape();\r\n        };\r\n        Ring.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var PI2 = Math.PI * 2;\r\n            ctx.moveTo(x + shape.r, y);\r\n            ctx.arc(x, y, shape.r, 0, PI2, false);\r\n            ctx.moveTo(x + shape.r0, y);\r\n            ctx.arc(x, y, shape.r0, 0, PI2, true);\r\n        };\r\n        return Ring;\r\n    }(Path));\r\n    Ring.prototype.type = 'ring';\n\n    var sin$1 = Math.sin;\r\n    var cos$1 = Math.cos;\r\n    var radian = Math.PI / 180;\r\n    var RoseShape = (function () {\r\n        function RoseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = [];\r\n            this.k = 0;\r\n            this.n = 1;\r\n        }\r\n        return RoseShape;\r\n    }());\r\n    var Rose = (function (_super) {\r\n        __extends(Rose, _super);\r\n        function Rose(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rose.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Rose.prototype.getDefaultShape = function () {\r\n            return new RoseShape();\r\n        };\r\n        Rose.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var k = shape.k;\r\n            var n = shape.n;\r\n            var x0 = shape.cx;\r\n            var y0 = shape.cy;\r\n            var x;\r\n            var y;\r\n            var r;\r\n            ctx.moveTo(x0, y0);\r\n            for (var i = 0, len = R.length; i < len; i++) {\r\n                r = R[i];\r\n                for (var j = 0; j <= 360 * n; j++) {\r\n                    x = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * cos$1(j * radian)\r\n                        + x0;\r\n                    y = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * sin$1(j * radian)\r\n                        + y0;\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n        };\r\n        return Rose;\r\n    }(Path));\r\n    Rose.prototype.type = 'rose';\n\n    var PI$4 = Math.PI;\r\n    var cos$2 = Math.cos;\r\n    var sin$2 = Math.sin;\r\n    var StarShape = (function () {\r\n        function StarShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.n = 3;\r\n            this.r = 0;\r\n        }\r\n        return StarShape;\r\n    }());\r\n    var Star = (function (_super) {\r\n        __extends(Star, _super);\r\n        function Star(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Star.prototype.getDefaultShape = function () {\r\n            return new StarShape();\r\n        };\r\n        Star.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = shape.r;\r\n            var r0 = shape.r0;\r\n            if (r0 == null) {\r\n                r0 = n > 4\r\n                    ? r * cos$2(2 * PI$4 / n) / cos$2(PI$4 / n)\r\n                    : r / 3;\r\n            }\r\n            var dStep = PI$4 / n;\r\n            var deg = -PI$4 / 2;\r\n            var xStart = x + r * cos$2(deg);\r\n            var yStart = y + r * sin$2(deg);\r\n            deg += dStep;\r\n            ctx.moveTo(xStart, yStart);\r\n            for (var i = 0, end = n * 2 - 1, ri = void 0; i < end; i++) {\r\n                ri = i % 2 === 0 ? r0 : r;\r\n                ctx.lineTo(x + ri * cos$2(deg), y + ri * sin$2(deg));\r\n                deg += dStep;\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return Star;\r\n    }(Path));\r\n    Star.prototype.type = 'star';\n\n    var cos$3 = Math.cos;\r\n    var sin$3 = Math.sin;\r\n    var TrochoidShape = (function () {\r\n        function TrochoidShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n            this.d = 0;\r\n            this.location = 'out';\r\n        }\r\n        return TrochoidShape;\r\n    }());\r\n    var Trochoid = (function (_super) {\r\n        __extends(Trochoid, _super);\r\n        function Trochoid(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Trochoid.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Trochoid.prototype.getDefaultShape = function () {\r\n            return new TrochoidShape();\r\n        };\r\n        Trochoid.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var r = shape.r0;\r\n            var d = shape.d;\r\n            var offsetX = shape.cx;\r\n            var offsetY = shape.cy;\r\n            var delta = shape.location === 'out' ? 1 : -1;\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (shape.location && R <= r) {\r\n                return;\r\n            }\r\n            var num = 0;\r\n            var i = 1;\r\n            var theta;\r\n            x1 = (R + delta * r) * cos$3(0)\r\n                - delta * d * cos$3(0) + offsetX;\r\n            y1 = (R + delta * r) * sin$3(0)\r\n                - d * sin$3(0) + offsetY;\r\n            ctx.moveTo(x1, y1);\r\n            do {\r\n                num++;\r\n            } while ((r * num) % (R + delta * r) !== 0);\r\n            do {\r\n                theta = Math.PI / 180 * i;\r\n                x2 = (R + delta * r) * cos$3(theta)\r\n                    - delta * d * cos$3((R / r + delta) * theta)\r\n                    + offsetX;\r\n                y2 = (R + delta * r) * sin$3(theta)\r\n                    - d * sin$3((R / r + delta) * theta)\r\n                    + offsetY;\r\n                ctx.lineTo(x2, y2);\r\n                i++;\r\n            } while (i <= (r * num) / (R + delta * r) * 360);\r\n        };\r\n        return Trochoid;\r\n    }(Path));\r\n    Trochoid.prototype.type = 'trochoid';\n\n    var RadialGradient = (function (_super) {\r\n        __extends(RadialGradient, _super);\r\n        function RadialGradient(x, y, r, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0.5 : x;\r\n            _this.y = y == null ? 0.5 : y;\r\n            _this.r = r == null ? 0.5 : r;\r\n            _this.type = 'radial';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return RadialGradient;\r\n    }(Gradient));\n\n    var extent = [0, 0];\r\n    var extent2 = [0, 0];\r\n    var minTv$1 = new Point();\r\n    var maxTv$1 = new Point();\r\n    var OrientedBoundingRect = (function () {\r\n        function OrientedBoundingRect(rect, transform) {\r\n            this._corners = [];\r\n            this._axes = [];\r\n            this._origin = [0, 0];\r\n            for (var i = 0; i < 4; i++) {\r\n                this._corners[i] = new Point();\r\n            }\r\n            for (var i = 0; i < 2; i++) {\r\n                this._axes[i] = new Point();\r\n            }\r\n            if (rect) {\r\n                this.fromBoundingRect(rect, transform);\r\n            }\r\n        }\r\n        OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\r\n            var corners = this._corners;\r\n            var axes = this._axes;\r\n            var x = rect.x;\r\n            var y = rect.y;\r\n            var x2 = x + rect.width;\r\n            var y2 = y + rect.height;\r\n            corners[0].set(x, y);\r\n            corners[1].set(x2, y);\r\n            corners[2].set(x2, y2);\r\n            corners[3].set(x, y2);\r\n            if (transform) {\r\n                for (var i = 0; i < 4; i++) {\r\n                    corners[i].transform(transform);\r\n                }\r\n            }\r\n            Point.sub(axes[0], corners[1], corners[0]);\r\n            Point.sub(axes[1], corners[3], corners[0]);\r\n            axes[0].normalize();\r\n            axes[1].normalize();\r\n            for (var i = 0; i < 2; i++) {\r\n                this._origin[i] = axes[i].dot(corners[0]);\r\n            }\r\n        };\r\n        OrientedBoundingRect.prototype.intersect = function (other, mtv) {\r\n            var overlapped = true;\r\n            var noMtv = !mtv;\r\n            minTv$1.set(Infinity, Infinity);\r\n            maxTv$1.set(0, 0);\r\n            if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!noMtv) {\r\n                Point.copy(mtv, overlapped ? minTv$1 : maxTv$1);\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\r\n            var overlapped = true;\r\n            for (var i = 0; i < 2; i++) {\r\n                var axis = this._axes[i];\r\n                this._getProjMinMaxOnAxis(i, self._corners, extent);\r\n                this._getProjMinMaxOnAxis(i, other._corners, extent2);\r\n                if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\r\n                    overlapped = false;\r\n                    if (noMtv) {\r\n                        return overlapped;\r\n                    }\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) > maxTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(maxTv, axis, -dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(maxTv, axis, dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n                else if (minTv) {\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) < minTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(minTv, axis, dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(minTv, axis, -dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\r\n            var axis = this._axes[dim];\r\n            var origin = this._origin;\r\n            var proj = corners[0].dot(axis) + origin[dim];\r\n            var min = proj;\r\n            var max = proj;\r\n            for (var i = 1; i < corners.length; i++) {\r\n                var proj_1 = corners[i].dot(axis) + origin[dim];\r\n                min = Math.min(proj_1, min);\r\n                max = Math.max(proj_1, max);\r\n            }\r\n            out[0] = min;\r\n            out[1] = max;\r\n        };\r\n        return OrientedBoundingRect;\r\n    }());\n\n    /*!\r\n    * ZRender, a high performance 2d drawing library.\r\n    *\r\n    * Copyright (c) 2013, Baidu Inc.\r\n    * All rights reserved.\r\n    *\r\n    * LICENSE\r\n    * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\r\n    */\r\n    var useVML = !env.canvasSupported;\r\n    var painterCtors = {};\r\n    var instances = {};\r\n    function delInstance(id) {\r\n        delete instances[id];\r\n    }\r\n    function isDarkMode(backgroundColor) {\r\n        if (!backgroundColor) {\r\n            return false;\r\n        }\r\n        if (typeof backgroundColor === 'string') {\r\n            return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\r\n        }\r\n        else if (backgroundColor.colorStops) {\r\n            var colorStops = backgroundColor.colorStops;\r\n            var totalLum = 0;\r\n            var len = colorStops.length;\r\n            for (var i = 0; i < len; i++) {\r\n                totalLum += lum(colorStops[i].color, 1);\r\n            }\r\n            totalLum /= len;\r\n            return totalLum < DARK_MODE_THRESHOLD;\r\n        }\r\n        return false;\r\n    }\r\n    var ZRender = (function () {\r\n        function ZRender(id, dom, opts) {\r\n            var _this = this;\r\n            this._sleepAfterStill = 10;\r\n            this._stillFrameAccum = 0;\r\n            this._needsRefresh = true;\r\n            this._needsRefreshHover = true;\r\n            this._darkMode = false;\r\n            opts = opts || {};\r\n            this.dom = dom;\r\n            this.id = id;\r\n            var storage = new Storage();\r\n            var rendererType = opts.renderer;\r\n            if (useVML) {\r\n                if (!painterCtors.vml) {\r\n                    throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\r\n                }\r\n                rendererType = 'vml';\r\n            }\r\n            else if (!rendererType) {\r\n                rendererType = 'canvas';\r\n            }\r\n            if (!painterCtors[rendererType]) {\r\n                throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\r\n            }\r\n            opts.useDirtyRect = opts.useDirtyRect == null\r\n                ? false\r\n                : opts.useDirtyRect;\r\n            var painter = new painterCtors[rendererType](dom, storage, opts, id);\r\n            this.storage = storage;\r\n            this.painter = painter;\r\n            var handerProxy = (!env.node && !env.worker)\r\n                ? new HandlerDomProxy(painter.getViewportRoot(), painter.root)\r\n                : null;\r\n            this.handler = new Handler(storage, painter, handerProxy, painter.root);\r\n            this.animation = new Animation({\r\n                stage: {\r\n                    update: function () { return _this._flush(true); }\r\n                }\r\n            });\r\n            this.animation.start();\r\n        }\r\n        ZRender.prototype.add = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            this.storage.addRoot(el);\r\n            el.addSelfToZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.remove = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            this.storage.delRoot(el);\r\n            el.removeSelfFromZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.configLayer = function (zLevel, config) {\r\n            if (this.painter.configLayer) {\r\n                this.painter.configLayer(zLevel, config);\r\n            }\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.setBackgroundColor = function (backgroundColor) {\r\n            if (this.painter.setBackgroundColor) {\r\n                this.painter.setBackgroundColor(backgroundColor);\r\n            }\r\n            this.refresh();\r\n            this._backgroundColor = backgroundColor;\r\n            this._darkMode = isDarkMode(backgroundColor);\r\n        };\r\n        ZRender.prototype.getBackgroundColor = function () {\r\n            return this._backgroundColor;\r\n        };\r\n        ZRender.prototype.setDarkMode = function (darkMode) {\r\n            this._darkMode = darkMode;\r\n        };\r\n        ZRender.prototype.isDarkMode = function () {\r\n            return this._darkMode;\r\n        };\r\n        ZRender.prototype.refreshImmediately = function (fromInside) {\r\n            if (!fromInside) {\r\n                this.animation.update(true);\r\n            }\r\n            this._needsRefresh = false;\r\n            this.painter.refresh();\r\n            this._needsRefresh = false;\r\n        };\r\n        ZRender.prototype.refresh = function () {\r\n            this._needsRefresh = true;\r\n            this.animation.start();\r\n        };\r\n        ZRender.prototype.flush = function () {\r\n            this._flush(false);\r\n        };\r\n        ZRender.prototype._flush = function (fromInside) {\r\n            var triggerRendered;\r\n            var start = new Date().getTime();\r\n            if (this._needsRefresh) {\r\n                triggerRendered = true;\r\n                this.refreshImmediately(fromInside);\r\n            }\r\n            if (this._needsRefreshHover) {\r\n                triggerRendered = true;\r\n                this.refreshHoverImmediately();\r\n            }\r\n            var end = new Date().getTime();\r\n            if (triggerRendered) {\r\n                this._stillFrameAccum = 0;\r\n                this.trigger('rendered', {\r\n                    elapsedTime: end - start\r\n                });\r\n            }\r\n            else if (this._sleepAfterStill > 0) {\r\n                this._stillFrameAccum++;\r\n                if (this._stillFrameAccum > this._sleepAfterStill) {\r\n                    this.animation.stop();\r\n                }\r\n            }\r\n        };\r\n        ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\r\n            this._sleepAfterStill = stillFramesCount;\r\n        };\r\n        ZRender.prototype.wakeUp = function () {\r\n            this.animation.start();\r\n            this._stillFrameAccum = 0;\r\n        };\r\n        ZRender.prototype.addHover = function (el) {\r\n        };\r\n        ZRender.prototype.removeHover = function (el) {\r\n        };\r\n        ZRender.prototype.clearHover = function () {\r\n        };\r\n        ZRender.prototype.refreshHover = function () {\r\n            this._needsRefreshHover = true;\r\n        };\r\n        ZRender.prototype.refreshHoverImmediately = function () {\r\n            this._needsRefreshHover = false;\r\n            if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\r\n                this.painter.refreshHover();\r\n            }\r\n        };\r\n        ZRender.prototype.resize = function (opts) {\r\n            opts = opts || {};\r\n            this.painter.resize(opts.width, opts.height);\r\n            this.handler.resize();\r\n        };\r\n        ZRender.prototype.clearAnimation = function () {\r\n            this.animation.clear();\r\n        };\r\n        ZRender.prototype.getWidth = function () {\r\n            return this.painter.getWidth();\r\n        };\r\n        ZRender.prototype.getHeight = function () {\r\n            return this.painter.getHeight();\r\n        };\r\n        ZRender.prototype.pathToImage = function (e, dpr) {\r\n            if (this.painter.pathToImage) {\r\n                return this.painter.pathToImage(e, dpr);\r\n            }\r\n        };\r\n        ZRender.prototype.setCursorStyle = function (cursorStyle) {\r\n            this.handler.setCursorStyle(cursorStyle);\r\n        };\r\n        ZRender.prototype.findHover = function (x, y) {\r\n            return this.handler.findHover(x, y);\r\n        };\r\n        ZRender.prototype.on = function (eventName, eventHandler, context) {\r\n            this.handler.on(eventName, eventHandler, context);\r\n            return this;\r\n        };\r\n        ZRender.prototype.off = function (eventName, eventHandler) {\r\n            this.handler.off(eventName, eventHandler);\r\n        };\r\n        ZRender.prototype.trigger = function (eventName, event) {\r\n            this.handler.trigger(eventName, event);\r\n        };\r\n        ZRender.prototype.clear = function () {\r\n            var roots = this.storage.getRoots();\r\n            for (var i = 0; i < roots.length; i++) {\r\n                if (roots[i] instanceof Group) {\r\n                    roots[i].removeSelfFromZr(this);\r\n                }\r\n            }\r\n            this.storage.delAllRoots();\r\n            this.painter.clear();\r\n        };\r\n        ZRender.prototype.dispose = function () {\r\n            this.animation.stop();\r\n            this.clear();\r\n            this.storage.dispose();\r\n            this.painter.dispose();\r\n            this.handler.dispose();\r\n            this.animation =\r\n                this.storage =\r\n                    this.painter =\r\n                        this.handler = null;\r\n            delInstance(this.id);\r\n        };\r\n        return ZRender;\r\n    }());\r\n    function init(dom, opts) {\r\n        var zr = new ZRender(guid(), dom, opts);\r\n        instances[zr.id] = zr;\r\n        return zr;\r\n    }\r\n    function dispose(zr) {\r\n        zr.dispose();\r\n    }\r\n    function disposeAll() {\r\n        for (var key in instances) {\r\n            if (instances.hasOwnProperty(key)) {\r\n                instances[key].dispose();\r\n            }\r\n        }\r\n        instances = {};\r\n    }\r\n    function getInstance(id) {\r\n        return instances[id];\r\n    }\r\n    function registerPainter(name, Ctor) {\r\n        painterCtors[name] = Ctor;\r\n    }\r\n    var version = '5.0.1';\n\n    var zrender = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init,\n        dispose: dispose,\n        disposeAll: disposeAll,\n        getInstance: getInstance,\n        registerPainter: registerPainter,\n        version: version\n    });\n\n    var RADIAN_EPSILON = 1e-4;\r\n    function _trim(str) {\r\n        return str.replace(/^\\s+|\\s+$/g, '');\r\n    }\r\n    function linearMap(val, domain, range, clamp) {\r\n        var subDomain = domain[1] - domain[0];\r\n        var subRange = range[1] - range[0];\r\n        if (subDomain === 0) {\r\n            return subRange === 0\r\n                ? range[0]\r\n                : (range[0] + range[1]) / 2;\r\n        }\r\n        if (clamp) {\r\n            if (subDomain > 0) {\r\n                if (val <= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val >= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n            else {\r\n                if (val >= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val <= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if (val === domain[0]) {\r\n                return range[0];\r\n            }\r\n            if (val === domain[1]) {\r\n                return range[1];\r\n            }\r\n        }\r\n        return (val - domain[0]) / subDomain * subRange + range[0];\r\n    }\r\n    function parsePercent$2(percent, all) {\r\n        switch (percent) {\r\n            case 'center':\r\n            case 'middle':\r\n                percent = '50%';\r\n                break;\r\n            case 'left':\r\n            case 'top':\r\n                percent = '0%';\r\n                break;\r\n            case 'right':\r\n            case 'bottom':\r\n                percent = '100%';\r\n                break;\r\n        }\r\n        if (typeof percent === 'string') {\r\n            if (_trim(percent).match(/%$/)) {\r\n                return parseFloat(percent) / 100 * all;\r\n            }\r\n            return parseFloat(percent);\r\n        }\r\n        return percent == null ? NaN : +percent;\r\n    }\r\n    function round$1(x, precision, returnStr) {\r\n        if (precision == null) {\r\n            precision = 10;\r\n        }\r\n        precision = Math.min(Math.max(0, precision), 20);\r\n        x = (+x).toFixed(precision);\r\n        return (returnStr ? x : +x);\r\n    }\r\n    function asc(arr) {\r\n        arr.sort(function (a, b) {\r\n            return a - b;\r\n        });\r\n        return arr;\r\n    }\r\n    function getPrecision(val) {\r\n        val = +val;\r\n        if (isNaN(val)) {\r\n            return 0;\r\n        }\r\n        var e = 1;\r\n        var count = 0;\r\n        while (Math.round(val * e) / e !== val) {\r\n            e *= 10;\r\n            count++;\r\n        }\r\n        return count;\r\n    }\r\n    function getPrecisionSafe(val) {\r\n        var str = val.toString();\r\n        var eIndex = str.indexOf('e');\r\n        if (eIndex > 0) {\r\n            var precision = +str.slice(eIndex + 1);\r\n            return precision < 0 ? -precision : 0;\r\n        }\r\n        else {\r\n            var dotIndex = str.indexOf('.');\r\n            return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\r\n        }\r\n    }\r\n    function getPixelPrecision(dataExtent, pixelExtent) {\r\n        var log = Math.log;\r\n        var LN10 = Math.LN10;\r\n        var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\r\n        var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);\r\n        var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\r\n        return !isFinite(precision) ? 20 : precision;\r\n    }\r\n    function getPercentWithPrecision(valueList, idx, precision) {\r\n        if (!valueList[idx]) {\r\n            return 0;\r\n        }\r\n        var sum = reduce(valueList, function (acc, val) {\r\n            return acc + (isNaN(val) ? 0 : val);\r\n        }, 0);\r\n        if (sum === 0) {\r\n            return 0;\r\n        }\r\n        var digits = Math.pow(10, precision);\r\n        var votesPerQuota = map(valueList, function (val) {\r\n            return (isNaN(val) ? 0 : val) / sum * digits * 100;\r\n        });\r\n        var targetSeats = digits * 100;\r\n        var seats = map(votesPerQuota, function (votes) {\r\n            return Math.floor(votes);\r\n        });\r\n        var currentSum = reduce(seats, function (acc, val) {\r\n            return acc + val;\r\n        }, 0);\r\n        var remainder = map(votesPerQuota, function (votes, idx) {\r\n            return votes - seats[idx];\r\n        });\r\n        while (currentSum < targetSeats) {\r\n            var max = Number.NEGATIVE_INFINITY;\r\n            var maxId = null;\r\n            for (var i = 0, len = remainder.length; i < len; ++i) {\r\n                if (remainder[i] > max) {\r\n                    max = remainder[i];\r\n                    maxId = i;\r\n                }\r\n            }\r\n            ++seats[maxId];\r\n            remainder[maxId] = 0;\r\n            ++currentSum;\r\n        }\r\n        return seats[idx] / digits;\r\n    }\r\n    var MAX_SAFE_INTEGER = 9007199254740991;\r\n    function remRadian(radian) {\r\n        var pi2 = Math.PI * 2;\r\n        return (radian % pi2 + pi2) % pi2;\r\n    }\r\n    function isRadianAroundZero(val) {\r\n        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\r\n    }\r\n    var TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/;\r\n    function parseDate(value) {\r\n        if (value instanceof Date) {\r\n            return value;\r\n        }\r\n        else if (typeof value === 'string') {\r\n            var match = TIME_REG.exec(value);\r\n            if (!match) {\r\n                return new Date(NaN);\r\n            }\r\n            if (!match[8]) {\r\n                return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\r\n            }\r\n            else {\r\n                var hour = +match[4] || 0;\r\n                if (match[8].toUpperCase() !== 'Z') {\r\n                    hour -= +match[8].slice(0, 3);\r\n                }\r\n                return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\r\n            }\r\n        }\r\n        else if (value == null) {\r\n            return new Date(NaN);\r\n        }\r\n        return new Date(Math.round(value));\r\n    }\r\n    function quantity(val) {\r\n        return Math.pow(10, quantityExponent(val));\r\n    }\r\n    function quantityExponent(val) {\r\n        if (val === 0) {\r\n            return 0;\r\n        }\r\n        var exp = Math.floor(Math.log(val) / Math.LN10);\r\n        if (val / Math.pow(10, exp) >= 10) {\r\n            exp++;\r\n        }\r\n        return exp;\r\n    }\r\n    function nice(val, round) {\r\n        var exponent = quantityExponent(val);\r\n        var exp10 = Math.pow(10, exponent);\r\n        var f = val / exp10;\r\n        var nf;\r\n        if (round) {\r\n            if (f < 1.5) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2.5) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 4) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 7) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        else {\r\n            if (f < 1) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 3) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 5) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        val = nf * exp10;\r\n        return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\r\n    }\r\n    function quantile(ascArr, p) {\r\n        var H = (ascArr.length - 1) * p + 1;\r\n        var h = Math.floor(H);\r\n        var v = +ascArr[h - 1];\r\n        var e = H - h;\r\n        return e ? v + e * (ascArr[h] - v) : v;\r\n    }\r\n    function reformIntervals(list) {\r\n        list.sort(function (a, b) {\r\n            return littleThan(a, b, 0) ? -1 : 1;\r\n        });\r\n        var curr = -Infinity;\r\n        var currClose = 1;\r\n        for (var i = 0; i < list.length;) {\r\n            var interval = list[i].interval;\r\n            var close_1 = list[i].close;\r\n            for (var lg = 0; lg < 2; lg++) {\r\n                if (interval[lg] <= curr) {\r\n                    interval[lg] = curr;\r\n                    close_1[lg] = (!lg ? 1 - currClose : 1);\r\n                }\r\n                curr = interval[lg];\r\n                currClose = close_1[lg];\r\n            }\r\n            if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {\r\n                list.splice(i, 1);\r\n            }\r\n            else {\r\n                i++;\r\n            }\r\n        }\r\n        return list;\r\n        function littleThan(a, b, lg) {\r\n            return a.interval[lg] < b.interval[lg]\r\n                || (a.interval[lg] === b.interval[lg]\r\n                    && ((a.close[lg] - b.close[lg] === (!lg ? 1 : -1))\r\n                        || (!lg && littleThan(a, b, 1))));\r\n        }\r\n    }\r\n    function numericToNumber(val) {\r\n        var valFloat = parseFloat(val);\r\n        return (valFloat == val\r\n            && (valFloat !== 0 || typeof val !== 'string' || val.indexOf('x') <= 0)) ? valFloat : NaN;\r\n    }\r\n    function isNumeric(val) {\r\n        return !isNaN(numericToNumber(val));\r\n    }\r\n    function getRandomIdBase() {\r\n        return Math.round(Math.random() * 9);\r\n    }\r\n    function getGreatestCommonDividor(a, b) {\r\n        if (b === 0) {\r\n            return a;\r\n        }\r\n        return getGreatestCommonDividor(b, a % b);\r\n    }\r\n    function getLeastCommonMultiple(a, b) {\r\n        if (a == null) {\r\n            return b;\r\n        }\r\n        if (b == null) {\r\n            return a;\r\n        }\r\n        return a * b / getGreatestCommonDividor(a, b);\r\n    }\n\n    var numberUtil = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        linearMap: linearMap,\n        parsePercent: parsePercent$2,\n        round: round$1,\n        asc: asc,\n        getPrecision: getPrecision,\n        getPrecisionSafe: getPrecisionSafe,\n        getPixelPrecision: getPixelPrecision,\n        getPercentWithPrecision: getPercentWithPrecision,\n        MAX_SAFE_INTEGER: MAX_SAFE_INTEGER,\n        remRadian: remRadian,\n        isRadianAroundZero: isRadianAroundZero,\n        parseDate: parseDate,\n        quantity: quantity,\n        quantityExponent: quantityExponent,\n        nice: nice,\n        quantile: quantile,\n        reformIntervals: reformIntervals,\n        numericToNumber: numericToNumber,\n        isNumeric: isNumeric,\n        getRandomIdBase: getRandomIdBase,\n        getGreatestCommonDividor: getGreatestCommonDividor,\n        getLeastCommonMultiple: getLeastCommonMultiple\n    });\n\n    var ECHARTS_PREFIX = '[ECharts] ';\r\n    var storedLogs = {};\r\n    var hasConsole = typeof console !== 'undefined'\r\n        && console.warn && console.log;\r\n    function warn(str) {\r\n        if (hasConsole) {\r\n            console.warn(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function error(str) {\r\n        if (hasConsole) {\r\n            console.error(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function deprecateLog(str) {\r\n        if (__DEV__) {\r\n            if (storedLogs[str]) {\r\n                return;\r\n            }\r\n            if (hasConsole) {\r\n                storedLogs[str] = true;\r\n                console.warn(ECHARTS_PREFIX + 'DEPRECATED: ' + str);\r\n            }\r\n        }\r\n    }\r\n    function deprecateReplaceLog(oldOpt, newOpt, scope) {\r\n        if (__DEV__) {\r\n            deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\r\n        }\r\n    }\r\n    function consoleLog() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (__DEV__) {\r\n            if (typeof console !== 'undefined' && console.log) {\r\n                console.log.apply(console, args);\r\n            }\r\n        }\r\n    }\r\n    function makePrintable() {\r\n        var hintInfo = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            hintInfo[_i] = arguments[_i];\r\n        }\r\n        var msg = '';\r\n        if (__DEV__) {\r\n            var makePrintableStringIfPossible_1 = function (val) {\r\n                return val === void 0 ? 'undefined'\r\n                    : val === Infinity ? 'Infinity'\r\n                        : val === -Infinity ? '-Infinity'\r\n                            : eqNaN(val) ? 'NaN'\r\n                                : val instanceof Date ? 'Date(' + val.toISOString() + ')'\r\n                                    : isFunction(val) ? 'function () { ... }'\r\n                                        : isRegExp(val) ? val + ''\r\n                                            : null;\r\n            };\r\n            msg = map(hintInfo, function (arg) {\r\n                if (isString(arg)) {\r\n                    return arg;\r\n                }\r\n                else {\r\n                    var printableStr = makePrintableStringIfPossible_1(arg);\r\n                    if (printableStr != null) {\r\n                        return printableStr;\r\n                    }\r\n                    else if (typeof JSON !== 'undefined' && JSON.stringify) {\r\n                        try {\r\n                            return JSON.stringify(arg, function (n, val) {\r\n                                var printableStr = makePrintableStringIfPossible_1(val);\r\n                                return printableStr == null ? val : printableStr;\r\n                            });\r\n                        }\r\n                        catch (err) {\r\n                            return '?';\r\n                        }\r\n                    }\r\n                    else {\r\n                        return '?';\r\n                    }\r\n                }\r\n            }).join(' ');\r\n        }\r\n        return msg;\r\n    }\r\n    function throwError(msg) {\r\n        throw new Error(msg);\r\n    }\n\n    var DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\r\n    var INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\r\n    function normalizeToArray(value) {\r\n        return value instanceof Array\r\n            ? value\r\n            : value == null\r\n                ? []\r\n                : [value];\r\n    }\r\n    function defaultEmphasis(opt, key, subOpts) {\r\n        if (opt) {\r\n            opt[key] = opt[key] || {};\r\n            opt.emphasis = opt.emphasis || {};\r\n            opt.emphasis[key] = opt.emphasis[key] || {};\r\n            for (var i = 0, len = subOpts.length; i < len; i++) {\r\n                var subOptName = subOpts[i];\r\n                if (!opt.emphasis[key].hasOwnProperty(subOptName)\r\n                    && opt[key].hasOwnProperty(subOptName)) {\r\n                    opt.emphasis[key][subOptName] = opt[key][subOptName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    var TEXT_STYLE_OPTIONS = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth',\r\n        'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY',\r\n        'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding'\r\n    ];\r\n    function getDataItemValue(dataItem) {\r\n        return (isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date))\r\n            ? dataItem.value : dataItem;\r\n    }\r\n    function isDataItemOption(dataItem) {\r\n        return isObject(dataItem)\r\n            && !(dataItem instanceof Array);\r\n    }\r\n    function mappingToExists(existings, newCmptOptions, mode) {\r\n        var isNormalMergeMode = mode === 'normalMerge';\r\n        var isReplaceMergeMode = mode === 'replaceMerge';\r\n        var isReplaceAllMode = mode === 'replaceAll';\r\n        existings = existings || [];\r\n        newCmptOptions = (newCmptOptions || []).slice();\r\n        var existingIdIdxMap = createHashMap();\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!isObject(cmptOption)) {\r\n                newCmptOptions[index] = null;\r\n                return;\r\n            }\r\n            if (__DEV__) {\r\n                if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {\r\n                    warnInvalidateIdOrName(cmptOption.id);\r\n                }\r\n                if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {\r\n                    warnInvalidateIdOrName(cmptOption.name);\r\n                }\r\n            }\r\n        });\r\n        var result = prepareResult(existings, existingIdIdxMap, mode);\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingById(result, existings, existingIdIdxMap, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode) {\r\n            mappingByName(result, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\r\n        }\r\n        else if (isReplaceAllMode) {\r\n            mappingInReplaceAllMode(result, newCmptOptions);\r\n        }\r\n        makeIdAndName(result);\r\n        return result;\r\n    }\r\n    function prepareResult(existings, existingIdIdxMap, mode) {\r\n        var result = [];\r\n        if (mode === 'replaceAll') {\r\n            return result;\r\n        }\r\n        for (var index = 0; index < existings.length; index++) {\r\n            var existing = existings[index];\r\n            if (existing && existing.id != null) {\r\n                existingIdIdxMap.set(existing.id, index);\r\n            }\r\n            result.push({\r\n                existing: (mode === 'replaceMerge' || isComponentIdInternal(existing))\r\n                    ? null\r\n                    : existing,\r\n                newOption: null,\r\n                keyInfo: null,\r\n                brandNew: null\r\n            });\r\n        }\r\n        return result;\r\n    }\r\n    function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.id == null) {\r\n                return;\r\n            }\r\n            var optionId = makeComparableKey(cmptOption.id);\r\n            var existingIdx = existingIdIdxMap.get(optionId);\r\n            if (existingIdx != null) {\r\n                var resultItem = result[existingIdx];\r\n                assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.existing = existings[existingIdx];\r\n                newCmptOptions[index] = null;\r\n            }\r\n        });\r\n    }\r\n    function mappingByName(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.name == null) {\r\n                return;\r\n            }\r\n            for (var i = 0; i < result.length; i++) {\r\n                var existing = result[i].existing;\r\n                if (!result[i].newOption\r\n                    && existing\r\n                    && (existing.id == null || cmptOption.id == null)\r\n                    && !isComponentIdInternal(cmptOption)\r\n                    && !isComponentIdInternal(existing)\r\n                    && keyExistAndEqual('name', existing, cmptOption)) {\r\n                    result[i].newOption = cmptOption;\r\n                    newCmptOptions[index] = null;\r\n                    return;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function mappingByIndex(result, newCmptOptions, brandNew) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            if (!cmptOption) {\r\n                return;\r\n            }\r\n            var resultItem;\r\n            var nextIdx = 0;\r\n            while ((resultItem = result[nextIdx])\r\n                && (resultItem.newOption\r\n                    || isComponentIdInternal(resultItem.existing)\r\n                    || (resultItem.existing\r\n                        && cmptOption.id != null\r\n                        && !keyExistAndEqual('id', cmptOption, resultItem.existing)))) {\r\n                nextIdx++;\r\n            }\r\n            if (resultItem) {\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.brandNew = brandNew;\r\n            }\r\n            else {\r\n                result.push({\r\n                    newOption: cmptOption,\r\n                    brandNew: brandNew,\r\n                    existing: null,\r\n                    keyInfo: null\r\n                });\r\n            }\r\n            nextIdx++;\r\n        });\r\n    }\r\n    function mappingInReplaceAllMode(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            result.push({\r\n                newOption: cmptOption,\r\n                brandNew: true,\r\n                existing: null,\r\n                keyInfo: null\r\n            });\r\n        });\r\n    }\r\n    function makeIdAndName(mapResult) {\r\n        var idMap = createHashMap();\r\n        each(mapResult, function (item) {\r\n            var existing = item.existing;\r\n            existing && idMap.set(existing.id, item);\r\n        });\r\n        each(mapResult, function (item) {\r\n            var opt = item.newOption;\r\n            assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\r\n            opt && opt.id != null && idMap.set(opt.id, item);\r\n            !item.keyInfo && (item.keyInfo = {});\r\n        });\r\n        each(mapResult, function (item, index) {\r\n            var existing = item.existing;\r\n            var opt = item.newOption;\r\n            var keyInfo = item.keyInfo;\r\n            if (!isObject(opt)) {\r\n                return;\r\n            }\r\n            keyInfo.name = opt.name != null\r\n                ? makeComparableKey(opt.name)\r\n                : existing\r\n                    ? existing.name\r\n                    : DUMMY_COMPONENT_NAME_PREFIX + index;\r\n            if (existing) {\r\n                keyInfo.id = makeComparableKey(existing.id);\r\n            }\r\n            else if (opt.id != null) {\r\n                keyInfo.id = makeComparableKey(opt.id);\r\n            }\r\n            else {\r\n                var idNum = 0;\r\n                do {\r\n                    keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\r\n                } while (idMap.get(keyInfo.id));\r\n            }\r\n            idMap.set(keyInfo.id, item);\r\n        });\r\n    }\r\n    function keyExistAndEqual(attr, obj1, obj2) {\r\n        var key1 = convertOptionIdName(obj1[attr], null);\r\n        var key2 = convertOptionIdName(obj2[attr], null);\r\n        return key1 != null && key2 != null && key1 === key2;\r\n    }\r\n    function makeComparableKey(val) {\r\n        if (__DEV__) {\r\n            if (val == null) {\r\n                throw new Error();\r\n            }\r\n        }\r\n        return convertOptionIdName(val, '');\r\n    }\r\n    function convertOptionIdName(idOrName, defaultValue) {\r\n        if (idOrName == null) {\r\n            return defaultValue;\r\n        }\r\n        var type = typeof idOrName;\r\n        return type === 'string'\r\n            ? idOrName\r\n            : (type === 'number' || isStringSafe(idOrName))\r\n                ? idOrName + ''\r\n                : defaultValue;\r\n    }\r\n    function warnInvalidateIdOrName(idOrName) {\r\n        if (__DEV__) {\r\n            warn('`' + idOrName + '` is invalid id or name. Must be a string or number.');\r\n        }\r\n    }\r\n    function isValidIdOrName(idOrName) {\r\n        return isStringSafe(idOrName) || isNumeric(idOrName);\r\n    }\r\n    function isNameSpecified(componentModel) {\r\n        var name = componentModel.name;\r\n        return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\r\n    }\r\n    function isComponentIdInternal(cmptOption) {\r\n        return cmptOption\r\n            && cmptOption.id != null\r\n            && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\r\n    }\r\n    function makeInternalComponentId(idSuffix) {\r\n        return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;\r\n    }\r\n    function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\r\n        each(mappingResult, function (item) {\r\n            var newOption = item.newOption;\r\n            if (isObject(newOption)) {\r\n                item.keyInfo.mainType = mainType;\r\n                item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\r\n            }\r\n        });\r\n    }\r\n    function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\r\n        var subType = newCmptOption.type\r\n            ? newCmptOption.type\r\n            : existComponent\r\n                ? existComponent.subType\r\n                : componentModelCtor.determineSubType(mainType, newCmptOption);\r\n        return subType;\r\n    }\r\n    function compressBatches(batchA, batchB) {\r\n        var mapA = {};\r\n        var mapB = {};\r\n        makeMap(batchA || [], mapA);\r\n        makeMap(batchB || [], mapB, mapA);\r\n        return [mapToArray(mapA), mapToArray(mapB)];\r\n        function makeMap(sourceBatch, map, otherMap) {\r\n            for (var i = 0, len = sourceBatch.length; i < len; i++) {\r\n                var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null);\r\n                if (seriesId == null) {\r\n                    return;\r\n                }\r\n                var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\r\n                var otherDataIndices = otherMap && otherMap[seriesId];\r\n                for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\r\n                    var dataIndex = dataIndices[j];\r\n                    if (otherDataIndices && otherDataIndices[dataIndex]) {\r\n                        otherDataIndices[dataIndex] = null;\r\n                    }\r\n                    else {\r\n                        (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        function mapToArray(map, isData) {\r\n            var result = [];\r\n            for (var i in map) {\r\n                if (map.hasOwnProperty(i) && map[i] != null) {\r\n                    if (isData) {\r\n                        result.push(+i);\r\n                    }\r\n                    else {\r\n                        var dataIndices = mapToArray(map[i], true);\r\n                        dataIndices.length && result.push({ seriesId: i, dataIndex: dataIndices });\r\n                    }\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function queryDataIndex(data, payload) {\r\n        if (payload.dataIndexInside != null) {\r\n            return payload.dataIndexInside;\r\n        }\r\n        else if (payload.dataIndex != null) {\r\n            return isArray(payload.dataIndex)\r\n                ? map(payload.dataIndex, function (value) {\r\n                    return data.indexOfRawIndex(value);\r\n                })\r\n                : data.indexOfRawIndex(payload.dataIndex);\r\n        }\r\n        else if (payload.name != null) {\r\n            return isArray(payload.name)\r\n                ? map(payload.name, function (value) {\r\n                    return data.indexOfName(value);\r\n                })\r\n                : data.indexOfName(payload.name);\r\n        }\r\n    }\r\n    function makeInner() {\r\n        var key = '__ec_inner_' + innerUniqueIndex++;\r\n        return function (hostObj) {\r\n            return hostObj[key] || (hostObj[key] = {});\r\n        };\r\n    }\r\n    var innerUniqueIndex = getRandomIdBase();\r\n    function parseFinder(ecModel, finderInput, opt) {\r\n        var finder;\r\n        if (isString(finderInput)) {\r\n            var obj = {};\r\n            obj[finderInput + 'Index'] = 0;\r\n            finder = obj;\r\n        }\r\n        else {\r\n            finder = finderInput;\r\n        }\r\n        var queryOptionMap = createHashMap();\r\n        var result = {};\r\n        var mainTypeSpecified = false;\r\n        each(finder, function (value, key) {\r\n            if (key === 'dataIndex' || key === 'dataIndexInside') {\r\n                result[key] = value;\r\n                return;\r\n            }\r\n            var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\r\n            var mainType = parsedKey[1];\r\n            var queryType = (parsedKey[2] || '').toLowerCase();\r\n            if (!mainType\r\n                || !queryType\r\n                || (opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0)) {\r\n                return;\r\n            }\r\n            mainTypeSpecified = mainTypeSpecified || !!mainType;\r\n            var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\r\n            queryOption[queryType] = value;\r\n        });\r\n        var defaultMainType = opt ? opt.defaultMainType : null;\r\n        if (!mainTypeSpecified && defaultMainType) {\r\n            queryOptionMap.set(defaultMainType, {});\r\n        }\r\n        queryOptionMap.each(function (queryOption, mainType) {\r\n            var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\r\n                useDefault: defaultMainType === mainType,\r\n                enableAll: (opt && opt.enableAll != null) ? opt.enableAll : true,\r\n                enableNone: (opt && opt.enableNone != null) ? opt.enableNone : true\r\n            });\r\n            result[mainType + 'Models'] = queryResult.models;\r\n            result[mainType + 'Model'] = queryResult.models[0];\r\n        });\r\n        return result;\r\n    }\r\n    var SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false };\r\n    var MULTIPLE_REFERRING = { useDefault: false, enableAll: true, enableNone: true };\r\n    function queryReferringComponents(ecModel, mainType, userOption, opt) {\r\n        opt = opt || SINGLE_REFERRING;\r\n        var indexOption = userOption.index;\r\n        var idOption = userOption.id;\r\n        var nameOption = userOption.name;\r\n        var result = {\r\n            models: null,\r\n            specified: indexOption != null || idOption != null || nameOption != null\r\n        };\r\n        if (!result.specified) {\r\n            var firstCmpt = void 0;\r\n            result.models = (opt.useDefault && (firstCmpt = ecModel.getComponent(mainType))) ? [firstCmpt] : [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'none' || indexOption === false) {\r\n            assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\r\n            result.models = [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'all') {\r\n            assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\r\n            indexOption = idOption = nameOption = null;\r\n        }\r\n        result.models = ecModel.queryComponents({\r\n            mainType: mainType,\r\n            index: indexOption,\r\n            id: idOption,\r\n            name: nameOption\r\n        });\r\n        return result;\r\n    }\r\n    function setAttribute(dom, key, value) {\r\n        dom.setAttribute\r\n            ? dom.setAttribute(key, value)\r\n            : (dom[key] = value);\r\n    }\r\n    function getAttribute(dom, key) {\r\n        return dom.getAttribute\r\n            ? dom.getAttribute(key)\r\n            : dom[key];\r\n    }\r\n    function getTooltipRenderMode(renderModeOption) {\r\n        if (renderModeOption === 'auto') {\r\n            return env.domSupported ? 'html' : 'richText';\r\n        }\r\n        else {\r\n            return renderModeOption || 'html';\r\n        }\r\n    }\r\n    function groupData(array, getKey) {\r\n        var buckets = createHashMap();\r\n        var keys = [];\r\n        each(array, function (item) {\r\n            var key = getKey(item);\r\n            (buckets.get(key)\r\n                || (keys.push(key), buckets.set(key, []))).push(item);\r\n        });\r\n        return {\r\n            keys: keys,\r\n            buckets: buckets\r\n        };\r\n    }\r\n    function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {\r\n        var isAutoPrecision = precision == null || precision === 'auto';\r\n        if (targetValue == null) {\r\n            return targetValue;\r\n        }\r\n        if (typeof targetValue === 'number') {\r\n            var value = interpolateNumber(sourceValue || 0, targetValue, percent);\r\n            return round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(sourceValue || 0), getPrecisionSafe(targetValue))\r\n                : precision);\r\n        }\r\n        else if (typeof targetValue === 'string') {\r\n            return percent < 1 ? sourceValue : targetValue;\r\n        }\r\n        else {\r\n            var interpolated = [];\r\n            var leftArr = sourceValue || [];\r\n            var rightArr = targetValue;\r\n            var length_1 = Math.max(leftArr.length, rightArr.length);\r\n            for (var i = 0; i < length_1; ++i) {\r\n                var info = data.getDimensionInfo(i);\r\n                if (info.type === 'ordinal') {\r\n                    interpolated[i] = (percent < 1 ? leftArr : rightArr)[i];\r\n                }\r\n                else {\r\n                    var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;\r\n                    var rightVal = rightArr[i];\r\n                    var value = leftArr == null\r\n                        ? targetValue[i]\r\n                        : interpolateNumber(leftVal, rightVal, percent);\r\n                    interpolated[i] = round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(leftVal), getPrecisionSafe(rightVal))\r\n                        : precision);\r\n                }\r\n            }\r\n            return interpolated;\r\n        }\r\n    }\n\n    var TYPE_DELIMITER = '.';\r\n    var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\r\n    var IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\r\n    function parseClassType(componentType) {\r\n        var ret = { main: '', sub: '' };\r\n        if (componentType) {\r\n            var typeArr = componentType.split(TYPE_DELIMITER);\r\n            ret.main = typeArr[0] || '';\r\n            ret.sub = typeArr[1] || '';\r\n        }\r\n        return ret;\r\n    }\r\n    function checkClassType(componentType) {\r\n        assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\r\n    }\r\n    function isExtendedClass(clz) {\r\n        return !!(clz && clz[IS_EXTENDED_CLASS]);\r\n    }\r\n    function enableClassExtend(rootClz, mandatoryMethods) {\r\n        rootClz.$constructor = rootClz;\r\n        rootClz.extend = function (proto) {\r\n            if (__DEV__) {\r\n                each(mandatoryMethods, function (method) {\r\n                    if (!proto[method]) {\r\n                        console.warn('Method `' + method + '` should be implemented'\r\n                            + (proto.type ? ' in ' + proto.type : '') + '.');\r\n                    }\r\n                });\r\n            }\r\n            var superClass = this;\r\n            function ExtendedClass() {\r\n                var args = [];\r\n                for (var _i = 0; _i < arguments.length; _i++) {\r\n                    args[_i] = arguments[_i];\r\n                }\r\n                if (!proto.$constructor) {\r\n                    if (!isESClass(superClass)) {\r\n                        superClass.apply(this, arguments);\r\n                    }\r\n                    else {\r\n                        var ins = createObject(ExtendedClass.prototype, new (superClass.bind.apply(superClass, __spreadArrays([void 0], args)))());\r\n                        return ins;\r\n                    }\r\n                }\r\n                else {\r\n                    proto.$constructor.apply(this, arguments);\r\n                }\r\n            }\r\n            ExtendedClass[IS_EXTENDED_CLASS] = true;\r\n            extend(ExtendedClass.prototype, proto);\r\n            ExtendedClass.extend = this.extend;\r\n            ExtendedClass.superCall = superCall;\r\n            ExtendedClass.superApply = superApply;\r\n            inherits(ExtendedClass, this);\r\n            ExtendedClass.superClass = superClass;\r\n            return ExtendedClass;\r\n        };\r\n    }\r\n    function isESClass(fn) {\r\n        return typeof fn === 'function'\r\n            && /^class\\s/.test(Function.prototype.toString.call(fn));\r\n    }\r\n    function mountExtend(SubClz, SupperClz) {\r\n        SubClz.extend = SupperClz.extend;\r\n    }\r\n    var classBase = Math.round(Math.random() * 10);\r\n    function enableClassCheck(target) {\r\n        var classAttr = ['__\\0is_clz', classBase++].join('_');\r\n        target.prototype[classAttr] = true;\r\n        if (__DEV__) {\r\n            assert(!target.isInstance, 'The method \"is\" can not be defined.');\r\n        }\r\n        target.isInstance = function (obj) {\r\n            return !!(obj && obj[classAttr]);\r\n        };\r\n    }\r\n    function superCall(context, methodName) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function superApply(context, methodName, args) {\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function enableClassManagement(target, options) {\r\n        options = options || {};\r\n        var storage = {};\r\n        target.registerClass = function (clz) {\r\n            var componentFullType = clz.type || clz.prototype.type;\r\n            if (componentFullType) {\r\n                checkClassType(componentFullType);\r\n                clz.prototype.type = componentFullType;\r\n                var componentTypeInfo = parseClassType(componentFullType);\r\n                if (!componentTypeInfo.sub) {\r\n                    if (__DEV__) {\r\n                        if (storage[componentTypeInfo.main]) {\r\n                            console.warn(componentTypeInfo.main + ' exists.');\r\n                        }\r\n                    }\r\n                    storage[componentTypeInfo.main] = clz;\r\n                }\r\n                else if (componentTypeInfo.sub !== IS_CONTAINER) {\r\n                    var container = makeContainer(componentTypeInfo);\r\n                    container[componentTypeInfo.sub] = clz;\r\n                }\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClass = function (mainType, subType, throwWhenNotFound) {\r\n            var clz = storage[mainType];\r\n            if (clz && clz[IS_CONTAINER]) {\r\n                clz = subType ? clz[subType] : null;\r\n            }\r\n            if (throwWhenNotFound && !clz) {\r\n                throw new Error(!subType\r\n                    ? mainType + '.' + 'type should be specified.'\r\n                    : 'Component ' + mainType + '.' + (subType || '') + ' not exists. Load it first.');\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClassesByMainType = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var result = [];\r\n            var obj = storage[componentTypeInfo.main];\r\n            if (obj && obj[IS_CONTAINER]) {\r\n                each(obj, function (o, type) {\r\n                    type !== IS_CONTAINER && result.push(o);\r\n                });\r\n            }\r\n            else {\r\n                result.push(obj);\r\n            }\r\n            return result;\r\n        };\r\n        target.hasClass = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            return !!storage[componentTypeInfo.main];\r\n        };\r\n        target.getAllClassMainTypes = function () {\r\n            var types = [];\r\n            each(storage, function (obj, type) {\r\n                types.push(type);\r\n            });\r\n            return types;\r\n        };\r\n        target.hasSubTypes = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var obj = storage[componentTypeInfo.main];\r\n            return obj && obj[IS_CONTAINER];\r\n        };\r\n        function makeContainer(componentTypeInfo) {\r\n            var container = storage[componentTypeInfo.main];\r\n            if (!container || !container[IS_CONTAINER]) {\r\n                container = storage[componentTypeInfo.main] = {};\r\n                container[IS_CONTAINER] = true;\r\n            }\r\n            return container;\r\n        }\r\n        if (options.registerWhenExtend) {\r\n            var originalExtend_1 = target.extend;\r\n            if (originalExtend_1) {\r\n                target.extend = function (proto) {\r\n                    var ExtendedClass = originalExtend_1.call(this, proto);\r\n                    return target.registerClass(ExtendedClass);\r\n                };\r\n            }\r\n        }\r\n    }\n\n    function makeStyleMapper(properties, ignoreParent) {\r\n        for (var i = 0; i < properties.length; i++) {\r\n            if (!properties[i][1]) {\r\n                properties[i][1] = properties[i][0];\r\n            }\r\n        }\r\n        ignoreParent = ignoreParent || false;\r\n        return function (model, excludes, includes) {\r\n            var style = {};\r\n            for (var i = 0; i < properties.length; i++) {\r\n                var propName = properties[i][1];\r\n                if ((excludes && indexOf(excludes, propName) >= 0)\r\n                    || (includes && indexOf(includes, propName) < 0)) {\r\n                    continue;\r\n                }\r\n                var val = model.getShallow(propName, ignoreParent);\r\n                if (val != null) {\r\n                    style[properties[i][0]] = val;\r\n                }\r\n            }\r\n            return style;\r\n        };\r\n    }\n\n    var AREA_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['opacity'],\r\n        ['shadowColor']\r\n    ];\r\n    var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\r\n    var AreaStyleMixin = (function () {\r\n        function AreaStyleMixin() {\r\n        }\r\n        AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\r\n            return getAreaStyle(this, excludes, includes);\r\n        };\r\n        return AreaStyleMixin;\r\n    }());\n\n    var getECData = makeInner();\n\n    var _highlightNextDigit = 1;\r\n    var _highlightKeyMap = {};\r\n    var getSavedStates = makeInner();\r\n    var HOVER_STATE_NORMAL = 0;\r\n    var HOVER_STATE_BLUR = 1;\r\n    var HOVER_STATE_EMPHASIS = 2;\r\n    var SPECIAL_STATES = ['emphasis', 'blur', 'select'];\r\n    var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\r\n    var Z2_EMPHASIS_LIFT = 10;\r\n    var Z2_SELECT_LIFT = 9;\r\n    var HIGHLIGHT_ACTION_TYPE = 'highlight';\r\n    var DOWNPLAY_ACTION_TYPE = 'downplay';\r\n    var SELECT_ACTION_TYPE = 'select';\r\n    var UNSELECT_ACTION_TYPE = 'unselect';\r\n    var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\r\n    function hasFillOrStroke(fillOrStroke) {\r\n        return fillOrStroke != null && fillOrStroke !== 'none';\r\n    }\r\n    var liftedColorCache = new LRU(100);\r\n    function liftColor(color$1) {\r\n        if (typeof color$1 !== 'string') {\r\n            return color$1;\r\n        }\r\n        var liftedColor = liftedColorCache.get(color$1);\r\n        if (!liftedColor) {\r\n            liftedColor = lift(color$1, -0.1);\r\n            liftedColorCache.put(color$1, liftedColor);\r\n        }\r\n        return liftedColor;\r\n    }\r\n    function doChangeHoverState(el, stateName, hoverStateEnum) {\r\n        if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {\r\n            el.onHoverStateChange(stateName);\r\n        }\r\n        el.hoverState = hoverStateEnum;\r\n    }\r\n    function singleEnterEmphasis(el) {\r\n        doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\r\n    }\r\n    function singleLeaveEmphasis(el) {\r\n        if (el.hoverState === HOVER_STATE_EMPHASIS) {\r\n            doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n        }\r\n    }\r\n    function singleEnterBlur(el) {\r\n        doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\r\n    }\r\n    function singleLeaveBlur(el) {\r\n        if (el.hoverState === HOVER_STATE_BLUR) {\r\n            doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n        }\r\n    }\r\n    function singleEnterSelect(el) {\r\n        el.selected = true;\r\n    }\r\n    function singleLeaveSelect(el) {\r\n        el.selected = false;\r\n    }\r\n    function updateElementState(el, updater, commonParam) {\r\n        updater(el, commonParam);\r\n    }\r\n    function traverseUpdateState(el, updater, commonParam) {\r\n        updateElementState(el, updater, commonParam);\r\n        el.isGroup && el.traverse(function (child) {\r\n            updateElementState(child, updater, commonParam);\r\n        });\r\n    }\r\n    function setStatesFlag(el, stateName) {\r\n        switch (stateName) {\r\n            case 'emphasis':\r\n                el.hoverState = HOVER_STATE_EMPHASIS;\r\n                break;\r\n            case 'normal':\r\n                el.hoverState = HOVER_STATE_NORMAL;\r\n                break;\r\n            case 'blur':\r\n                el.hoverState = HOVER_STATE_BLUR;\r\n                break;\r\n            case 'select':\r\n                el.selected = true;\r\n        }\r\n    }\r\n    function getFromStateStyle(el, props, toStateName, defaultValue) {\r\n        var style = el.style;\r\n        var fromState = {};\r\n        for (var i = 0; i < props.length; i++) {\r\n            var propName = props[i];\r\n            var val = style[propName];\r\n            fromState[propName] = val == null ? (defaultValue && defaultValue[propName]) : val;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.__fromStateTransition\r\n                && animator.__fromStateTransition.indexOf(toStateName) < 0\r\n                && animator.targetName === 'style') {\r\n                animator.saveFinalToTarget(fromState, props);\r\n            }\r\n        }\r\n        return fromState;\r\n    }\r\n    function createEmphasisDefaultState(el, stateName, targetStates, state) {\r\n        var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\r\n        var cloned = false;\r\n        if (el instanceof Path) {\r\n            var store = getSavedStates(el);\r\n            var fromFill = hasSelect ? (store.selectFill || store.normalFill) : store.normalFill;\r\n            var fromStroke = hasSelect ? (store.selectStroke || store.normalStroke) : store.normalStroke;\r\n            if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\r\n                state = state || {};\r\n                var emphasisStyle = state.style || {};\r\n                if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\r\n                    cloned = true;\r\n                    state = extend({}, state);\r\n                    emphasisStyle = extend({}, emphasisStyle);\r\n                    emphasisStyle.fill = liftColor(fromFill);\r\n                }\r\n                else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\r\n                    if (!cloned) {\r\n                        state = extend({}, state);\r\n                        emphasisStyle = extend({}, emphasisStyle);\r\n                    }\r\n                    emphasisStyle.stroke = liftColor(fromStroke);\r\n                }\r\n                state.style = emphasisStyle;\r\n            }\r\n        }\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                if (!cloned) {\r\n                    state = extend({}, state);\r\n                }\r\n                var z2EmphasisLift = el.z2EmphasisLift;\r\n                state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createSelectDefaultState(el, stateName, state) {\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                state = extend({}, state);\r\n                var z2SelectLift = el.z2SelectLift;\r\n                state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createBlurDefaultState(el, stateName, state) {\r\n        var hasBlur = indexOf(el.currentStates, stateName) >= 0;\r\n        var currentOpacity = el.style.opacity;\r\n        var fromState = !hasBlur\r\n            ? getFromStateStyle(el, ['opacity'], stateName, {\r\n                opacity: 1\r\n            })\r\n            : null;\r\n        state = state || {};\r\n        var blurStyle = state.style || {};\r\n        if (blurStyle.opacity == null) {\r\n            state = extend({}, state);\r\n            blurStyle = extend({\r\n                opacity: hasBlur ? currentOpacity : (fromState.opacity * 0.1)\r\n            }, blurStyle);\r\n            state.style = blurStyle;\r\n        }\r\n        return state;\r\n    }\r\n    function elementStateProxy(stateName, targetStates) {\r\n        var state = this.states[stateName];\r\n        if (this.style) {\r\n            if (stateName === 'emphasis') {\r\n                return createEmphasisDefaultState(this, stateName, targetStates, state);\r\n            }\r\n            else if (stateName === 'blur') {\r\n                return createBlurDefaultState(this, stateName, state);\r\n            }\r\n            else if (stateName === 'select') {\r\n                return createSelectDefaultState(this, stateName, state);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function setDefaultStateProxy(el) {\r\n        el.stateProxy = elementStateProxy;\r\n        var textContent = el.getTextContent();\r\n        var textGuide = el.getTextGuideLine();\r\n        if (textContent) {\r\n            textContent.stateProxy = elementStateProxy;\r\n        }\r\n        if (textGuide) {\r\n            textGuide.stateProxy = elementStateProxy;\r\n        }\r\n    }\r\n    function enterEmphasisWhenMouseOver(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasisWhenMouseOut(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterEmphasis(el, highlightDigit) {\r\n        el.__highByOuter |= 1 << (highlightDigit || 0);\r\n        traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasis(el, highlightDigit) {\r\n        !(el.__highByOuter &= ~(1 << (highlightDigit || 0)))\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterBlur(el) {\r\n        traverseUpdateState(el, singleEnterBlur);\r\n    }\r\n    function leaveBlur(el) {\r\n        traverseUpdateState(el, singleLeaveBlur);\r\n    }\r\n    function enterSelect(el) {\r\n        traverseUpdateState(el, singleEnterSelect);\r\n    }\r\n    function leaveSelect(el) {\r\n        traverseUpdateState(el, singleLeaveSelect);\r\n    }\r\n    function shouldSilent(el, e) {\r\n        return el.__highDownSilentOnTouch && e.zrByTouch;\r\n    }\r\n    function allLeaveBlur(api) {\r\n        var model = api.getModel();\r\n        model.eachComponent(function (componentType, componentModel) {\r\n            var view = componentType === 'series'\r\n                ? api.getViewOfSeriesModel(componentModel)\r\n                : api.getViewOfComponentModel(componentModel);\r\n            view.group.traverse(function (child) {\r\n                singleLeaveBlur(child);\r\n            });\r\n        });\r\n    }\r\n    function toggleSeriesBlurState(targetSeriesIndex, focus, blurScope, api, isBlur) {\r\n        var ecModel = api.getModel();\r\n        blurScope = blurScope || 'coordinateSystem';\r\n        function leaveBlurOfIndices(data, dataIndices) {\r\n            for (var i = 0; i < dataIndices.length; i++) {\r\n                var itemEl = data.getItemGraphicEl(dataIndices[i]);\r\n                itemEl && leaveBlur(itemEl);\r\n            }\r\n        }\r\n        if (!isBlur) {\r\n            allLeaveBlur(api);\r\n            return;\r\n        }\r\n        if (targetSeriesIndex == null) {\r\n            return;\r\n        }\r\n        if (!focus || focus === 'none') {\r\n            return;\r\n        }\r\n        var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\r\n        var targetCoordSys = targetSeriesModel.coordinateSystem;\r\n        if (targetCoordSys && targetCoordSys.master) {\r\n            targetCoordSys = targetCoordSys.master;\r\n        }\r\n        var blurredSeries = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var sameSeries = targetSeriesModel === seriesModel;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && coordSys.master) {\r\n                coordSys = coordSys.master;\r\n            }\r\n            var sameCoordSys = coordSys && targetCoordSys\r\n                ? coordSys === targetCoordSys\r\n                : sameSeries;\r\n            if (!(blurScope === 'series' && !sameSeries\r\n                || blurScope === 'coordinateSystem' && !sameCoordSys\r\n                || focus === 'series' && sameSeries)) {\r\n                var view = api.getViewOfSeriesModel(seriesModel);\r\n                view.group.traverse(function (child) {\r\n                    singleEnterBlur(child);\r\n                });\r\n                if (isArrayLike(focus)) {\r\n                    leaveBlurOfIndices(seriesModel.getData(), focus);\r\n                }\r\n                else if (isObject(focus)) {\r\n                    var dataTypes = keys(focus);\r\n                    for (var d = 0; d < dataTypes.length; d++) {\r\n                        leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\r\n                    }\r\n                }\r\n                blurredSeries.push(seriesModel);\r\n            }\r\n        });\r\n        ecModel.eachComponent(function (componentType, componentModel) {\r\n            if (componentType === 'series') {\r\n                return;\r\n            }\r\n            var view = api.getViewOfComponentModel(componentModel);\r\n            if (view && view.blurSeries) {\r\n                view.blurSeries(blurredSeries, ecModel);\r\n            }\r\n        });\r\n    }\r\n    function toggleSeriesBlurStateFromPayload(seriesModel, payload, api) {\r\n        if (!isHighDownPayload(payload)) {\r\n            return;\r\n        }\r\n        var isHighlight = payload.type === HIGHLIGHT_ACTION_TYPE;\r\n        var seriesIndex = seriesModel.seriesIndex;\r\n        var data = seriesModel.getData(payload.dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\r\n        var el = data.getItemGraphicEl(dataIndex);\r\n        if (!el) {\r\n            var count = data.count();\r\n            var current = 0;\r\n            while (!el && current < count) {\r\n                el = data.getItemGraphicEl(current++);\r\n            }\r\n        }\r\n        if (el) {\r\n            var ecData = getECData(el);\r\n            toggleSeriesBlurState(seriesIndex, ecData.focus, ecData.blurScope, api, isHighlight);\r\n        }\r\n        else {\r\n            var focus_1 = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            if (focus_1 != null) {\r\n                toggleSeriesBlurState(seriesIndex, focus_1, blurScope, api, isHighlight);\r\n            }\r\n        }\r\n    }\r\n    function toggleSelectionFromPayload(seriesModel, payload, api) {\r\n        if (!(isSelectChangePayload(payload))) {\r\n            return;\r\n        }\r\n        var dataType = payload.dataType;\r\n        var data = seriesModel.getData(dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        if (!isArray(dataIndex)) {\r\n            dataIndex = [dataIndex];\r\n        }\r\n        seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect'\r\n            : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\r\n    }\r\n    function updateSeriesElementSelection(seriesModel) {\r\n        var allData = seriesModel.getAllData();\r\n        each(allData, function (_a) {\r\n            var data = _a.data, type = _a.type;\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\r\n            });\r\n        });\r\n    }\r\n    function getAllSelectedIndices(ecModel) {\r\n        var ret = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var allData = seriesModel.getAllData();\r\n            each(allData, function (_a) {\r\n                var data = _a.data, type = _a.type;\r\n                var dataIndices = seriesModel.getSelectedDataIndices();\r\n                if (dataIndices.length > 0) {\r\n                    var item = {\r\n                        dataIndex: dataIndices,\r\n                        seriesIndex: seriesModel.seriesIndex\r\n                    };\r\n                    if (type != null) {\r\n                        item.dataType = type;\r\n                    }\r\n                    ret.push(item);\r\n                }\r\n            });\r\n        });\r\n        return ret;\r\n    }\r\n    function enableHoverEmphasis(el, focus, blurScope) {\r\n        setAsHighDownDispatcher(el, true);\r\n        traverseUpdateState(el, setDefaultStateProxy);\r\n        enableHoverFocus(el, focus, blurScope);\r\n    }\r\n    function enableHoverFocus(el, focus, blurScope) {\r\n        var ecData = getECData(el);\r\n        if (focus != null) {\r\n            ecData.focus = focus;\r\n            ecData.blurScope = blurScope;\r\n        }\r\n        else if (ecData.focus) {\r\n            ecData.focus = null;\r\n        }\r\n    }\r\n    var OTHER_STATES = ['emphasis', 'blur', 'select'];\r\n    var defaultStyleGetterMap = {\r\n        itemStyle: 'getItemStyle',\r\n        lineStyle: 'getLineStyle',\r\n        areaStyle: 'getAreaStyle'\r\n    };\r\n    function setStatesStylesFromModel(el, itemModel, styleType, getter) {\r\n        styleType = styleType || 'itemStyle';\r\n        for (var i = 0; i < OTHER_STATES.length; i++) {\r\n            var stateName = OTHER_STATES[i];\r\n            var model = itemModel.getModel([stateName, styleType]);\r\n            var state = el.ensureState(stateName);\r\n            state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();\r\n        }\r\n    }\r\n    function setAsHighDownDispatcher(el, asDispatcher) {\r\n        var disable = asDispatcher === false;\r\n        var extendedEl = el;\r\n        if (el.highDownSilentOnTouch) {\r\n            extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\r\n        }\r\n        if (!disable || extendedEl.__highDownDispatcher) {\r\n            extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\r\n            extendedEl.__highDownDispatcher = !disable;\r\n        }\r\n    }\r\n    function isHighDownDispatcher(el) {\r\n        return !!(el && el.__highDownDispatcher);\r\n    }\r\n    function getHighlightDigit(highlightKey) {\r\n        var highlightDigit = _highlightKeyMap[highlightKey];\r\n        if (highlightDigit == null && _highlightNextDigit <= 32) {\r\n            highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\r\n        }\r\n        return highlightDigit;\r\n    }\r\n    function isSelectChangePayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === SELECT_ACTION_TYPE\r\n            || payloadType === UNSELECT_ACTION_TYPE\r\n            || payloadType === TOGGLE_SELECT_ACTION_TYPE;\r\n    }\r\n    function isHighDownPayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === HIGHLIGHT_ACTION_TYPE\r\n            || payloadType === DOWNPLAY_ACTION_TYPE;\r\n    }\r\n    function savePathStates(el) {\r\n        var store = getSavedStates(el);\r\n        store.normalFill = el.style.fill;\r\n        store.normalStroke = el.style.stroke;\r\n        var selectState = el.states.select || {};\r\n        store.selectFill = (selectState.style && selectState.style.fill) || null;\r\n        store.selectStroke = (selectState.style && selectState.style.stroke) || null;\r\n    }\n\n    var mathMax$4 = Math.max;\r\n    var mathMin$4 = Math.min;\r\n    var _customShapeMap = {};\r\n    function extendShape(opts) {\r\n        return Path.extend(opts);\r\n    }\r\n    var extendPathFromString = extendFromString;\r\n    function extendPath(pathData, opts) {\r\n        return extendPathFromString(pathData, opts);\r\n    }\r\n    function registerShape(name, ShapeClass) {\r\n        _customShapeMap[name] = ShapeClass;\r\n    }\r\n    function getShapeClass(name) {\r\n        if (_customShapeMap.hasOwnProperty(name)) {\r\n            return _customShapeMap[name];\r\n        }\r\n    }\r\n    function makePath(pathData, opts, rect, layout) {\r\n        var path = createFromString(pathData, opts);\r\n        if (rect) {\r\n            if (layout === 'center') {\r\n                rect = centerGraphic(rect, path.getBoundingRect());\r\n            }\r\n            resizePath(path, rect);\r\n        }\r\n        return path;\r\n    }\r\n    function makeImage(imageUrl, rect, layout) {\r\n        var zrImg = new ZRImage({\r\n            style: {\r\n                image: imageUrl,\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            },\r\n            onload: function (img) {\r\n                if (layout === 'center') {\r\n                    var boundingRect = {\r\n                        width: img.width,\r\n                        height: img.height\r\n                    };\r\n                    zrImg.setStyle(centerGraphic(rect, boundingRect));\r\n                }\r\n            }\r\n        });\r\n        return zrImg;\r\n    }\r\n    function centerGraphic(rect, boundingRect) {\r\n        var aspect = boundingRect.width / boundingRect.height;\r\n        var width = rect.height * aspect;\r\n        var height;\r\n        if (width <= rect.width) {\r\n            height = rect.height;\r\n        }\r\n        else {\r\n            width = rect.width;\r\n            height = width / aspect;\r\n        }\r\n        var cx = rect.x + rect.width / 2;\r\n        var cy = rect.y + rect.height / 2;\r\n        return {\r\n            x: cx - width / 2,\r\n            y: cy - height / 2,\r\n            width: width,\r\n            height: height\r\n        };\r\n    }\r\n    var mergePath$1 = mergePath;\r\n    function resizePath(path, rect) {\r\n        if (!path.applyTransform) {\r\n            return;\r\n        }\r\n        var pathRect = path.getBoundingRect();\r\n        var m = pathRect.calculateTransform(rect);\r\n        path.applyTransform(m);\r\n    }\r\n    function subPixelOptimizeLine$1(param) {\r\n        subPixelOptimizeLine(param.shape, param.shape, param.style);\r\n        return param;\r\n    }\r\n    function subPixelOptimizeRect$1(param) {\r\n        subPixelOptimizeRect(param.shape, param.shape, param.style);\r\n        return param;\r\n    }\r\n    var subPixelOptimize$1 = subPixelOptimize;\r\n    function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\r\n        var isFrom = false;\r\n        var removeOpt;\r\n        if (typeof dataIndex === 'function') {\r\n            during = cb;\r\n            cb = dataIndex;\r\n            dataIndex = null;\r\n        }\r\n        else if (isObject(dataIndex)) {\r\n            cb = dataIndex.cb;\r\n            during = dataIndex.during;\r\n            isFrom = dataIndex.isFrom;\r\n            removeOpt = dataIndex.removeOpt;\r\n            dataIndex = dataIndex.dataIndex;\r\n        }\r\n        var isUpdate = animationType === 'update';\r\n        var isRemove = animationType === 'remove';\r\n        var animationPayload;\r\n        if (animatableModel && animatableModel.ecModel) {\r\n            var updatePayload = animatableModel.ecModel.getUpdatePayload();\r\n            animationPayload = (updatePayload && updatePayload.animation);\r\n        }\r\n        var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\r\n        if (!isRemove) {\r\n            el.stopAnimation('remove');\r\n        }\r\n        if (animationEnabled) {\r\n            var duration = void 0;\r\n            var animationEasing = void 0;\r\n            var animationDelay = void 0;\r\n            if (animationPayload) {\r\n                duration = animationPayload.duration || 0;\r\n                animationEasing = animationPayload.easing || 'cubicOut';\r\n                animationDelay = animationPayload.delay || 0;\r\n            }\r\n            else if (isRemove) {\r\n                removeOpt = removeOpt || {};\r\n                duration = retrieve2(removeOpt.duration, 200);\r\n                animationEasing = retrieve2(removeOpt.easing, 'cubicOut');\r\n                animationDelay = 0;\r\n            }\r\n            else {\r\n                duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\r\n                animationEasing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\r\n                animationDelay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\r\n            }\r\n            if (typeof animationDelay === 'function') {\r\n                animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams\r\n                    ? animatableModel.getAnimationDelayParams(el, dataIndex)\r\n                    : null);\r\n            }\r\n            if (typeof duration === 'function') {\r\n                duration = duration(dataIndex);\r\n            }\r\n            duration > 0\r\n                ? (isFrom\r\n                    ? el.animateFrom(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        scope: animationType,\r\n                        during: during\r\n                    })\r\n                    : el.animateTo(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        setToFinal: true,\r\n                        scope: animationType,\r\n                        during: during\r\n                    }))\r\n                : (el.stopAnimation(),\r\n                    !isFrom && el.attr(props),\r\n                    cb && cb());\r\n        }\r\n        else {\r\n            el.stopAnimation();\r\n            !isFrom && el.attr(props);\r\n            during && during(1);\r\n            cb && cb();\r\n        }\r\n    }\r\n    function updateProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function initProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('init', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function removeElement(el, props, animatableModel, dataIndex, cb, during) {\r\n        if (isElementRemoved(el)) {\r\n            return;\r\n        }\r\n        animateOrSetProps('remove', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function fadeOutDisplayable(el, animatableModel, dataIndex, done) {\r\n        el.removeTextContent();\r\n        el.removeTextGuideLine();\r\n        removeElement(el, {\r\n            style: {\r\n                opacity: 0\r\n            }\r\n        }, animatableModel, dataIndex, done);\r\n    }\r\n    function removeElementWithFadeOut(el, animatableModel, dataIndex) {\r\n        function doRemove() {\r\n            el.parent && el.parent.remove(el);\r\n        }\r\n        if (!el.isGroup) {\r\n            fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\r\n        }\r\n        else {\r\n            el.traverse(function (disp) {\r\n                if (!disp.isGroup) {\r\n                    fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function isElementRemoved(el) {\r\n        if (!el.__zr) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.scope === 'remove') {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function getTransform(target, ancestor) {\r\n        var mat = identity([]);\r\n        while (target && target !== ancestor) {\r\n            mul$1(mat, target.getLocalTransform(), mat);\r\n            target = target.parent;\r\n        }\r\n        return mat;\r\n    }\r\n    function applyTransform$1(target, transform, invert$1) {\r\n        if (transform && !isArrayLike(transform)) {\r\n            transform = Transformable.getLocalTransform(transform);\r\n        }\r\n        if (invert$1) {\r\n            transform = invert([], transform);\r\n        }\r\n        return applyTransform([], target, transform);\r\n    }\r\n    function transformDirection(direction, transform, invert) {\r\n        var hBase = (transform[4] === 0 || transform[5] === 0 || transform[0] === 0)\r\n            ? 1 : Math.abs(2 * transform[4] / transform[0]);\r\n        var vBase = (transform[4] === 0 || transform[5] === 0 || transform[2] === 0)\r\n            ? 1 : Math.abs(2 * transform[4] / transform[2]);\r\n        var vertex = [\r\n            direction === 'left' ? -hBase : direction === 'right' ? hBase : 0,\r\n            direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0\r\n        ];\r\n        vertex = applyTransform$1(vertex, transform, invert);\r\n        return Math.abs(vertex[0]) > Math.abs(vertex[1])\r\n            ? (vertex[0] > 0 ? 'right' : 'left')\r\n            : (vertex[1] > 0 ? 'bottom' : 'top');\r\n    }\r\n    function isNotGroup(el) {\r\n        return !el.isGroup;\r\n    }\r\n    function isPath(el) {\r\n        return el.shape != null;\r\n    }\r\n    function groupTransition(g1, g2, animatableModel) {\r\n        if (!g1 || !g2) {\r\n            return;\r\n        }\r\n        function getElMap(g) {\r\n            var elMap = {};\r\n            g.traverse(function (el) {\r\n                if (isNotGroup(el) && el.anid) {\r\n                    elMap[el.anid] = el;\r\n                }\r\n            });\r\n            return elMap;\r\n        }\r\n        function getAnimatableProps(el) {\r\n            var obj = {\r\n                x: el.x,\r\n                y: el.y,\r\n                rotation: el.rotation\r\n            };\r\n            if (isPath(el)) {\r\n                obj.shape = extend({}, el.shape);\r\n            }\r\n            return obj;\r\n        }\r\n        var elMap1 = getElMap(g1);\r\n        g2.traverse(function (el) {\r\n            if (isNotGroup(el) && el.anid) {\r\n                var oldEl = elMap1[el.anid];\r\n                if (oldEl) {\r\n                    var newProp = getAnimatableProps(el);\r\n                    el.attr(getAnimatableProps(oldEl));\r\n                    updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function clipPointsByRect(points, rect) {\r\n        return map(points, function (point) {\r\n            var x = point[0];\r\n            x = mathMax$4(x, rect.x);\r\n            x = mathMin$4(x, rect.x + rect.width);\r\n            var y = point[1];\r\n            y = mathMax$4(y, rect.y);\r\n            y = mathMin$4(y, rect.y + rect.height);\r\n            return [x, y];\r\n        });\r\n    }\r\n    function clipRectByRect(targetRect, rect) {\r\n        var x = mathMax$4(targetRect.x, rect.x);\r\n        var x2 = mathMin$4(targetRect.x + targetRect.width, rect.x + rect.width);\r\n        var y = mathMax$4(targetRect.y, rect.y);\r\n        var y2 = mathMin$4(targetRect.y + targetRect.height, rect.y + rect.height);\r\n        if (x2 >= x && y2 >= y) {\r\n            return {\r\n                x: x,\r\n                y: y,\r\n                width: x2 - x,\r\n                height: y2 - y\r\n            };\r\n        }\r\n    }\r\n    function createIcon(iconStr, opt, rect) {\r\n        var innerOpts = extend({ rectHover: true }, opt);\r\n        var style = innerOpts.style = { strokeNoScale: true };\r\n        rect = rect || { x: -1, y: -1, width: 2, height: 2 };\r\n        if (iconStr) {\r\n            return iconStr.indexOf('image://') === 0\r\n                ? (style.image = iconStr.slice(8),\r\n                    defaults(style, rect),\r\n                    new ZRImage(innerOpts))\r\n                : (makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center'));\r\n        }\r\n    }\r\n    function linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\r\n        for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\r\n            var p = points[i];\r\n            if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\r\n                return true;\r\n            }\r\n            p2 = p;\r\n        }\r\n    }\r\n    function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\r\n        var mx = a2x - a1x;\r\n        var my = a2y - a1y;\r\n        var nx = b2x - b1x;\r\n        var ny = b2y - b1y;\r\n        var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\r\n        if (nearZero(nmCrossProduct)) {\r\n            return false;\r\n        }\r\n        var b1a1x = a1x - b1x;\r\n        var b1a1y = a1y - b1y;\r\n        var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\r\n        if (q < 0 || q > 1) {\r\n            return false;\r\n        }\r\n        var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\r\n        if (p < 0 || p > 1) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function crossProduct2d(x1, y1, x2, y2) {\r\n        return x1 * y2 - x2 * y1;\r\n    }\r\n    function nearZero(val) {\r\n        return val <= (1e-6) && val >= -(1e-6);\r\n    }\r\n    registerShape('circle', Circle);\r\n    registerShape('ellipse', Ellipse);\r\n    registerShape('sector', Sector);\r\n    registerShape('ring', Ring);\r\n    registerShape('polygon', Polygon);\r\n    registerShape('polyline', Polyline);\r\n    registerShape('rect', Rect);\r\n    registerShape('line', Line);\r\n    registerShape('bezierCurve', BezierCurve);\r\n    registerShape('arc', Arc);\n\n    var graphic = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        extendShape: extendShape,\n        extendPath: extendPath,\n        registerShape: registerShape,\n        getShapeClass: getShapeClass,\n        makePath: makePath,\n        makeImage: makeImage,\n        mergePath: mergePath$1,\n        resizePath: resizePath,\n        subPixelOptimizeLine: subPixelOptimizeLine$1,\n        subPixelOptimizeRect: subPixelOptimizeRect$1,\n        subPixelOptimize: subPixelOptimize$1,\n        updateProps: updateProps,\n        initProps: initProps,\n        removeElement: removeElement,\n        removeElementWithFadeOut: removeElementWithFadeOut,\n        isElementRemoved: isElementRemoved,\n        getTransform: getTransform,\n        applyTransform: applyTransform$1,\n        transformDirection: transformDirection,\n        groupTransition: groupTransition,\n        clipPointsByRect: clipPointsByRect,\n        clipRectByRect: clipRectByRect,\n        createIcon: createIcon,\n        linePolygonIntersect: linePolygonIntersect,\n        lineLineIntersect: lineLineIntersect,\n        Group: Group,\n        Image: ZRImage,\n        Text: ZRText,\n        Circle: Circle,\n        Ellipse: Ellipse,\n        Sector: Sector,\n        Ring: Ring,\n        Polygon: Polygon,\n        Polyline: Polyline,\n        Rect: Rect,\n        Line: Line,\n        BezierCurve: BezierCurve,\n        Arc: Arc,\n        IncrementalDisplayable: IncrementalDisplayble,\n        CompoundPath: CompoundPath,\n        LinearGradient: LinearGradient,\n        RadialGradient: RadialGradient,\n        BoundingRect: BoundingRect,\n        OrientedBoundingRect: OrientedBoundingRect,\n        Point: Point,\n        Path: Path\n    });\n\n    var EMPTY_OBJ = {};\r\n    function setLabelText(label, labelTexts) {\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var text = labelTexts[stateName];\r\n            var state = label.ensureState(stateName);\r\n            state.style = state.style || {};\r\n            state.style.text = text;\r\n        }\r\n        var oldStates = label.currentStates.slice();\r\n        label.clearStates(true);\r\n        label.setStyle({ text: labelTexts.normal });\r\n        label.useStates(oldStates, true);\r\n    }\r\n    function getLabelText(opt, stateModels, overrideValue) {\r\n        var labelFetcher = opt.labelFetcher;\r\n        var labelDataIndex = opt.labelDataIndex;\r\n        var labelDimIndex = opt.labelDimIndex;\r\n        var normalModel = stateModels.normal;\r\n        var baseText;\r\n        if (labelFetcher) {\r\n            baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), overrideValue != null ? {\r\n                value: overrideValue\r\n            } : null);\r\n        }\r\n        if (baseText == null) {\r\n            baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, overrideValue) : opt.defaultText;\r\n        }\r\n        var statesText = {\r\n            normal: baseText\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var stateModel = stateModels[stateName];\r\n            statesText[stateName] = retrieve2(labelFetcher\r\n                ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter'))\r\n                : null, baseText);\r\n        }\r\n        return statesText;\r\n    }\r\n    function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var isSetOnText = targetEl instanceof ZRText;\r\n        var needsCreateText = false;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateModel = labelStatesModels[DISPLAY_STATES[i]];\r\n            if (stateModel && stateModel.getShallow('show')) {\r\n                needsCreateText = true;\r\n                break;\r\n            }\r\n        }\r\n        var textContent = isSetOnText ? targetEl : targetEl.getTextContent();\r\n        if (needsCreateText) {\r\n            if (!isSetOnText) {\r\n                if (!textContent) {\r\n                    textContent = new ZRText();\r\n                    targetEl.setTextContent(textContent);\r\n                }\r\n                if (targetEl.stateProxy) {\r\n                    textContent.stateProxy = targetEl.stateProxy;\r\n                }\r\n            }\r\n            var labelStatesTexts = getLabelText(opt, labelStatesModels);\r\n            var normalModel = labelStatesModels.normal;\r\n            var showNormal = !!normalModel.getShallow('show');\r\n            var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\r\n            normalStyle.text = labelStatesTexts.normal;\r\n            if (!isSetOnText) {\r\n                targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\r\n            }\r\n            for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n                var stateName = SPECIAL_STATES[i];\r\n                var stateModel = labelStatesModels[stateName];\r\n                if (stateModel) {\r\n                    var stateObj = textContent.ensureState(stateName);\r\n                    var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);\r\n                    if (stateShow !== showNormal) {\r\n                        stateObj.ignore = !stateShow;\r\n                    }\r\n                    stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\r\n                    stateObj.style.text = labelStatesTexts[stateName];\r\n                    if (!isSetOnText) {\r\n                        var targetElEmphasisState = targetEl.ensureState(stateName);\r\n                        targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\r\n                    }\r\n                }\r\n            }\r\n            textContent.silent = !!normalModel.getShallow('silent');\r\n            if (textContent.style.x != null) {\r\n                normalStyle.x = textContent.style.x;\r\n            }\r\n            if (textContent.style.y != null) {\r\n                normalStyle.y = textContent.style.y;\r\n            }\r\n            textContent.ignore = !showNormal;\r\n            textContent.useStyle(normalStyle);\r\n            textContent.dirty();\r\n            if (opt.enableTextSetter) {\r\n                labelInner(textContent).setLabelText = function (overrideValue) {\r\n                    var labelStatesTexts = getLabelText(opt, labelStatesModels, overrideValue);\r\n                    setLabelText(textContent, labelStatesTexts);\r\n                };\r\n            }\r\n        }\r\n        else if (textContent) {\r\n            textContent.ignore = true;\r\n        }\r\n        targetEl.dirty();\r\n    }\r\n    function getLabelStatesModels(itemModel, labelName) {\r\n        labelName = (labelName || 'label');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelName]);\r\n        }\r\n        return statesModels;\r\n    }\r\n    function createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {\r\n        var textStyle = {};\r\n        setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\r\n        specifiedTextStyle && extend(textStyle, specifiedTextStyle);\r\n        return textStyle;\r\n    }\r\n    function createTextConfig(textStyleModel, opt, isNotNormal) {\r\n        opt = opt || {};\r\n        var textConfig = {};\r\n        var labelPosition;\r\n        var labelRotate = textStyleModel.getShallow('rotate');\r\n        var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\r\n        var labelOffset = textStyleModel.getShallow('offset');\r\n        labelPosition = textStyleModel.getShallow('position')\r\n            || (isNotNormal ? null : 'inside');\r\n        labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\r\n        if (labelPosition != null) {\r\n            textConfig.position = labelPosition;\r\n        }\r\n        if (labelOffset != null) {\r\n            textConfig.offset = labelOffset;\r\n        }\r\n        if (labelRotate != null) {\r\n            labelRotate *= Math.PI / 180;\r\n            textConfig.rotation = labelRotate;\r\n        }\r\n        if (labelDistance != null) {\r\n            textConfig.distance = labelDistance;\r\n        }\r\n        textConfig.outsideFill = textStyleModel.get('color') === 'inherit'\r\n            ? (opt.inheritColor || null)\r\n            : 'auto';\r\n        return textConfig;\r\n    }\r\n    function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var ecModel = textStyleModel.ecModel;\r\n        var globalTextStyle = ecModel && ecModel.option.textStyle;\r\n        var richItemNames = getRichItemNames(textStyleModel);\r\n        var richResult;\r\n        if (richItemNames) {\r\n            richResult = {};\r\n            for (var name_1 in richItemNames) {\r\n                if (richItemNames.hasOwnProperty(name_1)) {\r\n                    var richTextStyle = textStyleModel.getModel(['rich', name_1]);\r\n                    setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);\r\n                }\r\n            }\r\n        }\r\n        if (richResult) {\r\n            textStyle.rich = richResult;\r\n        }\r\n        var overflow = textStyleModel.get('overflow');\r\n        if (overflow) {\r\n            textStyle.overflow = overflow;\r\n        }\r\n        var margin = textStyleModel.get('minMargin');\r\n        if (margin != null) {\r\n            textStyle.margin = margin;\r\n        }\r\n        setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);\r\n    }\r\n    function getRichItemNames(textStyleModel) {\r\n        var richItemNameMap;\r\n        while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\r\n            var rich = (textStyleModel.option || EMPTY_OBJ).rich;\r\n            if (rich) {\r\n                richItemNameMap = richItemNameMap || {};\r\n                var richKeys = keys(rich);\r\n                for (var i = 0; i < richKeys.length; i++) {\r\n                    var richKey = richKeys[i];\r\n                    richItemNameMap[richKey] = 1;\r\n                }\r\n            }\r\n            textStyleModel = textStyleModel.parentModel;\r\n        }\r\n        return richItemNameMap;\r\n    }\r\n    var TEXT_PROPS_WITH_GLOBAL = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'\r\n    ];\r\n    var TEXT_PROPS_SELF = [\r\n        'align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'\r\n    ];\r\n    var TEXT_PROPS_BOX = [\r\n        'padding', 'borderWidth', 'borderRadius', 'borderDashOffset',\r\n        'backgroundColor', 'borderColor',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n    ];\r\n    function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {\r\n        globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\r\n        var inheritColor = opt && opt.inheritColor;\r\n        var fillColor = textStyleModel.getShallow('color');\r\n        var strokeColor = textStyleModel.getShallow('textBorderColor');\r\n        var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);\r\n        if (fillColor === 'inherit' || fillColor === 'auto') {\r\n            if (__DEV__) {\r\n                if (fillColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                fillColor = inheritColor;\r\n            }\r\n            else {\r\n                fillColor = null;\r\n            }\r\n        }\r\n        if (strokeColor === 'inherit' || (strokeColor === 'auto')) {\r\n            if (__DEV__) {\r\n                if (strokeColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                strokeColor = inheritColor;\r\n            }\r\n            else {\r\n                strokeColor = null;\r\n            }\r\n        }\r\n        if (!isAttached) {\r\n            fillColor = fillColor || globalTextStyle.color;\r\n            strokeColor = strokeColor || globalTextStyle.textBorderColor;\r\n        }\r\n        if (fillColor != null) {\r\n            textStyle.fill = fillColor;\r\n        }\r\n        if (strokeColor != null) {\r\n            textStyle.stroke = strokeColor;\r\n        }\r\n        var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\r\n        if (textBorderWidth != null) {\r\n            textStyle.lineWidth = textBorderWidth;\r\n        }\r\n        var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);\r\n        if (textBorderType != null) {\r\n            textStyle.lineDash = textBorderType;\r\n        }\r\n        var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);\r\n        if (textBorderDashOffset != null) {\r\n            textStyle.lineDashOffset = textBorderDashOffset;\r\n        }\r\n        if (!isNotNormal && (opacity == null) && !inRich) {\r\n            opacity = opt && opt.defaultOpacity;\r\n        }\r\n        if (opacity != null) {\r\n            textStyle.opacity = opacity;\r\n        }\r\n        if (!isNotNormal && !isAttached) {\r\n            if (textStyle.fill == null && opt.inheritColor) {\r\n                textStyle.fill = opt.inheritColor;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\r\n            var key = TEXT_PROPS_WITH_GLOBAL[i];\r\n            var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\r\n            var key = TEXT_PROPS_SELF[i];\r\n            var val = textStyleModel.getShallow(key);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        if (textStyle.verticalAlign == null) {\r\n            var baseline = textStyleModel.getShallow('baseline');\r\n            if (baseline != null) {\r\n                textStyle.verticalAlign = baseline;\r\n            }\r\n        }\r\n        if (!isBlock || !opt.disableBox) {\r\n            for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\r\n                var key = TEXT_PROPS_BOX[i];\r\n                var val = textStyleModel.getShallow(key);\r\n                if (val != null) {\r\n                    textStyle[key] = val;\r\n                }\r\n            }\r\n            var borderType = textStyleModel.getShallow('borderType');\r\n            if (borderType != null) {\r\n                textStyle.borderDash = borderType;\r\n            }\r\n            if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.backgroundColor === 'auto') {\r\n                        deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.backgroundColor = inheritColor;\r\n            }\r\n            if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.borderColor === 'auto') {\r\n                        deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.borderColor = inheritColor;\r\n            }\r\n        }\r\n    }\r\n    function getFont(opt, ecModel) {\r\n        var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\r\n        return trim([\r\n            opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '',\r\n            opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '',\r\n            (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px',\r\n            opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'\r\n        ].join(' '));\r\n    }\r\n    var labelInner = makeInner();\r\n    function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {\r\n        if (!label) {\r\n            return;\r\n        }\r\n        var obj = labelInner(label);\r\n        obj.prevValue = obj.value;\r\n        obj.value = value;\r\n        var normalLabelModel = labelStatesModels.normal;\r\n        obj.valueAnimation = normalLabelModel.get('valueAnimation');\r\n        if (obj.valueAnimation) {\r\n            obj.precision = normalLabelModel.get('precision');\r\n            obj.defaultInterpolatedText = getDefaultText;\r\n            obj.statesModels = labelStatesModels;\r\n        }\r\n    }\r\n    function animateLabelValue(textEl, dataIndex, data, seriesModel) {\r\n        var labelInnerStore = labelInner(textEl);\r\n        if (!labelInnerStore.valueAnimation) {\r\n            return;\r\n        }\r\n        var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;\r\n        var prevValue = labelInnerStore.prevValue;\r\n        var currentValue = labelInnerStore.value;\r\n        function during(percent) {\r\n            var interpolated = interpolateRawValues(data, labelInnerStore.precision, prevValue, currentValue, percent);\r\n            var labelText = getLabelText({\r\n                labelDataIndex: dataIndex,\r\n                defaultText: defaultInterpolatedText\r\n                    ? defaultInterpolatedText(interpolated)\r\n                    : interpolated + ''\r\n            }, labelInnerStore.statesModels, interpolated);\r\n            setLabelText(textEl, labelText);\r\n        }\r\n        (prevValue == null ? initProps\r\n            : updateProps)(textEl, {}, seriesModel, dataIndex, null, during);\r\n    }\n\n    var PATH_COLOR = ['textStyle', 'color'];\r\n    var tmpRichText = new ZRText();\r\n    var TextStyleMixin = (function () {\r\n        function TextStyleMixin() {\r\n        }\r\n        TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\r\n            var ecModel = this.ecModel;\r\n            return this.getShallow('color')\r\n                || ((!isEmphasis && ecModel) ? ecModel.get(PATH_COLOR) : null);\r\n        };\r\n        TextStyleMixin.prototype.getFont = function () {\r\n            return getFont({\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily')\r\n            }, this.ecModel);\r\n        };\r\n        TextStyleMixin.prototype.getTextRect = function (text) {\r\n            tmpRichText.useStyle({\r\n                text: text,\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily'),\r\n                verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline'),\r\n                padding: this.getShallow('padding'),\r\n                lineHeight: this.getShallow('lineHeight'),\r\n                rich: this.getShallow('rich')\r\n            });\r\n            tmpRichText.update();\r\n            return tmpRichText.getBoundingRect();\r\n        };\r\n        return TextStyleMixin;\r\n    }());\n\n    var LINE_STYLE_KEY_MAP = [\r\n        ['lineWidth', 'width'],\r\n        ['stroke', 'color'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor'],\r\n        ['lineDash', 'type'],\r\n        ['lineDashOffset', 'dashOffset'],\r\n        ['lineCap', 'cap'],\r\n        ['lineJoin', 'join'],\r\n        ['miterLimit']\r\n    ];\r\n    var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\r\n    var LineStyleMixin = (function () {\r\n        function LineStyleMixin() {\r\n        }\r\n        LineStyleMixin.prototype.getLineStyle = function (excludes) {\r\n            return getLineStyle(this, excludes);\r\n        };\r\n        return LineStyleMixin;\r\n    }());\n\n    var ITEM_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['stroke', 'borderColor'],\r\n        ['lineWidth', 'borderWidth'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor'],\r\n        ['lineDash', 'borderType'],\r\n        ['lineDashOffset', 'borderDashOffset'],\r\n        ['lineCap', 'borderCap'],\r\n        ['lineJoin', 'borderJoin'],\r\n        ['miterLimit', 'borderMiterLimit']\r\n    ];\r\n    var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\r\n    var ItemStyleMixin = (function () {\r\n        function ItemStyleMixin() {\r\n        }\r\n        ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\r\n            return getItemStyle(this, excludes, includes);\r\n        };\r\n        return ItemStyleMixin;\r\n    }());\n\n    var Model = (function () {\r\n        function Model(option, parentModel, ecModel) {\r\n            this.parentModel = parentModel;\r\n            this.ecModel = ecModel;\r\n            this.option = option;\r\n        }\r\n        Model.prototype.init = function (option, parentModel, ecModel) {\r\n            var rest = [];\r\n            for (var _i = 3; _i < arguments.length; _i++) {\r\n                rest[_i - 3] = arguments[_i];\r\n            }\r\n        };\r\n        Model.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n        };\r\n        Model.prototype.get = function (path, ignoreParent) {\r\n            if (path == null) {\r\n                return this.option;\r\n            }\r\n            return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\r\n        };\r\n        Model.prototype.getShallow = function (key, ignoreParent) {\r\n            var option = this.option;\r\n            var val = option == null ? option : option[key];\r\n            if (val == null && !ignoreParent) {\r\n                var parentModel = this.parentModel;\r\n                if (parentModel) {\r\n                    val = parentModel.getShallow(key);\r\n                }\r\n            }\r\n            return val;\r\n        };\r\n        Model.prototype.getModel = function (path, parentModel) {\r\n            var hasPath = path != null;\r\n            var pathFinal = hasPath ? this.parsePath(path) : null;\r\n            var obj = hasPath\r\n                ? this._doGet(pathFinal)\r\n                : this.option;\r\n            parentModel = parentModel || (this.parentModel\r\n                && this.parentModel.getModel(this.resolveParentPath(pathFinal)));\r\n            return new Model(obj, parentModel, this.ecModel);\r\n        };\r\n        Model.prototype.isEmpty = function () {\r\n            return this.option == null;\r\n        };\r\n        Model.prototype.restoreData = function () { };\r\n        Model.prototype.clone = function () {\r\n            var Ctor = this.constructor;\r\n            return new Ctor(clone(this.option));\r\n        };\r\n        Model.prototype.parsePath = function (path) {\r\n            if (typeof path === 'string') {\r\n                return path.split('.');\r\n            }\r\n            return path;\r\n        };\r\n        Model.prototype.resolveParentPath = function (path) {\r\n            return path;\r\n        };\r\n        Model.prototype.isAnimationEnabled = function () {\r\n            if (!env.node && this.option) {\r\n                if (this.option.animation != null) {\r\n                    return !!this.option.animation;\r\n                }\r\n                else if (this.parentModel) {\r\n                    return this.parentModel.isAnimationEnabled();\r\n                }\r\n            }\r\n        };\r\n        Model.prototype._doGet = function (pathArr, parentModel) {\r\n            var obj = this.option;\r\n            if (!pathArr) {\r\n                return obj;\r\n            }\r\n            for (var i = 0; i < pathArr.length; i++) {\r\n                if (!pathArr[i]) {\r\n                    continue;\r\n                }\r\n                obj = (obj && typeof obj === 'object') ? obj[pathArr[i]] : null;\r\n                if (obj == null) {\r\n                    break;\r\n                }\r\n            }\r\n            if (obj == null && parentModel) {\r\n                obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\r\n            }\r\n            return obj;\r\n        };\r\n        return Model;\r\n    }());\r\n    enableClassExtend(Model);\r\n    enableClassCheck(Model);\r\n    mixin(Model, LineStyleMixin);\r\n    mixin(Model, ItemStyleMixin);\r\n    mixin(Model, AreaStyleMixin);\r\n    mixin(Model, TextStyleMixin);\n\n    var base = Math.round(Math.random() * 10);\r\n    function getUID(type) {\r\n        return [(type || ''), base++].join('_');\r\n    }\r\n    function enableSubTypeDefaulter(target) {\r\n        var subTypeDefaulters = {};\r\n        target.registerSubTypeDefaulter = function (componentType, defaulter) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            subTypeDefaulters[componentTypeInfo.main] = defaulter;\r\n        };\r\n        target.determineSubType = function (componentType, option) {\r\n            var type = option.type;\r\n            if (!type) {\r\n                var componentTypeMain = parseClassType(componentType).main;\r\n                if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\r\n                    type = subTypeDefaulters[componentTypeMain](option);\r\n                }\r\n            }\r\n            return type;\r\n        };\r\n    }\r\n    function enableTopologicalTravel(entity, dependencyGetter) {\r\n        entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\r\n            if (!targetNameList.length) {\r\n                return;\r\n            }\r\n            var result = makeDepndencyGraph(fullNameList);\r\n            var graph = result.graph;\r\n            var noEntryList = result.noEntryList;\r\n            var targetNameSet = {};\r\n            each(targetNameList, function (name) {\r\n                targetNameSet[name] = true;\r\n            });\r\n            while (noEntryList.length) {\r\n                var currComponentType = noEntryList.pop();\r\n                var currVertex = graph[currComponentType];\r\n                var isInTargetNameSet = !!targetNameSet[currComponentType];\r\n                if (isInTargetNameSet) {\r\n                    callback.call(context, currComponentType, currVertex.originalDeps.slice());\r\n                    delete targetNameSet[currComponentType];\r\n                }\r\n                each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\r\n            }\r\n            each(targetNameSet, function () {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = makePrintable('Circle dependency may exists: ', targetNameSet, targetNameList, fullNameList);\r\n                }\r\n                throw new Error(errMsg);\r\n            });\r\n            function removeEdge(succComponentType) {\r\n                graph[succComponentType].entryCount--;\r\n                if (graph[succComponentType].entryCount === 0) {\r\n                    noEntryList.push(succComponentType);\r\n                }\r\n            }\r\n            function removeEdgeAndAdd(succComponentType) {\r\n                targetNameSet[succComponentType] = true;\r\n                removeEdge(succComponentType);\r\n            }\r\n        };\r\n        function makeDepndencyGraph(fullNameList) {\r\n            var graph = {};\r\n            var noEntryList = [];\r\n            each(fullNameList, function (name) {\r\n                var thisItem = createDependencyGraphItem(graph, name);\r\n                var originalDeps = thisItem.originalDeps = dependencyGetter(name);\r\n                var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\r\n                thisItem.entryCount = availableDeps.length;\r\n                if (thisItem.entryCount === 0) {\r\n                    noEntryList.push(name);\r\n                }\r\n                each(availableDeps, function (dependentName) {\r\n                    if (indexOf(thisItem.predecessor, dependentName) < 0) {\r\n                        thisItem.predecessor.push(dependentName);\r\n                    }\r\n                    var thatItem = createDependencyGraphItem(graph, dependentName);\r\n                    if (indexOf(thatItem.successor, dependentName) < 0) {\r\n                        thatItem.successor.push(name);\r\n                    }\r\n                });\r\n            });\r\n            return { graph: graph, noEntryList: noEntryList };\r\n        }\r\n        function createDependencyGraphItem(graph, name) {\r\n            if (!graph[name]) {\r\n                graph[name] = { predecessor: [], successor: [] };\r\n            }\r\n            return graph[name];\r\n        }\r\n        function getAvailableDependencies(originalDeps, fullNameList) {\r\n            var availableDeps = [];\r\n            each(originalDeps, function (dep) {\r\n                indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\r\n            });\r\n            return availableDeps;\r\n        }\r\n    }\r\n    function inheritDefaultOption(superOption, subOption) {\r\n        return merge(merge({}, superOption, true), subOption, true);\r\n    }\n\n    var langEN = {\r\n        time: {\r\n            month: [\r\n                'January', 'February', 'March', 'April', 'May', 'June',\r\n                'July', 'August', 'September', 'October', 'November', 'December'\r\n            ],\r\n            monthAbbr: [\r\n                'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\r\n                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\r\n            ],\r\n            dayOfWeek: [\r\n                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: 'All',\r\n                inverse: 'Inv'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: 'Box Select',\r\n                    polygon: 'Lasso Select',\r\n                    lineX: 'Horizontally Select',\r\n                    lineY: 'Vertically Select',\r\n                    keep: 'Keep Selections',\r\n                    clear: 'Clear Selections'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: 'Data View',\r\n                lang: ['Data View', 'Close', 'Refresh']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: 'Zoom',\r\n                    back: 'Zoom Reset'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: 'Switch to Line Chart',\r\n                    bar: 'Switch to Bar Chart',\r\n                    stack: 'Stack',\r\n                    tiled: 'Tile'\r\n                }\r\n            },\r\n            restore: {\r\n                title: 'Restore'\r\n            },\r\n            saveAsImage: {\r\n                title: 'Save as Image',\r\n                lang: ['Right Click to Save Image']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: 'Pie chart',\r\n                bar: 'Bar chart',\r\n                line: 'Line chart',\r\n                scatter: 'Scatter plot',\r\n                effectScatter: 'Ripple scatter plot',\r\n                radar: 'Radar chart',\r\n                tree: 'Tree',\r\n                treemap: 'Treemap',\r\n                boxplot: 'Boxplot',\r\n                candlestick: 'Candlestick',\r\n                k: 'K line chart',\r\n                heatmap: 'Heat map',\r\n                map: 'Map',\r\n                parallel: 'Parallel coordinate map',\r\n                lines: 'Line graph',\r\n                graph: 'Relationship graph',\r\n                sankey: 'Sankey diagram',\r\n                funnel: 'Funnel chart',\r\n                gauge: 'Guage',\r\n                pictorialBar: 'Pictorial bar',\r\n                themeRiver: 'Theme River Map',\r\n                sunburst: 'Sunburst'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: 'This is a chart about \"{title}\"',\r\n                withoutTitle: 'This is a chart'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: ' with type {seriesType} named {seriesName}.',\r\n                    withoutName: ' with type {seriesType}.'\r\n                },\r\n                multiple: {\r\n                    prefix: '. It consists of {seriesCount} series count.',\r\n                    withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\r\n                    withoutName: ' The {seriesId} series is a {seriesType}.',\r\n                    separator: {\r\n                        middle: '',\r\n                        end: ''\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: 'The data is as follows: ',\r\n                partialData: 'The first {displayCnt} items are: ',\r\n                withName: 'the data for {name} is {value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: ', ',\r\n                    end: '. '\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var langZH = {\r\n        time: {\r\n            month: [\r\n                '一月', '二月', '三月', '四月', '五月', '六月',\r\n                '七月', '八月', '九月', '十月', '十一月', '十二月'\r\n            ],\r\n            monthAbbr: [\r\n                '1月', '2月', '3月', '4月', '5月', '6月',\r\n                '7月', '8月', '9月', '10月', '11月', '12月'\r\n            ],\r\n            dayOfWeek: [\r\n                '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                '日', '一', '二', '三', '四', '五', '六'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: '全选',\r\n                inverse: '反选'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: '矩形选择',\r\n                    polygon: '圈选',\r\n                    lineX: '横向选择',\r\n                    lineY: '纵向选择',\r\n                    keep: '保持选择',\r\n                    clear: '清除选择'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: '数据视图',\r\n                lang: ['数据视图', '关闭', '刷新']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: '区域缩放',\r\n                    back: '区域缩放还原'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: '切换为折线图',\r\n                    bar: '切换为柱状图',\r\n                    stack: '切换为堆叠',\r\n                    tiled: '切换为平铺'\r\n                }\r\n            },\r\n            restore: {\r\n                title: '还原'\r\n            },\r\n            saveAsImage: {\r\n                title: '保存为图片',\r\n                lang: ['右键另存为图片']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: '饼图',\r\n                bar: '柱状图',\r\n                line: '折线图',\r\n                scatter: '散点图',\r\n                effectScatter: '涟漪散点图',\r\n                radar: '雷达图',\r\n                tree: '树图',\r\n                treemap: '矩形树图',\r\n                boxplot: '箱型图',\r\n                candlestick: 'K线图',\r\n                k: 'K线图',\r\n                heatmap: '热力图',\r\n                map: '地图',\r\n                parallel: '平行坐标图',\r\n                lines: '线图',\r\n                graph: '关系图',\r\n                sankey: '桑基图',\r\n                funnel: '漏斗图',\r\n                gauge: '仪表盘图',\r\n                pictorialBar: '象形柱图',\r\n                themeRiver: '主题河流图',\r\n                sunburst: '旭日图'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: '这是一个关于“{title}”的图表。',\r\n                withoutTitle: '这是一个图表，'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: '图表类型是{seriesType}，表示{seriesName}。',\r\n                    withoutName: '图表类型是{seriesType}。'\r\n                },\r\n                multiple: {\r\n                    prefix: '它由{seriesCount}个图表系列组成。',\r\n                    withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType}，',\r\n                    withoutName: '第{seriesId}个系列是一个{seriesType}，',\r\n                    separator: {\r\n                        middle: '；',\r\n                        end: '。'\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: '其数据是——',\r\n                partialData: '其中，前{displayCnt}项是——',\r\n                withName: '{name}的数据是{value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: '，',\r\n                    end: ''\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var LOCALE_ZH = 'ZH';\r\n    var LOCALE_EN = 'EN';\r\n    var DEFAULT_LOCALE = LOCALE_EN;\r\n    var localeStorage = {};\r\n    var localeModels = {};\r\n    var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : (function () {\r\n        var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();\r\n        return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\r\n    })();\r\n    function registerLocale(locale, localeObj) {\r\n        locale = locale.toUpperCase();\r\n        localeModels[locale] = new Model(localeObj);\r\n        localeStorage[locale] = localeObj;\r\n    }\r\n    function createLocaleObject(locale) {\r\n        if (isString(locale)) {\r\n            var localeObj = localeStorage[locale.toUpperCase()] || {};\r\n            if (locale === LOCALE_ZH || locale === LOCALE_EN) {\r\n                return clone(localeObj);\r\n            }\r\n            else {\r\n                return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n            }\r\n        }\r\n        else {\r\n            return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n        }\r\n    }\r\n    function getLocaleModel(lang) {\r\n        return localeModels[lang];\r\n    }\r\n    function getDefaultLocaleModel() {\r\n        return localeModels[DEFAULT_LOCALE];\r\n    }\r\n    registerLocale(LOCALE_EN, langEN);\r\n    registerLocale(LOCALE_ZH, langZH);\n\n    var ONE_SECOND = 1000;\r\n    var ONE_MINUTE = ONE_SECOND * 60;\r\n    var ONE_HOUR = ONE_MINUTE * 60;\r\n    var ONE_DAY = ONE_HOUR * 24;\r\n    var ONE_YEAR = ONE_DAY * 365;\r\n    var defaultLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{MMM}',\r\n        day: '{d}',\r\n        hour: '{HH}:{mm}',\r\n        minute: '{HH}:{mm}',\r\n        second: '{HH}:{mm}:{ss}',\r\n        millisecond: '{hh}:{mm}:{ss} {SSS}',\r\n        none: '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}'\r\n    };\r\n    var fullDayFormatter = '{yyyy}-{MM}-{dd}';\r\n    var fullLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{yyyy}-{MM}',\r\n        day: fullDayFormatter,\r\n        hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\r\n        minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\r\n        second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\r\n        millisecond: defaultLeveledFormatter.none\r\n    };\r\n    var primaryTimeUnits = [\r\n        'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    var timeUnits = [\r\n        'year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day',\r\n        'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    function pad(str, len) {\r\n        str += '';\r\n        return '0000'.substr(0, len - str.length) + str;\r\n    }\r\n    function getPrimaryTimeUnit(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'half-year':\r\n            case 'quarter':\r\n                return 'month';\r\n            case 'week':\r\n            case 'half-week':\r\n                return 'day';\r\n            case 'half-day':\r\n            case 'quarter-day':\r\n                return 'hour';\r\n            default:\r\n                return timeUnit;\r\n        }\r\n    }\r\n    function isPrimaryTimeUnit(timeUnit) {\r\n        return timeUnit === getPrimaryTimeUnit(timeUnit);\r\n    }\r\n    function getDefaultFormatPrecisionOfInterval(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'year':\r\n            case 'month':\r\n                return 'day';\r\n            case 'millisecond':\r\n                return 'millisecond';\r\n            default:\r\n                return 'second';\r\n        }\r\n    }\r\n    function format(time, template, isUTC, lang) {\r\n        var date = parseDate(time);\r\n        var y = date[fullYearGetterName(isUTC)]();\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var q = Math.floor((M - 1) / 4) + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\r\n        var H = date[hoursGetterName(isUTC)]();\r\n        var h = (H - 1) % 12 + 1;\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var localeModel = lang instanceof Model ? lang\r\n            : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\r\n        var timeModel = localeModel.getModel('time');\r\n        var month = timeModel.get('month');\r\n        var monthAbbr = timeModel.get('monthAbbr');\r\n        var dayOfWeek = timeModel.get('dayOfWeek');\r\n        var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\r\n        return (template || '')\r\n            .replace(/{yyyy}/g, y + '')\r\n            .replace(/{yy}/g, y % 100 + '')\r\n            .replace(/{Q}/g, q + '')\r\n            .replace(/{MMMM}/g, month[M - 1])\r\n            .replace(/{MMM}/g, monthAbbr[M - 1])\r\n            .replace(/{MM}/g, pad(M, 2))\r\n            .replace(/{M}/g, M + '')\r\n            .replace(/{dd}/g, pad(d, 2))\r\n            .replace(/{d}/g, d + '')\r\n            .replace(/{eeee}/g, dayOfWeek[e])\r\n            .replace(/{ee}/g, dayOfWeekAbbr[e])\r\n            .replace(/{e}/g, e + '')\r\n            .replace(/{HH}/g, pad(H, 2))\r\n            .replace(/{H}/g, H + '')\r\n            .replace(/{hh}/g, pad(h + '', 2))\r\n            .replace(/{h}/g, h + '')\r\n            .replace(/{mm}/g, pad(m, 2))\r\n            .replace(/{m}/g, m + '')\r\n            .replace(/{ss}/g, pad(s, 2))\r\n            .replace(/{s}/g, s + '')\r\n            .replace(/{SSS}/g, pad(S, 3))\r\n            .replace(/{S}/g, S + '');\r\n    }\r\n    function leveledFormat(tick, idx, formatter, lang, isUTC) {\r\n        var template = null;\r\n        if (typeof formatter === 'string') {\r\n            template = formatter;\r\n        }\r\n        else if (typeof formatter === 'function') {\r\n            template = formatter(tick.value, idx, {\r\n                level: tick.level\r\n            });\r\n        }\r\n        else {\r\n            var defaults$1 = extend({}, defaultLeveledFormatter);\r\n            if (tick.level > 0) {\r\n                for (var i = 0; i < primaryTimeUnits.length; ++i) {\r\n                    defaults$1[primaryTimeUnits[i]] = \"{primary|\" + defaults$1[primaryTimeUnits[i]] + \"}\";\r\n                }\r\n            }\r\n            var mergedFormatter = (formatter\r\n                ? (formatter.inherit === false\r\n                    ? formatter\r\n                    : defaults(formatter, defaults$1))\r\n                : defaults$1);\r\n            var unit = getUnitFromValue(tick.value, isUTC);\r\n            if (mergedFormatter[unit]) {\r\n                template = mergedFormatter[unit];\r\n            }\r\n            else if (mergedFormatter.inherit) {\r\n                var targetId = timeUnits.indexOf(unit);\r\n                for (var i = targetId - 1; i >= 0; --i) {\r\n                    if (mergedFormatter[unit]) {\r\n                        template = mergedFormatter[unit];\r\n                        break;\r\n                    }\r\n                }\r\n                template = template || defaults$1.none;\r\n            }\r\n            if (isArray(template)) {\r\n                var levelId = tick.level == null\r\n                    ? 0\r\n                    : (tick.level >= 0 ? tick.level : template.length + tick.level);\r\n                levelId = Math.min(levelId, template.length - 1);\r\n                template = template[levelId];\r\n            }\r\n        }\r\n        return format(new Date(tick.value), template, isUTC, lang);\r\n    }\r\n    function getUnitFromValue(value, isUTC) {\r\n        var date = parseDate(value);\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var h = date[hoursGetterName(isUTC)]();\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var isSecond = S === 0;\r\n        var isMinute = isSecond && s === 0;\r\n        var isHour = isMinute && m === 0;\r\n        var isDay = isHour && h === 0;\r\n        var isMonth = isDay && d === 1;\r\n        var isYear = isMonth && M === 1;\r\n        if (isYear) {\r\n            return 'year';\r\n        }\r\n        else if (isMonth) {\r\n            return 'month';\r\n        }\r\n        else if (isDay) {\r\n            return 'day';\r\n        }\r\n        else if (isHour) {\r\n            return 'hour';\r\n        }\r\n        else if (isMinute) {\r\n            return 'minute';\r\n        }\r\n        else if (isSecond) {\r\n            return 'second';\r\n        }\r\n        else {\r\n            return 'millisecond';\r\n        }\r\n    }\r\n    function getUnitValue(value, unit, isUTC) {\r\n        var date = typeof value === 'number'\r\n            ? parseDate(value)\r\n            : value;\r\n        unit = unit || getUnitFromValue(value, isUTC);\r\n        switch (unit) {\r\n            case 'year':\r\n                return date[fullYearGetterName(isUTC)]();\r\n            case 'half-year':\r\n                return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\r\n            case 'quarter':\r\n                return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\r\n            case 'month':\r\n                return date[monthGetterName(isUTC)]();\r\n            case 'day':\r\n                return date[dateGetterName(isUTC)]();\r\n            case 'half-day':\r\n                return date[hoursGetterName(isUTC)]() / 24;\r\n            case 'hour':\r\n                return date[hoursGetterName(isUTC)]();\r\n            case 'minute':\r\n                return date[minutesGetterName(isUTC)]();\r\n            case 'second':\r\n                return date[secondsGetterName(isUTC)]();\r\n            case 'millisecond':\r\n                return date[millisecondsGetterName(isUTC)]();\r\n        }\r\n    }\r\n    function fullYearGetterName(isUTC) {\r\n        return isUTC ? 'getUTCFullYear' : 'getFullYear';\r\n    }\r\n    function monthGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMonth' : 'getMonth';\r\n    }\r\n    function dateGetterName(isUTC) {\r\n        return isUTC ? 'getUTCDate' : 'getDate';\r\n    }\r\n    function hoursGetterName(isUTC) {\r\n        return isUTC ? 'getUTCHours' : 'getHours';\r\n    }\r\n    function minutesGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMinutes' : 'getMinutes';\r\n    }\r\n    function secondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function millisecondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function fullYearSetterName(isUTC) {\r\n        return isUTC ? 'setUTCFullYear' : 'setFullYear';\r\n    }\r\n    function monthSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMonth' : 'setMonth';\r\n    }\r\n    function dateSetterName(isUTC) {\r\n        return isUTC ? 'setUTCDate' : 'setDate';\r\n    }\r\n    function hoursSetterName(isUTC) {\r\n        return isUTC ? 'setUTCHours' : 'setHours';\r\n    }\r\n    function minutesSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMinutes' : 'setMinutes';\r\n    }\r\n    function secondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\r\n    function millisecondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\n\n    function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\r\n        deprecateLog('getTextRect is deprecated.');\r\n        var textEl = new ZRText({\r\n            style: {\r\n                text: text,\r\n                font: font,\r\n                align: align,\r\n                verticalAlign: verticalAlign,\r\n                padding: padding,\r\n                rich: rich,\r\n                overflow: truncate ? 'truncate' : null,\r\n                lineHeight: lineHeight\r\n            }\r\n        });\r\n        return textEl.getBoundingRect();\r\n    }\n\n    function addCommas(x) {\r\n        if (!isNumeric(x)) {\r\n            return isString(x) ? x : '-';\r\n        }\r\n        var parts = (x + '').split('.');\r\n        return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,')\r\n            + (parts.length > 1 ? ('.' + parts[1]) : '');\r\n    }\r\n    function toCamelCase(str, upperCaseFirst) {\r\n        str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\r\n            return group1.toUpperCase();\r\n        });\r\n        if (upperCaseFirst && str) {\r\n            str = str.charAt(0).toUpperCase() + str.slice(1);\r\n        }\r\n        return str;\r\n    }\r\n    var normalizeCssArray$1 = normalizeCssArray;\r\n    var replaceReg = /([&<>\"'])/g;\r\n    var replaceMap = {\r\n        '&': '&amp;',\r\n        '<': '&lt;',\r\n        '>': '&gt;',\r\n        '\"': '&quot;',\r\n        '\\'': '&#39;'\r\n    };\r\n    function encodeHTML(source) {\r\n        return source == null\r\n            ? ''\r\n            : (source + '').replace(replaceReg, function (str, c) {\r\n                return replaceMap[c];\r\n            });\r\n    }\r\n    function makeValueReadable(value, valueType, useUTC) {\r\n        var USER_READABLE_DEFUALT_TIME_PATTERN = 'yyyy-MM-dd hh:mm:ss';\r\n        function stringToUserReadable(str) {\r\n            return (str && trim(str)) ? str : '-';\r\n        }\r\n        function isNumberUserReadable(num) {\r\n            return !!(num != null && !isNaN(num) && isFinite(num));\r\n        }\r\n        var isTypeTime = valueType === 'time';\r\n        var isValueDate = value instanceof Date;\r\n        if (isTypeTime || isValueDate) {\r\n            var date = isTypeTime ? parseDate(value) : value;\r\n            if (!isNaN(+date)) {\r\n                return format(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);\r\n            }\r\n            else if (isValueDate) {\r\n                return '-';\r\n            }\r\n        }\r\n        if (valueType === 'ordinal') {\r\n            return isStringSafe(value)\r\n                ? stringToUserReadable(value)\r\n                : isNumber(value)\r\n                    ? (isNumberUserReadable(value) ? value + '' : '-')\r\n                    : '-';\r\n        }\r\n        var numericResult = numericToNumber(value);\r\n        return isNumberUserReadable(numericResult)\r\n            ? addCommas(numericResult)\r\n            : isStringSafe(value)\r\n                ? stringToUserReadable(value)\r\n                : '-';\r\n    }\r\n    var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\n    var wrapVar = function (varName, seriesIdx) {\r\n        return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\r\n    };\r\n    function formatTpl(tpl, paramsList, encode) {\r\n        if (!isArray(paramsList)) {\r\n            paramsList = [paramsList];\r\n        }\r\n        var seriesLen = paramsList.length;\r\n        if (!seriesLen) {\r\n            return '';\r\n        }\r\n        var $vars = paramsList[0].$vars || [];\r\n        for (var i = 0; i < $vars.length; i++) {\r\n            var alias = TPL_VAR_ALIAS[i];\r\n            tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\r\n        }\r\n        for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\r\n            for (var k = 0; k < $vars.length; k++) {\r\n                var val = paramsList[seriesIdx][$vars[k]];\r\n                tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\r\n            }\r\n        }\r\n        return tpl;\r\n    }\r\n    function formatTplSimple(tpl, param, encode) {\r\n        each(param, function (value, key) {\r\n            tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\r\n        });\r\n        return tpl;\r\n    }\r\n    function getTooltipMarker(inOpt, extraCssText) {\r\n        var opt = isString(inOpt) ? {\r\n            color: inOpt,\r\n            extraCssText: extraCssText\r\n        } : (inOpt || {});\r\n        var color = opt.color;\r\n        var type = opt.type;\r\n        extraCssText = opt.extraCssText;\r\n        var renderMode = opt.renderMode || 'html';\r\n        if (!color) {\r\n            return '';\r\n        }\r\n        if (renderMode === 'html') {\r\n            return type === 'subItem'\r\n                ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;'\r\n                    + 'border-radius:4px;width:4px;height:4px;background-color:'\r\n                    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>'\r\n                : '<span style=\"display:inline-block;margin-right:4px;'\r\n                    + 'border-radius:10px;width:10px;height:10px;background-color:'\r\n                    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\r\n        }\r\n        else {\r\n            var markerId = opt.markerId || 'markerX';\r\n            return {\r\n                renderMode: renderMode,\r\n                content: '{' + markerId + '|}  ',\r\n                style: type === 'subItem'\r\n                    ? {\r\n                        width: 4,\r\n                        height: 4,\r\n                        borderRadius: 2,\r\n                        backgroundColor: color\r\n                    }\r\n                    : {\r\n                        width: 10,\r\n                        height: 10,\r\n                        borderRadius: 5,\r\n                        backgroundColor: color\r\n                    }\r\n            };\r\n        }\r\n    }\r\n    function formatTime(tpl, value, isUTC) {\r\n        if (__DEV__) {\r\n            deprecateReplaceLog('echarts.format.formatTime', 'echarts.time.format');\r\n        }\r\n        if (tpl === 'week'\r\n            || tpl === 'month'\r\n            || tpl === 'quarter'\r\n            || tpl === 'half-year'\r\n            || tpl === 'year') {\r\n            tpl = 'MM-dd\\nyyyy';\r\n        }\r\n        var date = parseDate(value);\r\n        var utc = isUTC ? 'UTC' : '';\r\n        var y = date['get' + utc + 'FullYear']();\r\n        var M = date['get' + utc + 'Month']() + 1;\r\n        var d = date['get' + utc + 'Date']();\r\n        var h = date['get' + utc + 'Hours']();\r\n        var m = date['get' + utc + 'Minutes']();\r\n        var s = date['get' + utc + 'Seconds']();\r\n        var S = date['get' + utc + 'Milliseconds']();\r\n        tpl = tpl.replace('MM', pad(M, 2))\r\n            .replace('M', M)\r\n            .replace('yyyy', y)\r\n            .replace('yy', y % 100 + '')\r\n            .replace('dd', pad(d, 2))\r\n            .replace('d', d)\r\n            .replace('hh', pad(h, 2))\r\n            .replace('h', h)\r\n            .replace('mm', pad(m, 2))\r\n            .replace('m', m)\r\n            .replace('ss', pad(s, 2))\r\n            .replace('s', s)\r\n            .replace('SSS', pad(S, 3));\r\n        return tpl;\r\n    }\r\n    function capitalFirst(str) {\r\n        return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\r\n    }\r\n    function convertToColorString(color, defaultColor) {\r\n        defaultColor = defaultColor || 'transparent';\r\n        return isString(color)\r\n            ? color\r\n            : isObject(color)\r\n                ? (color.colorStops\r\n                    && (color.colorStops[0] || {}).color\r\n                    || defaultColor)\r\n                : defaultColor;\r\n    }\r\n    function windowOpen(link, target) {\r\n        if (target === '_blank' || target === 'blank') {\r\n            var blank = window.open();\r\n            blank.opener = null;\r\n            blank.location.href = link;\r\n        }\r\n        else {\r\n            window.open(link, target);\r\n        }\r\n    }\n\n    var formatUtil = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        addCommas: addCommas,\n        toCamelCase: toCamelCase,\n        normalizeCssArray: normalizeCssArray$1,\n        encodeHTML: encodeHTML,\n        makeValueReadable: makeValueReadable,\n        formatTpl: formatTpl,\n        formatTplSimple: formatTplSimple,\n        getTooltipMarker: getTooltipMarker,\n        formatTime: formatTime,\n        capitalFirst: capitalFirst,\n        convertToColorString: convertToColorString,\n        windowOpen: windowOpen,\n        truncateText: truncateText,\n        getTextRect: getTextRect\n    });\n\n    var each$1 = each;\r\n    var LOCATION_PARAMS = [\r\n        'left', 'right', 'top', 'bottom', 'width', 'height'\r\n    ];\r\n    var HV_NAMES = [\r\n        ['width', 'left', 'right'],\r\n        ['height', 'top', 'bottom']\r\n    ];\r\n    function boxLayout(orient, group, gap, maxWidth, maxHeight) {\r\n        var x = 0;\r\n        var y = 0;\r\n        if (maxWidth == null) {\r\n            maxWidth = Infinity;\r\n        }\r\n        if (maxHeight == null) {\r\n            maxHeight = Infinity;\r\n        }\r\n        var currentLineMaxSize = 0;\r\n        group.eachChild(function (child, idx) {\r\n            var rect = child.getBoundingRect();\r\n            var nextChild = group.childAt(idx + 1);\r\n            var nextChildRect = nextChild && nextChild.getBoundingRect();\r\n            var nextX;\r\n            var nextY;\r\n            if (orient === 'horizontal') {\r\n                var moveX = rect.width + (nextChildRect ? (-nextChildRect.x + rect.x) : 0);\r\n                nextX = x + moveX;\r\n                if (nextX > maxWidth || child.newline) {\r\n                    x = 0;\r\n                    nextX = moveX;\r\n                    y += currentLineMaxSize + gap;\r\n                    currentLineMaxSize = rect.height;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\r\n                }\r\n            }\r\n            else {\r\n                var moveY = rect.height + (nextChildRect ? (-nextChildRect.y + rect.y) : 0);\r\n                nextY = y + moveY;\r\n                if (nextY > maxHeight || child.newline) {\r\n                    x += currentLineMaxSize + gap;\r\n                    y = 0;\r\n                    nextY = moveY;\r\n                    currentLineMaxSize = rect.width;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\r\n                }\r\n            }\r\n            if (child.newline) {\r\n                return;\r\n            }\r\n            child.x = x;\r\n            child.y = y;\r\n            child.markRedraw();\r\n            orient === 'horizontal'\r\n                ? (x = nextX + gap)\r\n                : (y = nextY + gap);\r\n        });\r\n    }\r\n    var box = boxLayout;\r\n    var vbox = curry(boxLayout, 'vertical');\r\n    var hbox = curry(boxLayout, 'horizontal');\r\n    function getAvailableSize(positionInfo, containerRect, margin) {\r\n        var containerWidth = containerRect.width;\r\n        var containerHeight = containerRect.height;\r\n        var x = parsePercent$2(positionInfo.left, containerWidth);\r\n        var y = parsePercent$2(positionInfo.top, containerHeight);\r\n        var x2 = parsePercent$2(positionInfo.right, containerWidth);\r\n        var y2 = parsePercent$2(positionInfo.bottom, containerHeight);\r\n        (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0);\r\n        (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth);\r\n        (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0);\r\n        (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight);\r\n        margin = normalizeCssArray$1(margin || 0);\r\n        return {\r\n            width: Math.max(x2 - x - margin[1] - margin[3], 0),\r\n            height: Math.max(y2 - y - margin[0] - margin[2], 0)\r\n        };\r\n    }\r\n    function getLayoutRect(positionInfo, containerRect, margin) {\r\n        margin = normalizeCssArray$1(margin || 0);\r\n        var containerWidth = containerRect.width;\r\n        var containerHeight = containerRect.height;\r\n        var left = parsePercent$2(positionInfo.left, containerWidth);\r\n        var top = parsePercent$2(positionInfo.top, containerHeight);\r\n        var right = parsePercent$2(positionInfo.right, containerWidth);\r\n        var bottom = parsePercent$2(positionInfo.bottom, containerHeight);\r\n        var width = parsePercent$2(positionInfo.width, containerWidth);\r\n        var height = parsePercent$2(positionInfo.height, containerHeight);\r\n        var verticalMargin = margin[2] + margin[0];\r\n        var horizontalMargin = margin[1] + margin[3];\r\n        var aspect = positionInfo.aspect;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - right - horizontalMargin - left;\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - bottom - verticalMargin - top;\r\n        }\r\n        if (aspect != null) {\r\n            if (isNaN(width) && isNaN(height)) {\r\n                if (aspect > containerWidth / containerHeight) {\r\n                    width = containerWidth * 0.8;\r\n                }\r\n                else {\r\n                    height = containerHeight * 0.8;\r\n                }\r\n            }\r\n            if (isNaN(width)) {\r\n                width = aspect * height;\r\n            }\r\n            if (isNaN(height)) {\r\n                height = width / aspect;\r\n            }\r\n        }\r\n        if (isNaN(left)) {\r\n            left = containerWidth - right - width - horizontalMargin;\r\n        }\r\n        if (isNaN(top)) {\r\n            top = containerHeight - bottom - height - verticalMargin;\r\n        }\r\n        switch (positionInfo.left || positionInfo.right) {\r\n            case 'center':\r\n                left = containerWidth / 2 - width / 2 - margin[3];\r\n                break;\r\n            case 'right':\r\n                left = containerWidth - width - horizontalMargin;\r\n                break;\r\n        }\r\n        switch (positionInfo.top || positionInfo.bottom) {\r\n            case 'middle':\r\n            case 'center':\r\n                top = containerHeight / 2 - height / 2 - margin[0];\r\n                break;\r\n            case 'bottom':\r\n                top = containerHeight - height - verticalMargin;\r\n                break;\r\n        }\r\n        left = left || 0;\r\n        top = top || 0;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - horizontalMargin - left - (right || 0);\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - verticalMargin - top - (bottom || 0);\r\n        }\r\n        var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\r\n        rect.margin = margin;\r\n        return rect;\r\n    }\r\n    function positionElement(el, positionInfo, containerRect, margin, opt) {\r\n        var h = !opt || !opt.hv || opt.hv[0];\r\n        var v = !opt || !opt.hv || opt.hv[1];\r\n        var boundingMode = opt && opt.boundingMode || 'all';\r\n        if (!h && !v) {\r\n            return;\r\n        }\r\n        var rect;\r\n        if (boundingMode === 'raw') {\r\n            rect = el.type === 'group'\r\n                ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0)\r\n                : el.getBoundingRect();\r\n        }\r\n        else {\r\n            rect = el.getBoundingRect();\r\n            if (el.needLocalTransform()) {\r\n                var transform = el.getLocalTransform();\r\n                rect = rect.clone();\r\n                rect.applyTransform(transform);\r\n            }\r\n        }\r\n        var layoutRect = getLayoutRect(defaults({ width: rect.width, height: rect.height }, positionInfo), containerRect, margin);\r\n        var dx = h ? layoutRect.x - rect.x : 0;\r\n        var dy = v ? layoutRect.y - rect.y : 0;\r\n        if (boundingMode === 'raw') {\r\n            el.x = dx;\r\n            el.y = dy;\r\n        }\r\n        else {\r\n            el.x += dx;\r\n            el.y += dy;\r\n        }\r\n        el.markRedraw();\r\n    }\r\n    function sizeCalculable(option, hvIdx) {\r\n        return option[HV_NAMES[hvIdx][0]] != null\r\n            || (option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null);\r\n    }\r\n    function fetchLayoutMode(ins) {\r\n        var layoutMode = ins.layoutMode || ins.constructor.layoutMode;\r\n        return isObject(layoutMode)\r\n            ? layoutMode\r\n            : layoutMode\r\n                ? { type: layoutMode }\r\n                : null;\r\n    }\r\n    function mergeLayoutParam(targetOption, newOption, opt) {\r\n        var ignoreSize = opt && opt.ignoreSize;\r\n        !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\r\n        var hResult = merge(HV_NAMES[0], 0);\r\n        var vResult = merge(HV_NAMES[1], 1);\r\n        copy(HV_NAMES[0], targetOption, hResult);\r\n        copy(HV_NAMES[1], targetOption, vResult);\r\n        function merge(names, hvIdx) {\r\n            var newParams = {};\r\n            var newValueCount = 0;\r\n            var merged = {};\r\n            var mergedValueCount = 0;\r\n            var enoughParamNumber = 2;\r\n            each$1(names, function (name) {\r\n                merged[name] = targetOption[name];\r\n            });\r\n            each$1(names, function (name) {\r\n                hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\r\n                hasValue(newParams, name) && newValueCount++;\r\n                hasValue(merged, name) && mergedValueCount++;\r\n            });\r\n            if (ignoreSize[hvIdx]) {\r\n                if (hasValue(newOption, names[1])) {\r\n                    merged[names[2]] = null;\r\n                }\r\n                else if (hasValue(newOption, names[2])) {\r\n                    merged[names[1]] = null;\r\n                }\r\n                return merged;\r\n            }\r\n            if (mergedValueCount === enoughParamNumber || !newValueCount) {\r\n                return merged;\r\n            }\r\n            else if (newValueCount >= enoughParamNumber) {\r\n                return newParams;\r\n            }\r\n            else {\r\n                for (var i = 0; i < names.length; i++) {\r\n                    var name_1 = names[i];\r\n                    if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {\r\n                        newParams[name_1] = targetOption[name_1];\r\n                        break;\r\n                    }\r\n                }\r\n                return newParams;\r\n            }\r\n        }\r\n        function hasProp(obj, name) {\r\n            return obj.hasOwnProperty(name);\r\n        }\r\n        function hasValue(obj, name) {\r\n            return obj[name] != null && obj[name] !== 'auto';\r\n        }\r\n        function copy(names, target, source) {\r\n            each$1(names, function (name) {\r\n                target[name] = source[name];\r\n            });\r\n        }\r\n    }\r\n    function getLayoutParams(source) {\r\n        return copyLayoutParams({}, source);\r\n    }\r\n    function copyLayoutParams(target, source) {\r\n        source && target && each$1(LOCATION_PARAMS, function (name) {\r\n            source.hasOwnProperty(name) && (target[name] = source[name]);\r\n        });\r\n        return target;\r\n    }\n\n    var inner = makeInner();\r\n    var ComponentModel = (function (_super) {\r\n        __extends(ComponentModel, _super);\r\n        function ComponentModel(option, parentModel, ecModel) {\r\n            var _this = _super.call(this, option, parentModel, ecModel) || this;\r\n            _this.uid = getUID('ec_cpt_model');\r\n            return _this;\r\n        }\r\n        ComponentModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n        };\r\n        ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeModel = ecModel.getTheme();\r\n            merge(option, themeModel.get(this.mainType));\r\n            merge(option, this.getDefaultOption());\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, option, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) { };\r\n        ComponentModel.prototype.getDefaultOption = function () {\r\n            var ctor = this.constructor;\r\n            if (!isExtendedClass(ctor)) {\r\n                return ctor.defaultOption;\r\n            }\r\n            var fields = inner(this);\r\n            if (!fields.defaultOption) {\r\n                var optList = [];\r\n                var clz = ctor;\r\n                while (clz) {\r\n                    var opt = clz.prototype.defaultOption;\r\n                    opt && optList.push(opt);\r\n                    clz = clz.superClass;\r\n                }\r\n                var defaultOption = {};\r\n                for (var i = optList.length - 1; i >= 0; i--) {\r\n                    defaultOption = merge(defaultOption, optList[i], true);\r\n                }\r\n                fields.defaultOption = defaultOption;\r\n            }\r\n            return fields.defaultOption;\r\n        };\r\n        ComponentModel.prototype.getReferringComponents = function (mainType, opt) {\r\n            var indexKey = (mainType + 'Index');\r\n            var idKey = (mainType + 'Id');\r\n            return queryReferringComponents(this.ecModel, mainType, {\r\n                index: this.get(indexKey, true),\r\n                id: this.get(idKey, true)\r\n            }, opt);\r\n        };\r\n        ComponentModel.prototype.getBoxLayoutParams = function () {\r\n            var boxLayoutModel = this;\r\n            return {\r\n                left: boxLayoutModel.get('left'),\r\n                top: boxLayoutModel.get('top'),\r\n                right: boxLayoutModel.get('right'),\r\n                bottom: boxLayoutModel.get('bottom'),\r\n                width: boxLayoutModel.get('width'),\r\n                height: boxLayoutModel.get('height')\r\n            };\r\n        };\r\n        ComponentModel.protoInitialize = (function () {\r\n            var proto = ComponentModel.prototype;\r\n            proto.type = 'component';\r\n            proto.id = '';\r\n            proto.name = '';\r\n            proto.mainType = '';\r\n            proto.subType = '';\r\n            proto.componentIndex = 0;\r\n        })();\r\n        return ComponentModel;\r\n    }(Model));\r\n    mountExtend(ComponentModel, Model);\r\n    enableClassManagement(ComponentModel, { registerWhenExtend: true });\r\n    enableSubTypeDefaulter(ComponentModel);\r\n    enableTopologicalTravel(ComponentModel, getDependencies);\r\n    function getDependencies(componentType) {\r\n        var deps = [];\r\n        each(ComponentModel.getClassesByMainType(componentType), function (clz) {\r\n            deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);\r\n        });\r\n        deps = map(deps, function (type) {\r\n            return parseClassType(type).main;\r\n        });\r\n        if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) {\r\n            deps.unshift('dataset');\r\n        }\r\n        return deps;\r\n    }\n\n    var platform = '';\r\n    if (typeof navigator !== 'undefined') {\r\n        platform = navigator.platform || '';\r\n    }\r\n    var decalColor = 'rgba(0, 0, 0, 0.2)';\r\n    var globalDefault = {\r\n        darkMode: 'auto',\r\n        color: [\r\n            '#5470c6',\r\n            '#91cc75',\r\n            '#fac858',\r\n            '#ee6666',\r\n            '#73c0de',\r\n            '#3ba272',\r\n            '#fc8452',\r\n            '#9a60b4',\r\n            '#ea7ccc'\r\n        ],\r\n        gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\r\n        aria: {\r\n            decal: {\r\n                decals: [{\r\n                        color: decalColor,\r\n                        dashArrayX: [1, 0],\r\n                        dashArrayY: [2, 5],\r\n                        symbolSize: 1,\r\n                        rotation: Math.PI / 6\r\n                    }, {\r\n                        color: decalColor,\r\n                        symbol: 'circle',\r\n                        dashArrayX: [[8, 8], [0, 8, 8, 0]],\r\n                        dashArrayY: [6, 0],\r\n                        symbolSize: 0.8\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [1, 0],\r\n                        dashArrayY: [4, 3],\r\n                        dashLineOffset: 0,\r\n                        rotation: -Math.PI / 4\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [[6, 6], [0, 6, 6, 0]],\r\n                        dashArrayY: [6, 0]\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [[1, 0], [1, 6]],\r\n                        dashArrayY: [1, 0, 6, 0],\r\n                        rotation: Math.PI / 4\r\n                    }, {\r\n                        color: decalColor,\r\n                        symbol: 'triangle',\r\n                        dashArrayX: [[9, 9], [0, 9, 9, 0]],\r\n                        dashArrayY: [7, 2],\r\n                        symbolSize: 0.75\r\n                    }]\r\n            }\r\n        },\r\n        textStyle: {\r\n            fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\r\n            fontSize: 12,\r\n            fontStyle: 'normal',\r\n            fontWeight: 'normal'\r\n        },\r\n        blendMode: null,\r\n        stateAnimation: {\r\n            duration: 300,\r\n            easing: 'cubicOut'\r\n        },\r\n        animation: 'auto',\r\n        animationDuration: 1000,\r\n        animationDurationUpdate: 500,\r\n        animationEasing: 'cubicInOut',\r\n        animationEasingUpdate: 'cubicInOut',\r\n        animationThreshold: 2000,\r\n        progressiveThreshold: 3000,\r\n        progressive: 400,\r\n        hoverLayerThreshold: 3000,\r\n        useUTC: false\r\n    };\n\n    var VISUAL_DIMENSIONS = createHashMap([\r\n        'tooltip', 'label', 'itemName', 'itemId', 'seriesName'\r\n    ]);\r\n    var SOURCE_FORMAT_ORIGINAL = 'original';\r\n    var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\r\n    var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\r\n    var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\r\n    var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\r\n    var SOURCE_FORMAT_UNKNOWN = 'unknown';\r\n    var SERIES_LAYOUT_BY_COLUMN = 'column';\r\n    var SERIES_LAYOUT_BY_ROW = 'row';\n\n    var BE_ORDINAL = {\r\n        Must: 1,\r\n        Might: 2,\r\n        Not: 3\r\n    };\r\n    var innerGlobalModel = makeInner();\r\n    function resetSourceDefaulter(ecModel) {\r\n        innerGlobalModel(ecModel).datasetMap = createHashMap();\r\n    }\r\n    function inheritSourceMetaRawOption(upstream, newMetaRawOption) {\r\n        var parentMetaRawOption = upstream ? upstream.metaRawOption : null;\r\n        var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, parentMetaRawOption ? parentMetaRawOption.seriesLayoutBy : null);\r\n        var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upstream ? upstream.startIndex : null);\r\n        var dimensions = retrieve2(newMetaRawOption.dimensions, upstream ? upstream.dimensionsDefine : null);\r\n        return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n    }\r\n    function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel || !coordDimensions) {\r\n            return encode;\r\n        }\r\n        var encodeItemName = [];\r\n        var encodeSeriesName = [];\r\n        var ecModel = seriesModel.ecModel;\r\n        var datasetMap = innerGlobalModel(ecModel).datasetMap;\r\n        var key = datasetModel.uid + '_' + source.seriesLayoutBy;\r\n        var baseCategoryDimIndex;\r\n        var categoryWayValueDimStart;\r\n        coordDimensions = coordDimensions.slice();\r\n        each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {\r\n            var coordDimInfo = isObject(coordDimInfoLoose)\r\n                ? coordDimInfoLoose\r\n                : (coordDimensions[coordDimIdx] = { name: coordDimInfoLoose });\r\n            if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\r\n                baseCategoryDimIndex = coordDimIdx;\r\n                categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);\r\n            }\r\n            encode[coordDimInfo.name] = [];\r\n        });\r\n        var datasetRecord = datasetMap.get(key)\r\n            || datasetMap.set(key, { categoryWayDim: categoryWayValueDimStart, valueWayDim: 0 });\r\n        each(coordDimensions, function (coordDimInfo, coordDimIdx) {\r\n            var coordDimName = coordDimInfo.name;\r\n            var count = getDataDimCountOnCoordDim(coordDimInfo);\r\n            if (baseCategoryDimIndex == null) {\r\n                var start = datasetRecord.valueWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.valueWayDim += count;\r\n            }\r\n            else if (baseCategoryDimIndex === coordDimIdx) {\r\n                pushDim(encode[coordDimName], 0, count);\r\n                pushDim(encodeItemName, 0, count);\r\n            }\r\n            else {\r\n                var start = datasetRecord.categoryWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.categoryWayDim += count;\r\n            }\r\n        });\r\n        function pushDim(dimIdxArr, idxFrom, idxCount) {\r\n            for (var i = 0; i < idxCount; i++) {\r\n                dimIdxArr.push(idxFrom + i);\r\n            }\r\n        }\r\n        function getDataDimCountOnCoordDim(coordDimInfo) {\r\n            var dimsDef = coordDimInfo.dimsDef;\r\n            return dimsDef ? dimsDef.length : 1;\r\n        }\r\n        encodeItemName.length && (encode.itemName = encodeItemName);\r\n        encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\r\n        return encode;\r\n    }\r\n    function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel) {\r\n            return encode;\r\n        }\r\n        var sourceFormat = source.sourceFormat;\r\n        var dimensionsDefine = source.dimensionsDefine;\r\n        var potentialNameDimIndex;\r\n        if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            each(dimensionsDefine, function (dim, idx) {\r\n                if ((isObject(dim) ? dim.name : dim) === 'name') {\r\n                    potentialNameDimIndex = idx;\r\n                }\r\n            });\r\n        }\r\n        var idxResult = (function () {\r\n            var idxRes0 = {};\r\n            var idxRes1 = {};\r\n            var guessRecords = [];\r\n            for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\r\n                var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\r\n                guessRecords.push(guessResult);\r\n                var isPureNumber = guessResult === BE_ORDINAL.Not;\r\n                if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\r\n                    idxRes0.v = i;\r\n                }\r\n                if (idxRes0.n == null\r\n                    || (idxRes0.n === idxRes0.v)\r\n                    || (!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)) {\r\n                    idxRes0.n = i;\r\n                }\r\n                if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\r\n                    return idxRes0;\r\n                }\r\n                if (!isPureNumber) {\r\n                    if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\r\n                        idxRes1.v = i;\r\n                    }\r\n                    if (idxRes1.n == null || (idxRes1.n === idxRes1.v)) {\r\n                        idxRes1.n = i;\r\n                    }\r\n                }\r\n            }\r\n            function fulfilled(idxResult) {\r\n                return idxResult.v != null && idxResult.n != null;\r\n            }\r\n            return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\r\n        })();\r\n        if (idxResult) {\r\n            encode.value = [idxResult.v];\r\n            var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;\r\n            encode.itemName = [nameDimIndex];\r\n            encode.seriesName = [nameDimIndex];\r\n        }\r\n        return encode;\r\n    }\r\n    function querySeriesUpstreamDatasetModel(seriesModel) {\r\n        var thisData = seriesModel.get('data', true);\r\n        if (!thisData) {\r\n            return queryReferringComponents(seriesModel.ecModel, 'dataset', {\r\n                index: seriesModel.get('datasetIndex', true),\r\n                id: seriesModel.get('datasetId', true)\r\n            }, SINGLE_REFERRING).models[0];\r\n        }\r\n    }\r\n    function queryDatasetUpstreamDatasetModels(datasetModel) {\r\n        if (!datasetModel.get('transform', true)\r\n            && !datasetModel.get('fromTransformResult', true)) {\r\n            return [];\r\n        }\r\n        return queryReferringComponents(datasetModel.ecModel, 'dataset', {\r\n            index: datasetModel.get('fromDatasetIndex', true),\r\n            id: datasetModel.get('fromDatasetId', true)\r\n        }, SINGLE_REFERRING).models;\r\n    }\r\n    function guessOrdinal(source, dimIndex) {\r\n        return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\r\n    }\r\n    function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\r\n        var result;\r\n        var maxLoop = 5;\r\n        if (isTypedArray(data)) {\r\n            return BE_ORDINAL.Not;\r\n        }\r\n        var dimName;\r\n        var dimType;\r\n        if (dimensionsDefine) {\r\n            var dimDefItem = dimensionsDefine[dimIndex];\r\n            if (isObject(dimDefItem)) {\r\n                dimName = dimDefItem.name;\r\n                dimType = dimDefItem.type;\r\n            }\r\n            else if (isString(dimDefItem)) {\r\n                dimName = dimDefItem;\r\n            }\r\n        }\r\n        if (dimType != null) {\r\n            return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n                var sample = dataArrayRows[dimIndex];\r\n                for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\r\n                    if ((result = detectValue(sample[startIndex + i])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {\r\n                    var row = dataArrayRows[startIndex + i];\r\n                    if (row && (result = detectValue(row[dimIndex])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var dataObjectRows = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {\r\n                var item = dataObjectRows[i];\r\n                if (item && (result = detectValue(item[dimName])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            var dataKeyedColumns = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            var sample = dataKeyedColumns[dimName];\r\n            if (!sample || isTypedArray(sample)) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < sample.length && i < maxLoop; i++) {\r\n                if ((result = detectValue(sample[i])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var dataOriginal = data;\r\n            for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {\r\n                var item = dataOriginal[i];\r\n                var val = getDataItemValue(item);\r\n                if (!isArray(val)) {\r\n                    return BE_ORDINAL.Not;\r\n                }\r\n                if ((result = detectValue(val[dimIndex])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        function detectValue(val) {\r\n            var beStr = isString(val);\r\n            if (val != null && isFinite(val) && val !== '') {\r\n                return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\r\n            }\r\n            else if (beStr && val !== '-') {\r\n                return BE_ORDINAL.Must;\r\n            }\r\n        }\r\n        return BE_ORDINAL.Not;\r\n    }\n\n    var internalOptionCreatorMap = createHashMap();\r\n    function registerInternalOptionCreator(mainType, creator) {\r\n        assert(internalOptionCreatorMap.get(mainType) == null && creator);\r\n        internalOptionCreatorMap.set(mainType, creator);\r\n    }\r\n    function concatInternalOptions(ecModel, mainType, newCmptOptionList) {\r\n        var internalOptionCreator = internalOptionCreatorMap.get(mainType);\r\n        if (!internalOptionCreator) {\r\n            return newCmptOptionList;\r\n        }\r\n        var internalOptions = internalOptionCreator(ecModel);\r\n        if (!internalOptions) {\r\n            return newCmptOptionList;\r\n        }\r\n        if (__DEV__) {\r\n            for (var i = 0; i < internalOptions.length; i++) {\r\n                assert(isComponentIdInternal(internalOptions[i]));\r\n            }\r\n        }\r\n        return newCmptOptionList.concat(internalOptions);\r\n    }\n\n    var innerColor = makeInner();\r\n    var innerDecal = makeInner();\r\n    var PaletteMixin = (function () {\r\n        function PaletteMixin() {\r\n        }\r\n        PaletteMixin.prototype.getColorFromPalette = function (name, scope, requestNum) {\r\n            var defaultPalette = normalizeToArray(this.get('color', true));\r\n            var layeredPalette = this.get('colorLayer', true);\r\n            return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);\r\n        };\r\n        PaletteMixin.prototype.clearColorPalette = function () {\r\n            clearPalette(this, innerColor);\r\n        };\r\n        return PaletteMixin;\r\n    }());\r\n    function getDecalFromPalette(ecModel, name, scope, requestNum) {\r\n        var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']));\r\n        return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);\r\n    }\r\n    function getNearestPalette(palettes, requestColorNum) {\r\n        var paletteNum = palettes.length;\r\n        for (var i = 0; i < paletteNum; i++) {\r\n            if (palettes[i].length > requestColorNum) {\r\n                return palettes[i];\r\n            }\r\n        }\r\n        return palettes[paletteNum - 1];\r\n    }\r\n    function getFromPalette(that, inner, defaultPalette, layeredPalette, name, scope, requestNum) {\r\n        scope = scope || that;\r\n        var scopeFields = inner(scope);\r\n        var paletteIdx = scopeFields.paletteIdx || 0;\r\n        var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {};\r\n        if (paletteNameMap.hasOwnProperty(name)) {\r\n            return paletteNameMap[name];\r\n        }\r\n        var palette = ((requestNum == null || !layeredPalette)\r\n            ? defaultPalette : getNearestPalette(layeredPalette, requestNum));\r\n        palette = palette || defaultPalette;\r\n        if (!palette || !palette.length) {\r\n            return;\r\n        }\r\n        var pickedPaletteItem = palette[paletteIdx];\r\n        if (name) {\r\n            paletteNameMap[name] = pickedPaletteItem;\r\n        }\r\n        scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;\r\n        return pickedPaletteItem;\r\n    }\r\n    function clearPalette(that, inner) {\r\n        inner(that).paletteIdx = 0;\r\n        inner(that).paletteNameMap = {};\r\n    }\n\n    var reCreateSeriesIndices;\r\n    var assertSeriesInitialized;\r\n    var initBase;\r\n    var OPTION_INNER_KEY = '\\0_ec_inner';\r\n    var GlobalModel = (function (_super) {\r\n        __extends(GlobalModel, _super);\r\n        function GlobalModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) {\r\n            theme = theme || {};\r\n            this.option = null;\r\n            this._theme = new Model(theme);\r\n            this._locale = new Model(locale);\r\n            this._optionManager = optionManager;\r\n        };\r\n        GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) {\r\n            assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\r\n            var innerOpt = normalizeSetOptionInput(opts);\r\n            this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt);\r\n            this._resetOption(null, innerOpt);\r\n        };\r\n        GlobalModel.prototype.resetOption = function (type, opt) {\r\n            return this._resetOption(type, normalizeSetOptionInput(opt));\r\n        };\r\n        GlobalModel.prototype._resetOption = function (type, opt) {\r\n            var optionChanged = false;\r\n            var optionManager = this._optionManager;\r\n            if (!type || type === 'recreate') {\r\n                var baseOption = optionManager.mountOption(type === 'recreate');\r\n                if (!this.option || type === 'recreate') {\r\n                    initBase(this, baseOption);\r\n                }\r\n                else {\r\n                    this.restoreData();\r\n                    this._mergeOption(baseOption, opt);\r\n                }\r\n                optionChanged = true;\r\n            }\r\n            if (type === 'timeline' || type === 'media') {\r\n                this.restoreData();\r\n            }\r\n            if (!type || type === 'recreate' || type === 'timeline') {\r\n                var timelineOption = optionManager.getTimelineOption(this);\r\n                if (timelineOption) {\r\n                    optionChanged = true;\r\n                    this._mergeOption(timelineOption, opt);\r\n                }\r\n            }\r\n            if (!type || type === 'recreate' || type === 'media') {\r\n                var mediaOptions = optionManager.getMediaOption(this);\r\n                if (mediaOptions.length) {\r\n                    each(mediaOptions, function (mediaOption) {\r\n                        optionChanged = true;\r\n                        this._mergeOption(mediaOption, opt);\r\n                    }, this);\r\n                }\r\n            }\r\n            return optionChanged;\r\n        };\r\n        GlobalModel.prototype.mergeOption = function (option) {\r\n            this._mergeOption(option, null);\r\n        };\r\n        GlobalModel.prototype._mergeOption = function (newOption, opt) {\r\n            var option = this.option;\r\n            var componentsMap = this._componentsMap;\r\n            var componentsCount = this._componentsCount;\r\n            var newCmptTypes = [];\r\n            var newCmptTypeMap = createHashMap();\r\n            var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;\r\n            resetSourceDefaulter(this);\r\n            each(newOption, function (componentOption, mainType) {\r\n                if (componentOption == null) {\r\n                    return;\r\n                }\r\n                if (!ComponentModel.hasClass(mainType)) {\r\n                    option[mainType] = option[mainType] == null\r\n                        ? clone(componentOption)\r\n                        : merge(option[mainType], componentOption, true);\r\n                }\r\n                else if (mainType) {\r\n                    newCmptTypes.push(mainType);\r\n                    newCmptTypeMap.set(mainType, true);\r\n                }\r\n            });\r\n            if (replaceMergeMainTypeMap) {\r\n                replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) {\r\n                    if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {\r\n                        newCmptTypes.push(mainTypeInReplaceMerge);\r\n                        newCmptTypeMap.set(mainTypeInReplaceMerge, true);\r\n                    }\r\n                });\r\n            }\r\n            ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\r\n            function visitComponent(mainType) {\r\n                var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));\r\n                var oldCmptList = componentsMap.get(mainType);\r\n                var mergeMode = !oldCmptList ? 'replaceAll'\r\n                    : (replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType)) ? 'replaceMerge'\r\n                        : 'normalMerge';\r\n                var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);\r\n                setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel);\r\n                option[mainType] = null;\r\n                componentsMap.set(mainType, null);\r\n                componentsCount.set(mainType, 0);\r\n                var optionsByMainType = [];\r\n                var cmptsByMainType = [];\r\n                var cmptsCountByMainType = 0;\r\n                each(mappingResult, function (resultItem, index) {\r\n                    var componentModel = resultItem.existing;\r\n                    var newCmptOption = resultItem.newOption;\r\n                    if (!newCmptOption) {\r\n                        if (componentModel) {\r\n                            componentModel.mergeOption({}, this);\r\n                            componentModel.optionUpdated({}, false);\r\n                        }\r\n                    }\r\n                    else {\r\n                        var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\r\n                        if (componentModel && componentModel.constructor === ComponentModelClass) {\r\n                            componentModel.name = resultItem.keyInfo.name;\r\n                            componentModel.mergeOption(newCmptOption, this);\r\n                            componentModel.optionUpdated(newCmptOption, false);\r\n                        }\r\n                        else {\r\n                            var extraOpt = extend({\r\n                                componentIndex: index\r\n                            }, resultItem.keyInfo);\r\n                            componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);\r\n                            extend(componentModel, extraOpt);\r\n                            if (resultItem.brandNew) {\r\n                                componentModel.__requireNewView = true;\r\n                            }\r\n                            componentModel.init(newCmptOption, this, this);\r\n                            componentModel.optionUpdated(null, true);\r\n                        }\r\n                    }\r\n                    if (componentModel) {\r\n                        optionsByMainType.push(componentModel.option);\r\n                        cmptsByMainType.push(componentModel);\r\n                        cmptsCountByMainType++;\r\n                    }\r\n                    else {\r\n                        optionsByMainType.push(void 0);\r\n                        cmptsByMainType.push(void 0);\r\n                    }\r\n                }, this);\r\n                option[mainType] = optionsByMainType;\r\n                componentsMap.set(mainType, cmptsByMainType);\r\n                componentsCount.set(mainType, cmptsCountByMainType);\r\n                if (mainType === 'series') {\r\n                    reCreateSeriesIndices(this);\r\n                }\r\n            }\r\n            if (!this._seriesIndices) {\r\n                reCreateSeriesIndices(this);\r\n            }\r\n        };\r\n        GlobalModel.prototype.getOption = function () {\r\n            var option = clone(this.option);\r\n            each(option, function (optInMainType, mainType) {\r\n                if (ComponentModel.hasClass(mainType)) {\r\n                    var opts = normalizeToArray(optInMainType);\r\n                    var realLen = opts.length;\r\n                    var metNonInner = false;\r\n                    for (var i = realLen - 1; i >= 0; i--) {\r\n                        if (opts[i] && !isComponentIdInternal(opts[i])) {\r\n                            metNonInner = true;\r\n                        }\r\n                        else {\r\n                            opts[i] = null;\r\n                            !metNonInner && realLen--;\r\n                        }\r\n                    }\r\n                    opts.length = realLen;\r\n                    option[mainType] = opts;\r\n                }\r\n            });\r\n            delete option[OPTION_INNER_KEY];\r\n            return option;\r\n        };\r\n        GlobalModel.prototype.getTheme = function () {\r\n            return this._theme;\r\n        };\r\n        GlobalModel.prototype.getLocaleModel = function () {\r\n            return this._locale;\r\n        };\r\n        GlobalModel.prototype.getLocale = function (localePosition) {\r\n            var locale = this.getLocaleModel();\r\n            return locale.get(localePosition);\r\n        };\r\n        GlobalModel.prototype.setUpdatePayload = function (payload) {\r\n            this._payload = payload;\r\n        };\r\n        GlobalModel.prototype.getUpdatePayload = function () {\r\n            return this._payload;\r\n        };\r\n        GlobalModel.prototype.getComponent = function (mainType, idx) {\r\n            var list = this._componentsMap.get(mainType);\r\n            if (list) {\r\n                var cmpt = list[idx || 0];\r\n                if (cmpt) {\r\n                    return cmpt;\r\n                }\r\n                else if (idx == null) {\r\n                    for (var i = 0; i < list.length; i++) {\r\n                        if (list[i]) {\r\n                            return list[i];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.queryComponents = function (condition) {\r\n            var mainType = condition.mainType;\r\n            if (!mainType) {\r\n                return [];\r\n            }\r\n            var index = condition.index;\r\n            var id = condition.id;\r\n            var name = condition.name;\r\n            var cmpts = this._componentsMap.get(mainType);\r\n            if (!cmpts || !cmpts.length) {\r\n                return [];\r\n            }\r\n            var result;\r\n            if (index != null) {\r\n                result = [];\r\n                each(normalizeToArray(index), function (idx) {\r\n                    cmpts[idx] && result.push(cmpts[idx]);\r\n                });\r\n            }\r\n            else if (id != null) {\r\n                result = queryByIdOrName('id', id, cmpts);\r\n            }\r\n            else if (name != null) {\r\n                result = queryByIdOrName('name', name, cmpts);\r\n            }\r\n            else {\r\n                result = filter(cmpts, function (cmpt) { return !!cmpt; });\r\n            }\r\n            return filterBySubType(result, condition);\r\n        };\r\n        GlobalModel.prototype.findComponents = function (condition) {\r\n            var query = condition.query;\r\n            var mainType = condition.mainType;\r\n            var queryCond = getQueryCond(query);\r\n            var result = queryCond\r\n                ? this.queryComponents(queryCond)\r\n                : filter(this._componentsMap.get(mainType), function (cmpt) { return !!cmpt; });\r\n            return doFilter(filterBySubType(result, condition));\r\n            function getQueryCond(q) {\r\n                var indexAttr = mainType + 'Index';\r\n                var idAttr = mainType + 'Id';\r\n                var nameAttr = mainType + 'Name';\r\n                return q && (q[indexAttr] != null\r\n                    || q[idAttr] != null\r\n                    || q[nameAttr] != null)\r\n                    ? {\r\n                        mainType: mainType,\r\n                        index: q[indexAttr],\r\n                        id: q[idAttr],\r\n                        name: q[nameAttr]\r\n                    }\r\n                    : null;\r\n            }\r\n            function doFilter(res) {\r\n                return condition.filter\r\n                    ? filter(res, condition.filter)\r\n                    : res;\r\n            }\r\n        };\r\n        GlobalModel.prototype.eachComponent = function (mainType, cb, context) {\r\n            var componentsMap = this._componentsMap;\r\n            if (isFunction(mainType)) {\r\n                var ctxForAll_1 = cb;\r\n                var cbForAll_1 = mainType;\r\n                componentsMap.each(function (cmpts, componentType) {\r\n                    for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                        var cmpt = cmpts[i];\r\n                        cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex);\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var cmpts = isString(mainType)\r\n                    ? componentsMap.get(mainType)\r\n                    : isObject(mainType)\r\n                        ? this.findComponents(mainType)\r\n                        : null;\r\n                for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                    var cmpt = cmpts[i];\r\n                    cmpt && cb.call(context, cmpt, cmpt.componentIndex);\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.getSeriesByName = function (name) {\r\n            var nameStr = convertOptionIdName(name, null);\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && nameStr != null && oneSeries.name === nameStr; });\r\n        };\r\n        GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) {\r\n            return this._componentsMap.get('series')[seriesIndex];\r\n        };\r\n        GlobalModel.prototype.getSeriesByType = function (subType) {\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && oneSeries.subType === subType; });\r\n        };\r\n        GlobalModel.prototype.getSeries = function () {\r\n            return filter(this._componentsMap.get('series').slice(), function (oneSeries) { return !!oneSeries; });\r\n        };\r\n        GlobalModel.prototype.getSeriesCount = function () {\r\n            return this._componentsCount.get('series');\r\n        };\r\n        GlobalModel.prototype.eachSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                cb.call(context, series, rawSeriesIndex);\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeries = function (cb, context) {\r\n            each(this._componentsMap.get('series'), function (series) {\r\n                series && cb.call(context, series, series.componentIndex);\r\n            });\r\n        };\r\n        GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                if (series.subType === subType) {\r\n                    cb.call(context, series, rawSeriesIndex);\r\n                }\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) {\r\n            return each(this.getSeriesByType(subType), cb, context);\r\n        };\r\n        GlobalModel.prototype.isSeriesFiltered = function (seriesModel) {\r\n            assertSeriesInitialized(this);\r\n            return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\r\n        };\r\n        GlobalModel.prototype.getCurrentSeriesIndices = function () {\r\n            return (this._seriesIndices || []).slice();\r\n        };\r\n        GlobalModel.prototype.filterSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            var newSeriesIndices = [];\r\n            each(this._seriesIndices, function (seriesRawIdx) {\r\n                var series = this._componentsMap.get('series')[seriesRawIdx];\r\n                cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);\r\n            }, this);\r\n            this._seriesIndices = newSeriesIndices;\r\n            this._seriesIndicesMap = createHashMap(newSeriesIndices);\r\n        };\r\n        GlobalModel.prototype.restoreData = function (payload) {\r\n            reCreateSeriesIndices(this);\r\n            var componentsMap = this._componentsMap;\r\n            var componentTypes = [];\r\n            componentsMap.each(function (components, componentType) {\r\n                if (ComponentModel.hasClass(componentType)) {\r\n                    componentTypes.push(componentType);\r\n                }\r\n            });\r\n            ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) {\r\n                each(componentsMap.get(componentType), function (component) {\r\n                    if (component\r\n                        && (componentType !== 'series'\r\n                            || !isNotTargetSeries(component, payload))) {\r\n                        component.restoreData();\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        GlobalModel.internalField = (function () {\r\n            reCreateSeriesIndices = function (ecModel) {\r\n                var seriesIndices = ecModel._seriesIndices = [];\r\n                each(ecModel._componentsMap.get('series'), function (series) {\r\n                    series && seriesIndices.push(series.componentIndex);\r\n                });\r\n                ecModel._seriesIndicesMap = createHashMap(seriesIndices);\r\n            };\r\n            assertSeriesInitialized = function (ecModel) {\r\n                if (__DEV__) {\r\n                    if (!ecModel._seriesIndices) {\r\n                        throw new Error('Option should contains series.');\r\n                    }\r\n                }\r\n            };\r\n            initBase = function (ecModel, baseOption) {\r\n                ecModel.option = {};\r\n                ecModel.option[OPTION_INNER_KEY] = 1;\r\n                ecModel._componentsMap = createHashMap({ series: [] });\r\n                ecModel._componentsCount = createHashMap();\r\n                var airaOption = baseOption.aria;\r\n                if (isObject(airaOption) && airaOption.enabled == null) {\r\n                    airaOption.enabled = true;\r\n                }\r\n                mergeTheme(baseOption, ecModel._theme.option);\r\n                merge(baseOption, globalDefault, false);\r\n                ecModel._mergeOption(baseOption, null);\r\n            };\r\n        })();\r\n        return GlobalModel;\r\n    }(Model));\r\n    function isNotTargetSeries(seriesModel, payload) {\r\n        if (payload) {\r\n            var index = payload.seriesIndex;\r\n            var id = payload.seriesId;\r\n            var name_1 = payload.seriesName;\r\n            return (index != null && seriesModel.componentIndex !== index)\r\n                || (id != null && seriesModel.id !== id)\r\n                || (name_1 != null && seriesModel.name !== name_1);\r\n        }\r\n    }\r\n    function mergeTheme(option, theme) {\r\n        var notMergeColorLayer = option.color && !option.colorLayer;\r\n        each(theme, function (themeItem, name) {\r\n            if (name === 'colorLayer' && notMergeColorLayer) {\r\n                return;\r\n            }\r\n            if (!ComponentModel.hasClass(name)) {\r\n                if (typeof themeItem === 'object') {\r\n                    option[name] = !option[name]\r\n                        ? clone(themeItem)\r\n                        : merge(option[name], themeItem, false);\r\n                }\r\n                else {\r\n                    if (option[name] == null) {\r\n                        option[name] = themeItem;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function queryByIdOrName(attr, idOrName, cmpts) {\r\n        if (isArray(idOrName)) {\r\n            var keyMap_1 = createHashMap();\r\n            each(idOrName, function (idOrNameItem) {\r\n                if (idOrNameItem != null) {\r\n                    var idName = convertOptionIdName(idOrNameItem, null);\r\n                    idName != null && keyMap_1.set(idOrNameItem, true);\r\n                }\r\n            });\r\n            return filter(cmpts, function (cmpt) { return cmpt && keyMap_1.get(cmpt[attr]); });\r\n        }\r\n        else {\r\n            var idName_1 = convertOptionIdName(idOrName, null);\r\n            return filter(cmpts, function (cmpt) { return cmpt && idName_1 != null && cmpt[attr] === idName_1; });\r\n        }\r\n    }\r\n    function filterBySubType(components, condition) {\r\n        return condition.hasOwnProperty('subType')\r\n            ? filter(components, function (cmpt) { return cmpt && cmpt.subType === condition.subType; })\r\n            : components;\r\n    }\r\n    function normalizeSetOptionInput(opts) {\r\n        var replaceMergeMainTypeMap = createHashMap();\r\n        opts && each(normalizeToArray(opts.replaceMerge), function (mainType) {\r\n            if (__DEV__) {\r\n                assert(ComponentModel.hasClass(mainType), '\"' + mainType + '\" is not valid component main type in \"replaceMerge\"');\r\n            }\r\n            replaceMergeMainTypeMap.set(mainType, true);\r\n        });\r\n        return {\r\n            replaceMergeMainTypeMap: replaceMergeMainTypeMap\r\n        };\r\n    }\r\n    mixin(GlobalModel, PaletteMixin);\n\n    var availableMethods = [\r\n        'getDom',\r\n        'getZr',\r\n        'getWidth',\r\n        'getHeight',\r\n        'getDevicePixelRatio',\r\n        'dispatchAction',\r\n        'isDisposed',\r\n        'on',\r\n        'off',\r\n        'getDataURL',\r\n        'getConnectedDataURL',\r\n        'getOption',\r\n        'getId',\r\n        'updateLabelLayout'\r\n    ];\r\n    var ExtensionAPI = (function () {\r\n        function ExtensionAPI(ecInstance) {\r\n            each(availableMethods, function (methodName) {\r\n                this[methodName] = bind(ecInstance[methodName], ecInstance);\r\n            }, this);\r\n        }\r\n        return ExtensionAPI;\r\n    }());\n\n    var coordinateSystemCreators = {};\r\n    var CoordinateSystemManager = (function () {\r\n        function CoordinateSystemManager() {\r\n            this._coordinateSystems = [];\r\n        }\r\n        CoordinateSystemManager.prototype.create = function (ecModel, api) {\r\n            var coordinateSystems = [];\r\n            each(coordinateSystemCreators, function (creater, type) {\r\n                var list = creater.create(ecModel, api);\r\n                coordinateSystems = coordinateSystems.concat(list || []);\r\n            });\r\n            this._coordinateSystems = coordinateSystems;\r\n        };\r\n        CoordinateSystemManager.prototype.update = function (ecModel, api) {\r\n            each(this._coordinateSystems, function (coordSys) {\r\n                coordSys.update && coordSys.update(ecModel, api);\r\n            });\r\n        };\r\n        CoordinateSystemManager.prototype.getCoordinateSystems = function () {\r\n            return this._coordinateSystems.slice();\r\n        };\r\n        CoordinateSystemManager.register = function (type, creator) {\r\n            coordinateSystemCreators[type] = creator;\r\n        };\r\n        CoordinateSystemManager.get = function (type) {\r\n            return coordinateSystemCreators[type];\r\n        };\r\n        return CoordinateSystemManager;\r\n    }());\n\n    var QUERY_REG = /^(min|max)?(.+)$/;\r\n    var OptionManager = (function () {\r\n        function OptionManager(api) {\r\n            this._timelineOptions = [];\r\n            this._mediaList = [];\r\n            this._currentMediaIndices = [];\r\n            this._api = api;\r\n        }\r\n        OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) {\r\n            if (rawOption) {\r\n                each(normalizeToArray(rawOption.series), function (series) {\r\n                    series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);\r\n                });\r\n                each(normalizeToArray(rawOption.dataset), function (dataset) {\r\n                    dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);\r\n                });\r\n            }\r\n            rawOption = clone(rawOption);\r\n            var optionBackup = this._optionBackup;\r\n            var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup);\r\n            this._newBaseOption = newParsedOption.baseOption;\r\n            if (optionBackup) {\r\n                if (newParsedOption.timelineOptions.length) {\r\n                    optionBackup.timelineOptions = newParsedOption.timelineOptions;\r\n                }\r\n                if (newParsedOption.mediaList.length) {\r\n                    optionBackup.mediaList = newParsedOption.mediaList;\r\n                }\r\n                if (newParsedOption.mediaDefault) {\r\n                    optionBackup.mediaDefault = newParsedOption.mediaDefault;\r\n                }\r\n            }\r\n            else {\r\n                this._optionBackup = newParsedOption;\r\n            }\r\n        };\r\n        OptionManager.prototype.mountOption = function (isRecreate) {\r\n            var optionBackup = this._optionBackup;\r\n            this._timelineOptions = optionBackup.timelineOptions;\r\n            this._mediaList = optionBackup.mediaList;\r\n            this._mediaDefault = optionBackup.mediaDefault;\r\n            this._currentMediaIndices = [];\r\n            return clone(isRecreate\r\n                ? optionBackup.baseOption : this._newBaseOption);\r\n        };\r\n        OptionManager.prototype.getTimelineOption = function (ecModel) {\r\n            var option;\r\n            var timelineOptions = this._timelineOptions;\r\n            if (timelineOptions.length) {\r\n                var timelineModel = ecModel.getComponent('timeline');\r\n                if (timelineModel) {\r\n                    option = clone(timelineOptions[timelineModel.getCurrentIndex()]);\r\n                }\r\n            }\r\n            return option;\r\n        };\r\n        OptionManager.prototype.getMediaOption = function (ecModel) {\r\n            var ecWidth = this._api.getWidth();\r\n            var ecHeight = this._api.getHeight();\r\n            var mediaList = this._mediaList;\r\n            var mediaDefault = this._mediaDefault;\r\n            var indices = [];\r\n            var result = [];\r\n            if (!mediaList.length && !mediaDefault) {\r\n                return result;\r\n            }\r\n            for (var i = 0, len = mediaList.length; i < len; i++) {\r\n                if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\r\n                    indices.push(i);\r\n                }\r\n            }\r\n            if (!indices.length && mediaDefault) {\r\n                indices = [-1];\r\n            }\r\n            if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\r\n                result = map(indices, function (index) {\r\n                    return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\r\n                });\r\n            }\r\n            this._currentMediaIndices = indices;\r\n            return result;\r\n        };\r\n        return OptionManager;\r\n    }());\r\n    function parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\r\n        var mediaList = [];\r\n        var mediaDefault;\r\n        var baseOption;\r\n        var declaredBaseOption = rawOption.baseOption;\r\n        var timelineOnRoot = rawOption.timeline;\r\n        var timelineOptionsOnRoot = rawOption.options;\r\n        var mediaOnRoot = rawOption.media;\r\n        var hasMedia = !!rawOption.media;\r\n        var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || (declaredBaseOption && declaredBaseOption.timeline));\r\n        if (declaredBaseOption) {\r\n            baseOption = declaredBaseOption;\r\n            if (!baseOption.timeline) {\r\n                baseOption.timeline = timelineOnRoot;\r\n            }\r\n        }\r\n        else {\r\n            if (hasTimeline || hasMedia) {\r\n                rawOption.options = rawOption.media = null;\r\n            }\r\n            baseOption = rawOption;\r\n        }\r\n        if (hasMedia) {\r\n            if (isArray(mediaOnRoot)) {\r\n                each(mediaOnRoot, function (singleMedia) {\r\n                    if (__DEV__) {\r\n                        if (singleMedia\r\n                            && !singleMedia.option\r\n                            && isObject(singleMedia.query)\r\n                            && isObject(singleMedia.query.option)) {\r\n                            error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }');\r\n                        }\r\n                    }\r\n                    if (singleMedia && singleMedia.option) {\r\n                        if (singleMedia.query) {\r\n                            mediaList.push(singleMedia);\r\n                        }\r\n                        else if (!mediaDefault) {\r\n                            mediaDefault = singleMedia;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }');\r\n                }\r\n            }\r\n        }\r\n        doPreprocess(baseOption);\r\n        each(timelineOptionsOnRoot, function (option) { return doPreprocess(option); });\r\n        each(mediaList, function (media) { return doPreprocess(media.option); });\r\n        function doPreprocess(option) {\r\n            each(optionPreprocessorFuncs, function (preProcess) {\r\n                preProcess(option, isNew);\r\n            });\r\n        }\r\n        return {\r\n            baseOption: baseOption,\r\n            timelineOptions: timelineOptionsOnRoot || [],\r\n            mediaDefault: mediaDefault,\r\n            mediaList: mediaList\r\n        };\r\n    }\r\n    function applyMediaQuery(query, ecWidth, ecHeight) {\r\n        var realMap = {\r\n            width: ecWidth,\r\n            height: ecHeight,\r\n            aspectratio: ecWidth / ecHeight\r\n        };\r\n        var applicatable = true;\r\n        each(query, function (value, attr) {\r\n            var matched = attr.match(QUERY_REG);\r\n            if (!matched || !matched[1] || !matched[2]) {\r\n                return;\r\n            }\r\n            var operator = matched[1];\r\n            var realAttr = matched[2].toLowerCase();\r\n            if (!compare(realMap[realAttr], value, operator)) {\r\n                applicatable = false;\r\n            }\r\n        });\r\n        return applicatable;\r\n    }\r\n    function compare(real, expect, operator) {\r\n        if (operator === 'min') {\r\n            return real >= expect;\r\n        }\r\n        else if (operator === 'max') {\r\n            return real <= expect;\r\n        }\r\n        else {\r\n            return real === expect;\r\n        }\r\n    }\r\n    function indicesEquals(indices1, indices2) {\r\n        return indices1.join(',') === indices2.join(',');\r\n    }\n\n    var each$2 = each;\r\n    var isObject$1 = isObject;\r\n    var POSSIBLE_STYLES = [\r\n        'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',\r\n        'chordStyle', 'label', 'labelLine'\r\n    ];\r\n    function compatEC2ItemStyle(opt) {\r\n        var itemStyleOpt = opt && opt.itemStyle;\r\n        if (!itemStyleOpt) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\r\n            var styleName = POSSIBLE_STYLES[i];\r\n            var normalItemStyleOpt = itemStyleOpt.normal;\r\n            var emphasisItemStyleOpt = itemStyleOpt.emphasis;\r\n            if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.normal.\" + styleName, styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].normal) {\r\n                    opt[styleName].normal = normalItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\r\n                }\r\n                normalItemStyleOpt[styleName] = null;\r\n            }\r\n            if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.emphasis.\" + styleName, \"emphasis.\" + styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].emphasis) {\r\n                    opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\r\n                }\r\n                emphasisItemStyleOpt[styleName] = null;\r\n            }\r\n        }\r\n    }\r\n    function convertNormalEmphasis(opt, optType, useExtend) {\r\n        if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\r\n            var normalOpt = opt[optType].normal;\r\n            var emphasisOpt = opt[optType].emphasis;\r\n            if (normalOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(\"'normal' hierarchy in \" + optType + \" has been removed since 4.0. All style properties are configured in \" + optType + \" directly now.\");\r\n                }\r\n                if (useExtend) {\r\n                    opt[optType].normal = opt[optType].emphasis = null;\r\n                    defaults(opt[optType], normalOpt);\r\n                }\r\n                else {\r\n                    opt[optType] = normalOpt;\r\n                }\r\n            }\r\n            if (emphasisOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(optType + \".emphasis has been changed to emphasis.\" + optType + \" since 4.0\");\r\n                }\r\n                opt.emphasis = opt.emphasis || {};\r\n                opt.emphasis[optType] = emphasisOpt;\r\n                if (emphasisOpt.focus) {\r\n                    opt.emphasis.focus = emphasisOpt.focus;\r\n                }\r\n                if (emphasisOpt.blurScope) {\r\n                    opt.emphasis.blurScope = emphasisOpt.blurScope;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function removeEC3NormalStatus(opt) {\r\n        convertNormalEmphasis(opt, 'itemStyle');\r\n        convertNormalEmphasis(opt, 'lineStyle');\r\n        convertNormalEmphasis(opt, 'areaStyle');\r\n        convertNormalEmphasis(opt, 'label');\r\n        convertNormalEmphasis(opt, 'labelLine');\r\n        convertNormalEmphasis(opt, 'upperLabel');\r\n        convertNormalEmphasis(opt, 'edgeLabel');\r\n    }\r\n    function compatTextStyle(opt, propName) {\r\n        var labelOptSingle = isObject$1(opt) && opt[propName];\r\n        var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle;\r\n        if (textStyle) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"textStyle hierarchy in \" + propName + \" has been removed since 4.0. All textStyle properties are configured in \" + propName + \" directly now.\");\r\n            }\r\n            for (var i = 0, len = TEXT_STYLE_OPTIONS.length; i < len; i++) {\r\n                var textPropName = TEXT_STYLE_OPTIONS[i];\r\n                if (textStyle.hasOwnProperty(textPropName)) {\r\n                    labelOptSingle[textPropName] = textStyle[textPropName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatEC3CommonStyles(opt) {\r\n        if (opt) {\r\n            removeEC3NormalStatus(opt);\r\n            compatTextStyle(opt, 'label');\r\n            opt.emphasis && compatTextStyle(opt.emphasis, 'label');\r\n        }\r\n    }\r\n    function processSeries(seriesOpt) {\r\n        if (!isObject$1(seriesOpt)) {\r\n            return;\r\n        }\r\n        compatEC2ItemStyle(seriesOpt);\r\n        removeEC3NormalStatus(seriesOpt);\r\n        compatTextStyle(seriesOpt, 'label');\r\n        compatTextStyle(seriesOpt, 'upperLabel');\r\n        compatTextStyle(seriesOpt, 'edgeLabel');\r\n        if (seriesOpt.emphasis) {\r\n            compatTextStyle(seriesOpt.emphasis, 'label');\r\n            compatTextStyle(seriesOpt.emphasis, 'upperLabel');\r\n            compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\r\n        }\r\n        var markPoint = seriesOpt.markPoint;\r\n        if (markPoint) {\r\n            compatEC2ItemStyle(markPoint);\r\n            compatEC3CommonStyles(markPoint);\r\n        }\r\n        var markLine = seriesOpt.markLine;\r\n        if (markLine) {\r\n            compatEC2ItemStyle(markLine);\r\n            compatEC3CommonStyles(markLine);\r\n        }\r\n        var markArea = seriesOpt.markArea;\r\n        if (markArea) {\r\n            compatEC3CommonStyles(markArea);\r\n        }\r\n        var data = seriesOpt.data;\r\n        if (seriesOpt.type === 'graph') {\r\n            data = data || seriesOpt.nodes;\r\n            var edgeData = seriesOpt.links || seriesOpt.edges;\r\n            if (edgeData && !isTypedArray(edgeData)) {\r\n                for (var i = 0; i < edgeData.length; i++) {\r\n                    compatEC3CommonStyles(edgeData[i]);\r\n                }\r\n            }\r\n            each(seriesOpt.categories, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        if (data && !isTypedArray(data)) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                compatEC3CommonStyles(data[i]);\r\n            }\r\n        }\r\n        markPoint = seriesOpt.markPoint;\r\n        if (markPoint && markPoint.data) {\r\n            var mpData = markPoint.data;\r\n            for (var i = 0; i < mpData.length; i++) {\r\n                compatEC3CommonStyles(mpData[i]);\r\n            }\r\n        }\r\n        markLine = seriesOpt.markLine;\r\n        if (markLine && markLine.data) {\r\n            var mlData = markLine.data;\r\n            for (var i = 0; i < mlData.length; i++) {\r\n                if (isArray(mlData[i])) {\r\n                    compatEC3CommonStyles(mlData[i][0]);\r\n                    compatEC3CommonStyles(mlData[i][1]);\r\n                }\r\n                else {\r\n                    compatEC3CommonStyles(mlData[i]);\r\n                }\r\n            }\r\n        }\r\n        if (seriesOpt.type === 'gauge') {\r\n            compatTextStyle(seriesOpt, 'axisLabel');\r\n            compatTextStyle(seriesOpt, 'title');\r\n            compatTextStyle(seriesOpt, 'detail');\r\n        }\r\n        else if (seriesOpt.type === 'treemap') {\r\n            convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\r\n            each(seriesOpt.levels, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        else if (seriesOpt.type === 'tree') {\r\n            removeEC3NormalStatus(seriesOpt.leaves);\r\n        }\r\n    }\r\n    function toArr(o) {\r\n        return isArray(o) ? o : o ? [o] : [];\r\n    }\r\n    function toObj(o) {\r\n        return (isArray(o) ? o[0] : o) || {};\r\n    }\r\n    function globalCompatStyle(option, isTheme) {\r\n        each$2(toArr(option.series), function (seriesOpt) {\r\n            isObject$1(seriesOpt) && processSeries(seriesOpt);\r\n        });\r\n        var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\r\n        isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\r\n        each$2(axes, function (axisName) {\r\n            each$2(toArr(option[axisName]), function (axisOpt) {\r\n                if (axisOpt) {\r\n                    compatTextStyle(axisOpt, 'axisLabel');\r\n                    compatTextStyle(axisOpt.axisPointer, 'label');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.parallel), function (parallelOpt) {\r\n            var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\r\n            compatTextStyle(parallelAxisDefault, 'axisLabel');\r\n            compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\r\n        });\r\n        each$2(toArr(option.calendar), function (calendarOpt) {\r\n            convertNormalEmphasis(calendarOpt, 'itemStyle');\r\n            compatTextStyle(calendarOpt, 'dayLabel');\r\n            compatTextStyle(calendarOpt, 'monthLabel');\r\n            compatTextStyle(calendarOpt, 'yearLabel');\r\n        });\r\n        each$2(toArr(option.radar), function (radarOpt) {\r\n            compatTextStyle(radarOpt, 'name');\r\n            if (radarOpt.name && radarOpt.axisName == null) {\r\n                radarOpt.axisName = radarOpt.name;\r\n                delete radarOpt.name;\r\n                if (__DEV__) {\r\n                    deprecateLog('name property in radar component has been changed to axisName');\r\n                }\r\n            }\r\n            if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {\r\n                radarOpt.axisNameGap = radarOpt.nameGap;\r\n                delete radarOpt.nameGap;\r\n                if (__DEV__) {\r\n                    deprecateLog('nameGap property in radar component has been changed to axisNameGap');\r\n                }\r\n            }\r\n        });\r\n        each$2(toArr(option.geo), function (geoOpt) {\r\n            if (isObject$1(geoOpt)) {\r\n                compatEC3CommonStyles(geoOpt);\r\n                each$2(toArr(geoOpt.regions), function (regionObj) {\r\n                    compatEC3CommonStyles(regionObj);\r\n                });\r\n            }\r\n        });\r\n        each$2(toArr(option.timeline), function (timelineOpt) {\r\n            compatEC3CommonStyles(timelineOpt);\r\n            convertNormalEmphasis(timelineOpt, 'label');\r\n            convertNormalEmphasis(timelineOpt, 'itemStyle');\r\n            convertNormalEmphasis(timelineOpt, 'controlStyle', true);\r\n            var data = timelineOpt.data;\r\n            isArray(data) && each(data, function (item) {\r\n                if (isObject(item)) {\r\n                    convertNormalEmphasis(item, 'label');\r\n                    convertNormalEmphasis(item, 'itemStyle');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.toolbox), function (toolboxOpt) {\r\n            convertNormalEmphasis(toolboxOpt, 'iconStyle');\r\n            each$2(toolboxOpt.feature, function (featureOpt) {\r\n                convertNormalEmphasis(featureOpt, 'iconStyle');\r\n            });\r\n        });\r\n        compatTextStyle(toObj(option.axisPointer), 'label');\r\n        compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\r\n    }\n\n    function get(opt, path) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        for (var i = 0; i < pathArr.length; i++) {\r\n            obj = obj && obj[pathArr[i]];\r\n            if (obj == null) {\r\n                break;\r\n            }\r\n        }\r\n        return obj;\r\n    }\r\n    function set$1(opt, path, val, overwrite) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        var key;\r\n        var i = 0;\r\n        for (; i < pathArr.length - 1; i++) {\r\n            key = pathArr[i];\r\n            if (obj[key] == null) {\r\n                obj[key] = {};\r\n            }\r\n            obj = obj[key];\r\n        }\r\n        if (overwrite || obj[pathArr[i]] == null) {\r\n            obj[pathArr[i]] = val;\r\n        }\r\n    }\r\n    function compatLayoutProperties(option) {\r\n        option && each(LAYOUT_PROPERTIES, function (prop) {\r\n            if (prop[0] in option && !(prop[1] in option)) {\r\n                option[prop[1]] = option[prop[0]];\r\n            }\r\n        });\r\n    }\r\n    var LAYOUT_PROPERTIES = [\r\n        ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']\r\n    ];\r\n    var COMPATITABLE_COMPONENTS = [\r\n        'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'\r\n    ];\r\n    var BAR_ITEM_STYLE_MAP = [\r\n        ['borderRadius', 'barBorderRadius'],\r\n        ['borderColor', 'barBorderColor'],\r\n        ['borderWidth', 'barBorderWidth']\r\n    ];\r\n    function compatBarItemStyle(option) {\r\n        var itemStyle = option && option.itemStyle;\r\n        if (itemStyle) {\r\n            for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {\r\n                var oldName = BAR_ITEM_STYLE_MAP[i][1];\r\n                var newName = BAR_ITEM_STYLE_MAP[i][0];\r\n                if (itemStyle[oldName] != null) {\r\n                    itemStyle[newName] = itemStyle[oldName];\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog(oldName, newName);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatPieLabel(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) {\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie');\r\n            }\r\n            option.edgeDistance = option.margin;\r\n        }\r\n    }\r\n    function compatSunburstState(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.downplay && !option.blur) {\r\n            option.blur = option.downplay;\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('downplay', 'blur', 'sunburst');\r\n            }\r\n        }\r\n    }\r\n    function compatGraphFocus(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.focusNodeAdjacency != null) {\r\n            option.emphasis = option.emphasis || {};\r\n            if (option.emphasis.focus == null) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \\'adjacency\\'}', 'graph/sankey');\r\n                }\r\n                option.emphasis.focus = 'adjacency';\r\n            }\r\n        }\r\n    }\r\n    function traverseTree(data, cb) {\r\n        if (data) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                cb(data[i]);\r\n                data[i] && traverseTree(data[i].children, cb);\r\n            }\r\n        }\r\n    }\r\n    function globalBackwardCompat(option, isTheme) {\r\n        globalCompatStyle(option, isTheme);\r\n        option.series = normalizeToArray(option.series);\r\n        each(option.series, function (seriesOpt) {\r\n            if (!isObject(seriesOpt)) {\r\n                return;\r\n            }\r\n            var seriesType = seriesOpt.type;\r\n            if (seriesType === 'line') {\r\n                if (seriesOpt.clipOverflow != null) {\r\n                    seriesOpt.clip = seriesOpt.clipOverflow;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clipOverflow', 'clip', 'line');\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'pie' || seriesType === 'gauge') {\r\n                if (seriesOpt.clockWise != null) {\r\n                    seriesOpt.clockwise = seriesOpt.clockWise;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clockWise', 'clockwise');\r\n                    }\r\n                }\r\n                compatPieLabel(seriesOpt.label);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        compatPieLabel(data[i]);\r\n                    }\r\n                }\r\n                if (seriesOpt.hoverOffset != null) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (seriesOpt.emphasis.scaleSize = null) {\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize');\r\n                        }\r\n                        seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'gauge') {\r\n                var pointerColor = get(seriesOpt, 'pointer.color');\r\n                pointerColor != null\r\n                    && set$1(seriesOpt, 'itemStyle.color', pointerColor);\r\n            }\r\n            else if (seriesType === 'bar') {\r\n                compatBarItemStyle(seriesOpt);\r\n                compatBarItemStyle(seriesOpt.backgroundStyle);\r\n                compatBarItemStyle(seriesOpt.emphasis);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        if (typeof data[i] === 'object') {\r\n                            compatBarItemStyle(data[i]);\r\n                            compatBarItemStyle(data[i] && data[i].emphasis);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'sunburst') {\r\n                var highlightPolicy = seriesOpt.highlightPolicy;\r\n                if (highlightPolicy) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (!seriesOpt.emphasis.focus) {\r\n                        seriesOpt.emphasis.focus = highlightPolicy;\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst');\r\n                        }\r\n                    }\r\n                }\r\n                compatSunburstState(seriesOpt);\r\n                traverseTree(seriesOpt.data, compatSunburstState);\r\n            }\r\n            else if (seriesType === 'graph' || seriesType === 'sankey') {\r\n                compatGraphFocus(seriesOpt);\r\n            }\r\n            else if (seriesType === 'map') {\r\n                if (seriesOpt.mapType && !seriesOpt.map) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('mapType', 'map', 'map');\r\n                    }\r\n                    seriesOpt.map = seriesOpt.mapType;\r\n                }\r\n                if (seriesOpt.mapLocation) {\r\n                    if (__DEV__) {\r\n                        deprecateLog('`mapLocation` is not used anymore.');\r\n                    }\r\n                    defaults(seriesOpt, seriesOpt.mapLocation);\r\n                }\r\n            }\r\n            if (seriesOpt.hoverAnimation != null) {\r\n                seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('hoverAnimation', 'emphasis.scale');\r\n                    }\r\n                    seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;\r\n                }\r\n            }\r\n            compatLayoutProperties(seriesOpt);\r\n        });\r\n        if (option.dataRange) {\r\n            option.visualMap = option.dataRange;\r\n        }\r\n        each(COMPATITABLE_COMPONENTS, function (componentName) {\r\n            var options = option[componentName];\r\n            if (options) {\r\n                if (!isArray(options)) {\r\n                    options = [options];\r\n                }\r\n                each(options, function (option) {\r\n                    compatLayoutProperties(option);\r\n                });\r\n            }\r\n        });\r\n    }\n\n    function dataStack(ecModel) {\r\n        var stackInfoMap = createHashMap();\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var stack = seriesModel.get('stack');\r\n            if (stack) {\r\n                var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\r\n                var data = seriesModel.getData();\r\n                var stackInfo = {\r\n                    stackResultDimension: data.getCalculationInfo('stackResultDimension'),\r\n                    stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\r\n                    stackedDimension: data.getCalculationInfo('stackedDimension'),\r\n                    stackedByDimension: data.getCalculationInfo('stackedByDimension'),\r\n                    isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\r\n                    data: data,\r\n                    seriesModel: seriesModel\r\n                };\r\n                if (!stackInfo.stackedDimension\r\n                    || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\r\n                    return;\r\n                }\r\n                stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\r\n                stackInfoList.push(stackInfo);\r\n            }\r\n        });\r\n        stackInfoMap.each(calculateStack);\r\n    }\r\n    function calculateStack(stackInfoList) {\r\n        each(stackInfoList, function (targetStackInfo, idxInStack) {\r\n            var resultVal = [];\r\n            var resultNaN = [NaN, NaN];\r\n            var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\r\n            var targetData = targetStackInfo.data;\r\n            var isStackedByIndex = targetStackInfo.isStackedByIndex;\r\n            var newData = targetData.map(dims, function (v0, v1, dataIndex) {\r\n                var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex);\r\n                if (isNaN(sum)) {\r\n                    return resultNaN;\r\n                }\r\n                var byValue;\r\n                var stackedDataRawIndex;\r\n                if (isStackedByIndex) {\r\n                    stackedDataRawIndex = targetData.getRawIndex(dataIndex);\r\n                }\r\n                else {\r\n                    byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\r\n                }\r\n                var stackedOver = NaN;\r\n                for (var j = idxInStack - 1; j >= 0; j--) {\r\n                    var stackInfo = stackInfoList[j];\r\n                    if (!isStackedByIndex) {\r\n                        stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\r\n                    }\r\n                    if (stackedDataRawIndex >= 0) {\r\n                        var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);\r\n                        if ((sum >= 0 && val > 0)\r\n                            || (sum <= 0 && val < 0)) {\r\n                            sum += val;\r\n                            stackedOver = val;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                resultVal[0] = sum;\r\n                resultVal[1] = stackedOver;\r\n                return resultVal;\r\n            });\r\n            targetData.hostModel.setData(newData);\r\n            targetStackInfo.data = newData;\r\n        });\r\n    }\n\n    var SourceImpl = (function () {\r\n        function SourceImpl(fields) {\r\n            this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\r\n            this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\r\n            this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\r\n            this.startIndex = fields.startIndex || 0;\r\n            this.dimensionsDefine = fields.dimensionsDefine;\r\n            this.dimensionsDetectedCount = fields.dimensionsDetectedCount;\r\n            this.encodeDefine = fields.encodeDefine;\r\n            this.metaRawOption = fields.metaRawOption;\r\n        }\r\n        return SourceImpl;\r\n    }());\r\n    function isSourceInstance(val) {\r\n        return val instanceof SourceImpl;\r\n    }\r\n    function createSource(sourceData, thisMetaRawOption, sourceFormat, encodeDefine) {\r\n        sourceFormat = sourceFormat || detectSourceFormat(sourceData);\r\n        var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;\r\n        var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);\r\n        var source = new SourceImpl({\r\n            data: sourceData,\r\n            sourceFormat: sourceFormat,\r\n            seriesLayoutBy: seriesLayoutBy,\r\n            dimensionsDefine: determined.dimensionsDefine,\r\n            startIndex: determined.startIndex,\r\n            dimensionsDetectedCount: determined.dimensionsDetectedCount,\r\n            encodeDefine: makeEncodeDefine(encodeDefine),\r\n            metaRawOption: clone(thisMetaRawOption)\r\n        });\r\n        return source;\r\n    }\r\n    function createSourceFromSeriesDataOption(data) {\r\n        return new SourceImpl({\r\n            data: data,\r\n            sourceFormat: isTypedArray(data)\r\n                ? SOURCE_FORMAT_TYPED_ARRAY\r\n                : SOURCE_FORMAT_ORIGINAL\r\n        });\r\n    }\r\n    function cloneSourceShallow(source) {\r\n        return new SourceImpl({\r\n            data: source.data,\r\n            sourceFormat: source.sourceFormat,\r\n            seriesLayoutBy: source.seriesLayoutBy,\r\n            dimensionsDefine: clone(source.dimensionsDefine),\r\n            startIndex: source.startIndex,\r\n            dimensionsDetectedCount: source.dimensionsDetectedCount,\r\n            encodeDefine: makeEncodeDefine(source.encodeDefine)\r\n        });\r\n    }\r\n    function makeEncodeDefine(encodeDefine) {\r\n        return encodeDefine\r\n            ? createHashMap(encodeDefine)\r\n            : null;\r\n    }\r\n    function detectSourceFormat(data) {\r\n        var sourceFormat = SOURCE_FORMAT_UNKNOWN;\r\n        if (isTypedArray(data)) {\r\n            sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\r\n        }\r\n        else if (isArray(data)) {\r\n            if (data.length === 0) {\r\n                sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n            }\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                var item = data[i];\r\n                if (item == null) {\r\n                    continue;\r\n                }\r\n                else if (isArray(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n                    break;\r\n                }\r\n                else if (isObject(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (isObject(data)) {\r\n            for (var key in data) {\r\n                if (hasOwn(data, key) && isArrayLike(data[key])) {\r\n                    sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (data != null) {\r\n            throw new Error('Invalid data');\r\n        }\r\n        return sourceFormat;\r\n    }\r\n    function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\r\n        var dimensionsDetectedCount;\r\n        var startIndex;\r\n        if (!data) {\r\n            return {\r\n                dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n                startIndex: startIndex,\r\n                dimensionsDetectedCount: dimensionsDetectedCount\r\n            };\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (sourceHeader === 'auto' || sourceHeader == null) {\r\n                arrayRowsTravelFirst(function (val) {\r\n                    if (val != null && val !== '-') {\r\n                        if (isString(val)) {\r\n                            startIndex == null && (startIndex = 1);\r\n                        }\r\n                        else {\r\n                            startIndex = 0;\r\n                        }\r\n                    }\r\n                }, seriesLayoutBy, dataArrayRows, 10);\r\n            }\r\n            else {\r\n                startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;\r\n            }\r\n            if (!dimensionsDefine && startIndex === 1) {\r\n                dimensionsDefine = [];\r\n                arrayRowsTravelFirst(function (val, index) {\r\n                    dimensionsDefine[index] = (val != null ? val + '' : '');\r\n                }, seriesLayoutBy, dataArrayRows, Infinity);\r\n            }\r\n            dimensionsDetectedCount = dimensionsDefine\r\n                ? dimensionsDefine.length\r\n                : seriesLayoutBy === SERIES_LAYOUT_BY_ROW\r\n                    ? dataArrayRows.length\r\n                    : dataArrayRows[0]\r\n                        ? dataArrayRows[0].length\r\n                        : null;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = objectRowsCollectDimensions(data);\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = [];\r\n                each(data, function (colArr, key) {\r\n                    dimensionsDefine.push(key);\r\n                });\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var value0 = getDataItemValue(data[0]);\r\n            dimensionsDetectedCount = isArray(value0) && value0.length || 1;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n            if (__DEV__) {\r\n                assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.');\r\n            }\r\n        }\r\n        return {\r\n            startIndex: startIndex,\r\n            dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n            dimensionsDetectedCount: dimensionsDetectedCount\r\n        };\r\n    }\r\n    function objectRowsCollectDimensions(data) {\r\n        var firstIndex = 0;\r\n        var obj;\r\n        while (firstIndex < data.length && !(obj = data[firstIndex++])) { }\r\n        if (obj) {\r\n            var dimensions_1 = [];\r\n            each(obj, function (value, key) {\r\n                dimensions_1.push(key);\r\n            });\r\n            return dimensions_1;\r\n        }\r\n    }\r\n    function normalizeDimensionsOption(dimensionsDefine) {\r\n        if (!dimensionsDefine) {\r\n            return;\r\n        }\r\n        var nameMap = createHashMap();\r\n        return map(dimensionsDefine, function (rawItem, index) {\r\n            rawItem = isObject(rawItem) ? rawItem : { name: rawItem };\r\n            var item = {\r\n                name: rawItem.name,\r\n                displayName: rawItem.displayName,\r\n                type: rawItem.type\r\n            };\r\n            if (name == null) {\r\n                return item;\r\n            }\r\n            item.name += '';\r\n            if (item.displayName == null) {\r\n                item.displayName = item.name;\r\n            }\r\n            var exist = nameMap.get(item.name);\r\n            if (!exist) {\r\n                nameMap.set(item.name, { count: 1 });\r\n            }\r\n            else {\r\n                item.name += '-' + exist.count++;\r\n            }\r\n            return item;\r\n        });\r\n    }\r\n    function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\r\n        if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n            for (var i = 0; i < data.length && i < maxLoop; i++) {\r\n                cb(data[i] ? data[i][0] : null, i);\r\n            }\r\n        }\r\n        else {\r\n            var value0 = data[0] || [];\r\n            for (var i = 0; i < value0.length && i < maxLoop; i++) {\r\n                cb(value0[i], i);\r\n            }\r\n        }\r\n    }\n\n    var _a, _b, _c;\r\n    var providerMethods;\r\n    var mountMethods;\r\n    var DefaultDataProvider = (function () {\r\n        function DefaultDataProvider(sourceParam, dimSize) {\r\n            var source = !isSourceInstance(sourceParam)\r\n                ? createSourceFromSeriesDataOption(sourceParam)\r\n                : sourceParam;\r\n            this._source = source;\r\n            var data = this._data = source.data;\r\n            if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                if (__DEV__) {\r\n                    if (dimSize == null) {\r\n                        throw new Error('Typed array data must specify dimension size');\r\n                    }\r\n                }\r\n                this._offset = 0;\r\n                this._dimSize = dimSize;\r\n                this._data = data;\r\n            }\r\n            mountMethods(this, data, source);\r\n        }\r\n        DefaultDataProvider.prototype.getSource = function () {\r\n            return this._source;\r\n        };\r\n        DefaultDataProvider.prototype.count = function () {\r\n            return 0;\r\n        };\r\n        DefaultDataProvider.prototype.getItem = function (idx, out) {\r\n            return;\r\n        };\r\n        DefaultDataProvider.prototype.appendData = function (newData) {\r\n        };\r\n        DefaultDataProvider.prototype.clean = function () {\r\n        };\r\n        DefaultDataProvider.protoInitialize = (function () {\r\n            var proto = DefaultDataProvider.prototype;\r\n            proto.pure = false;\r\n            proto.persistent = true;\r\n        })();\r\n        DefaultDataProvider.internalField = (function () {\r\n            var _a;\r\n            mountMethods = function (provider, data, source) {\r\n                var sourceFormat = source.sourceFormat;\r\n                var seriesLayoutBy = source.seriesLayoutBy;\r\n                var startIndex = source.startIndex;\r\n                var dimsDef = source.dimensionsDefine;\r\n                var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n                if (__DEV__) {\r\n                    assert(methods, 'Invalide sourceFormat: ' + sourceFormat);\r\n                }\r\n                extend(provider, methods);\r\n                if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                    provider.getItem = getItemForTypedArray;\r\n                    provider.count = countForTypedArray;\r\n                    provider.fillStorage = fillStorageForTypedArray;\r\n                }\r\n                else {\r\n                    var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);\r\n                    provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);\r\n                    var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);\r\n                    provider.count = bind(rawCounter, null, data, startIndex, dimsDef);\r\n                }\r\n            };\r\n            var getItemForTypedArray = function (idx, out) {\r\n                idx = idx - this._offset;\r\n                out = out || [];\r\n                var data = this._data;\r\n                var dimSize = this._dimSize;\r\n                var offset = dimSize * idx;\r\n                for (var i = 0; i < dimSize; i++) {\r\n                    out[i] = data[offset + i];\r\n                }\r\n                return out;\r\n            };\r\n            var fillStorageForTypedArray = function (start, end, storage, extent) {\r\n                var data = this._data;\r\n                var dimSize = this._dimSize;\r\n                for (var dim = 0; dim < dimSize; dim++) {\r\n                    var dimExtent = extent[dim];\r\n                    var min = dimExtent[0] == null ? Infinity : dimExtent[0];\r\n                    var max = dimExtent[1] == null ? -Infinity : dimExtent[1];\r\n                    var count = end - start;\r\n                    var arr = storage[dim];\r\n                    for (var i = 0; i < count; i++) {\r\n                        var val = data[(start + i) * dimSize + dim];\r\n                        arr[start + i] = val;\r\n                        val < min && (min = val);\r\n                        val > max && (max = val);\r\n                    }\r\n                    dimExtent[0] = min;\r\n                    dimExtent[1] = max;\r\n                }\r\n            };\r\n            var countForTypedArray = function () {\r\n                return this._data ? (this._data.length / this._dimSize) : 0;\r\n            };\r\n            providerMethods = (_a = {},\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {\r\n                    pure: true,\r\n                    appendData: function () {\r\n                        throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_OBJECT_ROWS] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_KEYED_COLUMNS] = {\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        var data = this._data;\r\n                        each(newData, function (newCol, key) {\r\n                            var oldCol = data[key] || (data[key] = []);\r\n                            for (var i = 0; i < (newCol || []).length; i++) {\r\n                                oldCol.push(newCol[i]);\r\n                            }\r\n                        });\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_ORIGINAL] = {\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_TYPED_ARRAY] = {\r\n                    persistent: false,\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        if (__DEV__) {\r\n                            assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');\r\n                        }\r\n                        this._data = newData;\r\n                    },\r\n                    clean: function () {\r\n                        this._offset += this.count();\r\n                        this._data = null;\r\n                    }\r\n                },\r\n                _a);\r\n            function appendDataSimply(newData) {\r\n                for (var i = 0; i < newData.length; i++) {\r\n                    this._data.push(newData[i]);\r\n                }\r\n            }\r\n        })();\r\n        return DefaultDataProvider;\r\n    }());\r\n    var getItemSimply = function (rawData, startIndex, dimsDef, idx) {\r\n        return rawData[idx];\r\n    };\r\n    var rawSourceItemGetterMap = (_a = {},\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) {\r\n            return rawData[idx + startIndex];\r\n        },\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx) {\r\n            idx += startIndex;\r\n            var item = [];\r\n            var data = rawData;\r\n            for (var i = 0; i < data.length; i++) {\r\n                var row = data[i];\r\n                item.push(row ? row[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply,\r\n        _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx) {\r\n            var item = [];\r\n            for (var i = 0; i < dimsDef.length; i++) {\r\n                var dimName = dimsDef[i].name;\r\n                if (__DEV__) {\r\n                    if (dimName == null) {\r\n                        throw new Error();\r\n                    }\r\n                }\r\n                var col = rawData[dimName];\r\n                item.push(col ? col[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply,\r\n        _a);\r\n    function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get item on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var countSimply = function (rawData, startIndex, dimsDef) {\r\n        return rawData.length;\r\n    };\r\n    var rawSourceDataCounterMap = (_b = {},\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) {\r\n            return Math.max(0, rawData.length - startIndex);\r\n        },\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) {\r\n            var row = rawData[0];\r\n            return row ? Math.max(0, row.length - startIndex) : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply,\r\n        _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {\r\n            var dimName = dimsDef[0].name;\r\n            if (__DEV__) {\r\n                if (dimName == null) {\r\n                    throw new Error();\r\n                }\r\n            }\r\n            var col = rawData[dimName];\r\n            return col ? col.length : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_ORIGINAL] = countSimply,\r\n        _b);\r\n    function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport count on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var getRawValueSimply = function (dataItem, dimIndex, dimName) {\r\n        return dimIndex != null ? dataItem[dimIndex] : dataItem;\r\n    };\r\n    var rawSourceValueGetterMap = (_c = {},\r\n        _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, dimName) {\r\n            return dimIndex != null ? dataItem[dimName] : dataItem;\r\n        },\r\n        _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, dimName) {\r\n            var value = getDataItemValue(dataItem);\r\n            return (dimIndex == null || !(value instanceof Array))\r\n                ? value\r\n                : value[dimIndex];\r\n        },\r\n        _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply,\r\n        _c);\r\n    function getRawSourceValueGetter(sourceFormat) {\r\n        var method = rawSourceValueGetterMap[sourceFormat];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get value on \"' + sourceFormat + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    function getMethodMapKey(sourceFormat, seriesLayoutBy) {\r\n        return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            ? sourceFormat + '_' + seriesLayoutBy\r\n            : sourceFormat;\r\n    }\r\n    function retrieveRawValue(data, dataIndex, dim) {\r\n        if (!data) {\r\n            return;\r\n        }\r\n        var dataItem = data.getRawDataItem(dataIndex);\r\n        if (dataItem == null) {\r\n            return;\r\n        }\r\n        var sourceFormat = data.getProvider().getSource().sourceFormat;\r\n        var dimName;\r\n        var dimIndex;\r\n        var dimInfo = data.getDimensionInfo(dim);\r\n        if (dimInfo) {\r\n            dimName = dimInfo.name;\r\n            dimIndex = dimInfo.index;\r\n        }\r\n        return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, dimName);\r\n    }\n\n    var DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\r\n    var DataFormatMixin = (function () {\r\n        function DataFormatMixin() {\r\n        }\r\n        DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) {\r\n            var data = this.getData(dataType);\r\n            var rawValue = this.getRawValue(dataIndex, dataType);\r\n            var rawDataIndex = data.getRawIndex(dataIndex);\r\n            var name = data.getName(dataIndex);\r\n            var itemOpt = data.getRawDataItem(dataIndex);\r\n            var style = data.getItemVisual(dataIndex, 'style');\r\n            var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill'];\r\n            var borderColor = style && style.stroke;\r\n            var mainType = this.mainType;\r\n            var isSeries = mainType === 'series';\r\n            var userOutput = data.userOutput;\r\n            return {\r\n                componentType: mainType,\r\n                componentSubType: this.subType,\r\n                componentIndex: this.componentIndex,\r\n                seriesType: isSeries ? this.subType : null,\r\n                seriesIndex: this.seriesIndex,\r\n                seriesId: isSeries ? this.id : null,\r\n                seriesName: isSeries ? this.name : null,\r\n                name: name,\r\n                dataIndex: rawDataIndex,\r\n                data: itemOpt,\r\n                dataType: dataType,\r\n                value: rawValue,\r\n                color: color,\r\n                borderColor: borderColor,\r\n                dimensionNames: userOutput ? userOutput.dimensionNames : null,\r\n                encode: userOutput ? userOutput.encode : null,\r\n                $vars: ['seriesName', 'name', 'value']\r\n            };\r\n        };\r\n        DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {\r\n            status = status || 'normal';\r\n            var data = this.getData(dataType);\r\n            var params = this.getDataParams(dataIndex, dataType);\r\n            if (extendParams) {\r\n                extend(params, extendParams);\r\n            }\r\n            if (labelDimIndex != null && (params.value instanceof Array)) {\r\n                params.value = params.value[labelDimIndex];\r\n            }\r\n            if (!formatter) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                formatter = itemModel.get(status === 'normal'\r\n                    ? ['label', 'formatter']\r\n                    : [status, 'label', 'formatter']);\r\n            }\r\n            if (typeof formatter === 'function') {\r\n                params.status = status;\r\n                params.dimensionIndex = labelDimIndex;\r\n                return formatter(params);\r\n            }\r\n            else if (typeof formatter === 'string') {\r\n                var str = formatTpl(formatter, params);\r\n                return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\r\n                    var len = dim.length;\r\n                    if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\r\n                        dim = +dim.slice(1, len - 1);\r\n                    }\r\n                    return retrieveRawValue(data, dataIndex, dim);\r\n                });\r\n            }\r\n        };\r\n        DataFormatMixin.prototype.getRawValue = function (idx, dataType) {\r\n            return retrieveRawValue(this.getData(dataType), idx);\r\n        };\r\n        DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            return;\r\n        };\r\n        return DataFormatMixin;\r\n    }());\r\n    function normalizeTooltipFormatResult(result) {\r\n        var markupText;\r\n        var markupFragment;\r\n        if (isObject(result)) {\r\n            if (result.type) {\r\n                markupFragment = result;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    console.warn('The return type of `formatTooltip` is not supported: ' + makePrintable(result));\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            markupText = result;\r\n        }\r\n        return {\r\n            markupText: markupText,\r\n            markupFragment: markupFragment\r\n        };\r\n    }\n\n    function createTask(define) {\r\n        return new Task(define);\r\n    }\r\n    var Task = (function () {\r\n        function Task(define) {\r\n            define = define || {};\r\n            this._reset = define.reset;\r\n            this._plan = define.plan;\r\n            this._count = define.count;\r\n            this._onDirty = define.onDirty;\r\n            this._dirty = true;\r\n        }\r\n        Task.prototype.perform = function (performArgs) {\r\n            var upTask = this._upstream;\r\n            var skip = performArgs && performArgs.skip;\r\n            if (this._dirty && upTask) {\r\n                var context = this.context;\r\n                context.data = context.outputData = upTask.context.outputData;\r\n            }\r\n            if (this.__pipeline) {\r\n                this.__pipeline.currentTask = this;\r\n            }\r\n            var planResult;\r\n            if (this._plan && !skip) {\r\n                planResult = this._plan(this.context);\r\n            }\r\n            var lastModBy = normalizeModBy(this._modBy);\r\n            var lastModDataCount = this._modDataCount || 0;\r\n            var modBy = normalizeModBy(performArgs && performArgs.modBy);\r\n            var modDataCount = performArgs && performArgs.modDataCount || 0;\r\n            if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\r\n                planResult = 'reset';\r\n            }\r\n            function normalizeModBy(val) {\r\n                !(val >= 1) && (val = 1);\r\n                return val;\r\n            }\r\n            var forceFirstProgress;\r\n            if (this._dirty || planResult === 'reset') {\r\n                this._dirty = false;\r\n                forceFirstProgress = this._doReset(skip);\r\n            }\r\n            this._modBy = modBy;\r\n            this._modDataCount = modDataCount;\r\n            var step = performArgs && performArgs.step;\r\n            if (upTask) {\r\n                if (__DEV__) {\r\n                    assert(upTask._outputDueEnd != null);\r\n                }\r\n                this._dueEnd = upTask._outputDueEnd;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    assert(!this._progress || this._count);\r\n                }\r\n                this._dueEnd = this._count ? this._count(this.context) : Infinity;\r\n            }\r\n            if (this._progress) {\r\n                var start = this._dueIndex;\r\n                var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\r\n                if (!skip && (forceFirstProgress || start < end)) {\r\n                    var progress = this._progress;\r\n                    if (isArray(progress)) {\r\n                        for (var i = 0; i < progress.length; i++) {\r\n                            this._doProgress(progress[i], start, end, modBy, modDataCount);\r\n                        }\r\n                    }\r\n                    else {\r\n                        this._doProgress(progress, start, end, modBy, modDataCount);\r\n                    }\r\n                }\r\n                this._dueIndex = end;\r\n                var outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : end;\r\n                if (__DEV__) {\r\n                    assert(outputDueEnd >= this._outputDueEnd);\r\n                }\r\n                this._outputDueEnd = outputDueEnd;\r\n            }\r\n            else {\r\n                this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : this._dueEnd;\r\n            }\r\n            return this.unfinished();\r\n        };\r\n        Task.prototype.dirty = function () {\r\n            this._dirty = true;\r\n            this._onDirty && this._onDirty(this.context);\r\n        };\r\n        Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) {\r\n            iterator.reset(start, end, modBy, modDataCount);\r\n            this._callingProgress = progress;\r\n            this._callingProgress({\r\n                start: start, end: end, count: end - start, next: iterator.next\r\n            }, this.context);\r\n        };\r\n        Task.prototype._doReset = function (skip) {\r\n            this._dueIndex = this._outputDueEnd = this._dueEnd = 0;\r\n            this._settedOutputEnd = null;\r\n            var progress;\r\n            var forceFirstProgress;\r\n            if (!skip && this._reset) {\r\n                progress = this._reset(this.context);\r\n                if (progress && progress.progress) {\r\n                    forceFirstProgress = progress.forceFirstProgress;\r\n                    progress = progress.progress;\r\n                }\r\n                if (isArray(progress) && !progress.length) {\r\n                    progress = null;\r\n                }\r\n            }\r\n            this._progress = progress;\r\n            this._modBy = this._modDataCount = null;\r\n            var downstream = this._downstream;\r\n            downstream && downstream.dirty();\r\n            return forceFirstProgress;\r\n        };\r\n        Task.prototype.unfinished = function () {\r\n            return this._progress && this._dueIndex < this._dueEnd;\r\n        };\r\n        Task.prototype.pipe = function (downTask) {\r\n            if (__DEV__) {\r\n                assert(downTask && !downTask._disposed && downTask !== this);\r\n            }\r\n            if (this._downstream !== downTask || this._dirty) {\r\n                this._downstream = downTask;\r\n                downTask._upstream = this;\r\n                downTask.dirty();\r\n            }\r\n        };\r\n        Task.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            this._upstream && (this._upstream._downstream = null);\r\n            this._downstream && (this._downstream._upstream = null);\r\n            this._dirty = false;\r\n            this._disposed = true;\r\n        };\r\n        Task.prototype.getUpstream = function () {\r\n            return this._upstream;\r\n        };\r\n        Task.prototype.getDownstream = function () {\r\n            return this._downstream;\r\n        };\r\n        Task.prototype.setOutputEnd = function (end) {\r\n            this._outputDueEnd = this._settedOutputEnd = end;\r\n        };\r\n        return Task;\r\n    }());\r\n    var iterator = (function () {\r\n        var end;\r\n        var current;\r\n        var modBy;\r\n        var modDataCount;\r\n        var winCount;\r\n        var it = {\r\n            reset: function (s, e, sStep, sCount) {\r\n                current = s;\r\n                end = e;\r\n                modBy = sStep;\r\n                modDataCount = sCount;\r\n                winCount = Math.ceil(modDataCount / modBy);\r\n                it.next = (modBy > 1 && modDataCount > 0) ? modNext : sequentialNext;\r\n            }\r\n        };\r\n        return it;\r\n        function sequentialNext() {\r\n            return current < end ? current++ : null;\r\n        }\r\n        function modNext() {\r\n            var dataIndex = (current % winCount) * modBy + Math.ceil(current / winCount);\r\n            var result = current >= end\r\n                ? null\r\n                : dataIndex < modDataCount\r\n                    ? dataIndex\r\n                    : current;\r\n            current++;\r\n            return result;\r\n        }\r\n    })();\n\n    function parseDataValue(value, opt) {\r\n        var dimType = opt && opt.type;\r\n        if (dimType === 'ordinal') {\r\n            var ordinalMeta = opt && opt.ordinalMeta;\r\n            return ordinalMeta\r\n                ? ordinalMeta.parseAndCollect(value)\r\n                : value;\r\n        }\r\n        if (dimType === 'time'\r\n            && typeof value !== 'number'\r\n            && value != null\r\n            && value !== '-') {\r\n            value = +parseDate(value);\r\n        }\r\n        return (value == null || value === '')\r\n            ? NaN\r\n            : +value;\r\n    }\r\n    var valueParserMap = createHashMap({\r\n        'number': function (val) {\r\n            return parseFloat(val);\r\n        },\r\n        'time': function (val) {\r\n            return +parseDate(val);\r\n        },\r\n        'trim': function (val) {\r\n            return typeof val === 'string' ? trim(val) : val;\r\n        }\r\n    });\r\n    function getRawValueParser(type) {\r\n        return valueParserMap.get(type);\r\n    }\r\n    var ORDER_COMPARISON_OP_MAP = {\r\n        lt: function (lval, rval) { return lval < rval; },\r\n        lte: function (lval, rval) { return lval <= rval; },\r\n        gt: function (lval, rval) { return lval > rval; },\r\n        gte: function (lval, rval) { return lval >= rval; }\r\n    };\r\n    var FilterOrderComparator = (function () {\r\n        function FilterOrderComparator(op, rval) {\r\n            if (typeof rval !== 'number') {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = 'rvalue of \"<\", \">\", \"<=\", \">=\" can only be number in filter.';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            this._opFn = ORDER_COMPARISON_OP_MAP[op];\r\n            this._rvalFloat = numericToNumber(rval);\r\n        }\r\n        FilterOrderComparator.prototype.evaluate = function (lval) {\r\n            return typeof lval === 'number'\r\n                ? this._opFn(lval, this._rvalFloat)\r\n                : this._opFn(numericToNumber(lval), this._rvalFloat);\r\n        };\r\n        return FilterOrderComparator;\r\n    }());\r\n    var SortOrderComparator = (function () {\r\n        function SortOrderComparator(order, incomparable) {\r\n            var isDesc = order === 'desc';\r\n            this._resultLT = isDesc ? 1 : -1;\r\n            if (incomparable == null) {\r\n                incomparable = isDesc ? 'min' : 'max';\r\n            }\r\n            this._incomparable = incomparable === 'min' ? -Infinity : Infinity;\r\n        }\r\n        SortOrderComparator.prototype.evaluate = function (lval, rval) {\r\n            var lvalTypeof = typeof lval;\r\n            var rvalTypeof = typeof rval;\r\n            var lvalFloat = lvalTypeof === 'number' ? lval : numericToNumber(lval);\r\n            var rvalFloat = rvalTypeof === 'number' ? rval : numericToNumber(rval);\r\n            var lvalNotNumeric = isNaN(lvalFloat);\r\n            var rvalNotNumeric = isNaN(rvalFloat);\r\n            if (lvalNotNumeric) {\r\n                lvalFloat = this._incomparable;\r\n            }\r\n            if (rvalNotNumeric) {\r\n                rvalFloat = this._incomparable;\r\n            }\r\n            if (lvalNotNumeric && rvalNotNumeric) {\r\n                var lvalIsStr = lvalTypeof === 'string';\r\n                var rvalIsStr = rvalTypeof === 'string';\r\n                if (lvalIsStr) {\r\n                    lvalFloat = rvalIsStr ? lval : 0;\r\n                }\r\n                if (rvalIsStr) {\r\n                    rvalFloat = lvalIsStr ? rval : 0;\r\n                }\r\n            }\r\n            return lvalFloat < rvalFloat ? this._resultLT\r\n                : lvalFloat > rvalFloat ? -this._resultLT\r\n                    : 0;\r\n        };\r\n        return SortOrderComparator;\r\n    }());\r\n    var FilterEqualityComparator = (function () {\r\n        function FilterEqualityComparator(isEq, rval) {\r\n            this._rval = rval;\r\n            this._isEQ = isEq;\r\n            this._rvalTypeof = typeof rval;\r\n            this._rvalFloat = numericToNumber(rval);\r\n        }\r\n        FilterEqualityComparator.prototype.evaluate = function (lval) {\r\n            var eqResult = lval === this._rval;\r\n            if (!eqResult) {\r\n                var lvalTypeof = typeof lval;\r\n                if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === 'number' || this._rvalTypeof === 'number')) {\r\n                    eqResult = numericToNumber(lval) === this._rvalFloat;\r\n                }\r\n            }\r\n            return this._isEQ ? eqResult : !eqResult;\r\n        };\r\n        return FilterEqualityComparator;\r\n    }());\r\n    function createFilterComparator(op, rval) {\r\n        return (op === 'eq' || op === 'ne')\r\n            ? new FilterEqualityComparator(op === 'eq', rval)\r\n            : hasOwn(ORDER_COMPARISON_OP_MAP, op)\r\n                ? new FilterOrderComparator(op, rval)\r\n                : null;\r\n    }\n\n    var ExternalSource = (function () {\r\n        function ExternalSource() {\r\n        }\r\n        ExternalSource.prototype.getRawData = function () {\r\n            throw new Error('not supported');\r\n        };\r\n        ExternalSource.prototype.getRawDataItem = function (dataIndex) {\r\n            throw new Error('not supported');\r\n        };\r\n        ExternalSource.prototype.cloneRawData = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.getDimensionInfo = function (dim) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.cloneAllDimensionInfo = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.count = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveValue = function (dataIndex, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.convertValue = function (rawVal, dimInfo) {\r\n            return parseDataValue(rawVal, dimInfo);\r\n        };\r\n        return ExternalSource;\r\n    }());\r\n    function createExternalSource(internalSource, externalTransform) {\r\n        var extSource = new ExternalSource();\r\n        var data = internalSource.data;\r\n        var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;\r\n        var sourceHeaderCount = internalSource.startIndex;\r\n        var dimensions = [];\r\n        var dimsByName = {};\r\n        var dimsDef = internalSource.dimensionsDefine;\r\n        if (dimsDef) {\r\n            each(dimsDef, function (dimDef, idx) {\r\n                var name = dimDef.name;\r\n                var dimDefExt = {\r\n                    index: idx,\r\n                    name: name,\r\n                    displayName: dimDef.displayName\r\n                };\r\n                dimensions.push(dimDefExt);\r\n                if (name != null) {\r\n                    var errMsg = '';\r\n                    if (hasOwn(dimsByName, name)) {\r\n                        if (__DEV__) {\r\n                            errMsg = 'dimension name \"' + name + '\" duplicated.';\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    dimsByName[name] = dimDefExt;\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {\r\n                dimensions.push({ index: i });\r\n            }\r\n        }\r\n        var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        if (externalTransform.__isBuiltIn) {\r\n            extSource.getRawDataItem = function (dataIndex) {\r\n                return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n            };\r\n            extSource.getRawData = bind(getRawData, null, internalSource);\r\n        }\r\n        extSource.cloneRawData = bind(cloneRawData, null, internalSource);\r\n        var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);\r\n        var rawValueGetter = getRawSourceValueGetter(sourceFormat);\r\n        extSource.retrieveValue = function (dataIndex, dimIndex) {\r\n            var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n            return retrieveValueFromItem(rawItem, dimIndex);\r\n        };\r\n        var retrieveValueFromItem = extSource.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n            if (dataItem == null) {\r\n                return;\r\n            }\r\n            var dimDef = dimensions[dimIndex];\r\n            if (dimDef) {\r\n                return rawValueGetter(dataItem, dimIndex, dimDef.name);\r\n            }\r\n        };\r\n        extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);\r\n        extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions);\r\n        return extSource;\r\n    }\r\n    function getRawData(upstream) {\r\n        var sourceFormat = upstream.sourceFormat;\r\n        var data = upstream.data;\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS\r\n            || !data\r\n            || (isArray(data) && !data.length)) {\r\n            return upstream.data;\r\n        }\r\n        var errMsg = '';\r\n        if (__DEV__) {\r\n            errMsg = '`getRawData` is not supported in source format ' + sourceFormat;\r\n        }\r\n        throwError(errMsg);\r\n    }\r\n    function cloneRawData(upstream) {\r\n        var sourceFormat = upstream.sourceFormat;\r\n        var data = upstream.data;\r\n        if (!data) {\r\n            return data;\r\n        }\r\n        else if (isArray(data) && !data.length) {\r\n            return [];\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var result = [];\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                result.push(data[i].slice());\r\n            }\r\n            return result;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var result = [];\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                result.push(extend({}, data[i]));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function getDimensionInfo(dimensions, dimsByName, dim) {\r\n        if (dim == null) {\r\n            return;\r\n        }\r\n        if (typeof dim === 'number'\r\n            || (!isNaN(dim) && !hasOwn(dimsByName, dim))) {\r\n            return dimensions[dim];\r\n        }\r\n        else if (hasOwn(dimsByName, dim)) {\r\n            return dimsByName[dim];\r\n        }\r\n    }\r\n    function cloneAllDimensionInfo(dimensions) {\r\n        return clone(dimensions);\r\n    }\r\n    var externalTransformMap = createHashMap();\r\n    function registerExternalTransform(externalTransform) {\r\n        externalTransform = clone(externalTransform);\r\n        var type = externalTransform.type;\r\n        var errMsg = '';\r\n        if (!type) {\r\n            if (__DEV__) {\r\n                errMsg = 'Must have a `type` when `registerTransform`.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var typeParsed = type.split(':');\r\n        if (typeParsed.length !== 2) {\r\n            if (__DEV__) {\r\n                errMsg = 'Name must include namespace like \"ns:regression\".';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var isBuiltIn = false;\r\n        if (typeParsed[0] === 'echarts') {\r\n            type = typeParsed[1];\r\n            isBuiltIn = true;\r\n        }\r\n        externalTransform.__isBuiltIn = isBuiltIn;\r\n        externalTransformMap.set(type, externalTransform);\r\n    }\r\n    function applyDataTransform(rawTransOption, sourceList, infoForPrint) {\r\n        var pipedTransOption = normalizeToArray(rawTransOption);\r\n        var pipeLen = pipedTransOption.length;\r\n        var errMsg = '';\r\n        if (!pipeLen) {\r\n            if (__DEV__) {\r\n                errMsg = 'If `transform` declared, it should at least contain one transform.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        for (var i = 0, len = pipeLen; i < len; i++) {\r\n            var transOption = pipedTransOption[i];\r\n            sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i);\r\n            if (i !== len - 1) {\r\n                sourceList.length = Math.max(sourceList.length, 1);\r\n            }\r\n        }\r\n        return sourceList;\r\n    }\r\n    function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) {\r\n        var errMsg = '';\r\n        if (!upSourceList.length) {\r\n            if (__DEV__) {\r\n                errMsg = 'Must have at least one upstream dataset.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        if (!isObject(transOption)) {\r\n            if (__DEV__) {\r\n                errMsg = 'transform declaration must be an object rather than ' + typeof transOption + '.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var transType = transOption.type;\r\n        var externalTransform = externalTransformMap.get(transType);\r\n        if (!externalTransform) {\r\n            if (__DEV__) {\r\n                errMsg = 'Can not find transform on type \"' + transType + '\".';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var extUpSourceList = map(upSourceList, function (upSource) { return createExternalSource(upSource, externalTransform); });\r\n        var resultList = normalizeToArray(externalTransform.transform({\r\n            upstream: extUpSourceList[0],\r\n            upstreamList: extUpSourceList,\r\n            config: clone(transOption.config)\r\n        }));\r\n        if (__DEV__) {\r\n            if (transOption.print) {\r\n                var printStrArr = map(resultList, function (extSource) {\r\n                    var pipeIndexStr = pipeIndex != null ? ' === pipe index: ' + pipeIndex : '';\r\n                    return [\r\n                        '=== dataset index: ' + infoForPrint.datasetIndex + pipeIndexStr + ' ===',\r\n                        '- transform result data:',\r\n                        makePrintable(extSource.data),\r\n                        '- transform result dimensions:',\r\n                        makePrintable(extSource.dimensions)\r\n                    ].join('\\n');\r\n                }).join('\\n');\r\n                consoleLog(printStrArr);\r\n            }\r\n        }\r\n        return map(resultList, function (result) {\r\n            var errMsg = '';\r\n            if (!isObject(result)) {\r\n                if (__DEV__) {\r\n                    errMsg = 'A transform should not return some empty results.';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            var resultData = result.data;\r\n            if (resultData != null) {\r\n                if (!isObject(resultData) && !isArrayLike(resultData)) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Result data should be object or array in data transform.';\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n            }\r\n            else {\r\n                resultData = upSourceList[0].data;\r\n            }\r\n            var resultMetaRawOption = inheritSourceMetaRawOption(upSourceList[0], {\r\n                seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\r\n                sourceHeader: 0,\r\n                dimensions: result.dimensions\r\n            });\r\n            return createSource(resultData, resultMetaRawOption, null, null);\r\n        });\r\n    }\n\n    var SourceManager = (function () {\r\n        function SourceManager(sourceHost) {\r\n            this._sourceList = [];\r\n            this._upstreamSignList = [];\r\n            this._versionSignBase = 0;\r\n            this._sourceHost = sourceHost;\r\n        }\r\n        SourceManager.prototype.dirty = function () {\r\n            this._setLocalSource([], []);\r\n        };\r\n        SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) {\r\n            this._sourceList = sourceList;\r\n            this._upstreamSignList = upstreamSignList;\r\n            this._versionSignBase++;\r\n            if (this._versionSignBase > 9e10) {\r\n                this._versionSignBase = 0;\r\n            }\r\n        };\r\n        SourceManager.prototype._getVersionSign = function () {\r\n            return this._sourceHost.uid + '_' + this._versionSignBase;\r\n        };\r\n        SourceManager.prototype.prepareSource = function () {\r\n            if (this._isDirty()) {\r\n                this._createSource();\r\n            }\r\n        };\r\n        SourceManager.prototype._createSource = function () {\r\n            this._setLocalSource([], []);\r\n            var sourceHost = this._sourceHost;\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            var hasUpstream = !!upSourceMgrList.length;\r\n            var resultSourceList;\r\n            var upstreamSignList;\r\n            if (isSeries(sourceHost)) {\r\n                var seriesModel = sourceHost;\r\n                var data = void 0;\r\n                var sourceFormat = void 0;\r\n                var upSource = void 0;\r\n                if (hasUpstream) {\r\n                    var upSourceMgr = upSourceMgrList[0];\r\n                    upSourceMgr.prepareSource();\r\n                    upSource = upSourceMgr.getSource();\r\n                    data = upSource.data;\r\n                    sourceFormat = upSource.sourceFormat;\r\n                    upstreamSignList = [upSourceMgr._getVersionSign()];\r\n                }\r\n                else {\r\n                    data = seriesModel.get('data', true);\r\n                    sourceFormat = isTypedArray(data)\r\n                        ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\r\n                    upstreamSignList = [];\r\n                }\r\n                var thisMetaRawOption = inheritSourceMetaRawOption(upSource, this._getSourceMetaRawOption());\r\n                resultSourceList = [createSource(data, thisMetaRawOption, sourceFormat, seriesModel.get('encode', true))];\r\n            }\r\n            else {\r\n                var datasetModel = sourceHost;\r\n                if (hasUpstream) {\r\n                    var result = this._applyTransform(upSourceMgrList);\r\n                    resultSourceList = result.sourceList;\r\n                    upstreamSignList = result.upstreamSignList;\r\n                }\r\n                else {\r\n                    var sourceData = datasetModel.get('source', true);\r\n                    resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null, null)];\r\n                    upstreamSignList = [];\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                assert(resultSourceList && upstreamSignList);\r\n            }\r\n            this._setLocalSource(resultSourceList, upstreamSignList);\r\n        };\r\n        SourceManager.prototype._applyTransform = function (upMgrList) {\r\n            var datasetModel = this._sourceHost;\r\n            var transformOption = datasetModel.get('transform', true);\r\n            var fromTransformResult = datasetModel.get('fromTransformResult', true);\r\n            if (__DEV__) {\r\n                assert(fromTransformResult != null || transformOption != null);\r\n            }\r\n            if (fromTransformResult != null) {\r\n                var errMsg = '';\r\n                if (upMgrList.length !== 1) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset';\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n            }\r\n            var sourceList;\r\n            var upSourceList = [];\r\n            var upstreamSignList = [];\r\n            each(upMgrList, function (upMgr) {\r\n                upMgr.prepareSource();\r\n                var upSource = upMgr.getSource(fromTransformResult || 0);\r\n                var errMsg = '';\r\n                if (fromTransformResult != null && !upSource) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Can not retrieve result by `fromTransformResult`: ' + fromTransformResult;\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n                upSourceList.push(upSource);\r\n                upstreamSignList.push(upMgr._getVersionSign());\r\n            });\r\n            if (transformOption) {\r\n                sourceList = applyDataTransform(transformOption, upSourceList, { datasetIndex: datasetModel.componentIndex });\r\n            }\r\n            else if (fromTransformResult != null) {\r\n                sourceList = [cloneSourceShallow(upSourceList[0])];\r\n            }\r\n            return { sourceList: sourceList, upstreamSignList: upstreamSignList };\r\n        };\r\n        SourceManager.prototype._isDirty = function () {\r\n            var sourceList = this._sourceList;\r\n            if (!sourceList.length) {\r\n                return true;\r\n            }\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            for (var i = 0; i < upSourceMgrList.length; i++) {\r\n                var upSrcMgr = upSourceMgrList[i];\r\n                if (upSrcMgr._isDirty()\r\n                    || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {\r\n                    return true;\r\n                }\r\n            }\r\n        };\r\n        SourceManager.prototype.getSource = function (sourceIndex) {\r\n            return this._sourceList[sourceIndex || 0];\r\n        };\r\n        SourceManager.prototype._getUpstreamSourceManagers = function () {\r\n            var sourceHost = this._sourceHost;\r\n            if (isSeries(sourceHost)) {\r\n                var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);\r\n                return !datasetModel ? [] : [datasetModel.getSourceManager()];\r\n            }\r\n            else {\r\n                return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) { return datasetModel.getSourceManager(); });\r\n            }\r\n        };\r\n        SourceManager.prototype._getSourceMetaRawOption = function () {\r\n            var sourceHost = this._sourceHost;\r\n            var seriesLayoutBy;\r\n            var sourceHeader;\r\n            var dimensions;\r\n            if (isSeries(sourceHost)) {\r\n                seriesLayoutBy = sourceHost.get('seriesLayoutBy', true);\r\n                sourceHeader = sourceHost.get('sourceHeader', true);\r\n                dimensions = sourceHost.get('dimensions', true);\r\n            }\r\n            else if (!this._getUpstreamSourceManagers().length) {\r\n                var model = sourceHost;\r\n                seriesLayoutBy = model.get('seriesLayoutBy', true);\r\n                sourceHeader = model.get('sourceHeader', true);\r\n                dimensions = model.get('dimensions', true);\r\n            }\r\n            return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n        };\r\n        return SourceManager;\r\n    }());\r\n    function disableTransformOptionMerge(datasetModel) {\r\n        var transformOption = datasetModel.option.transform;\r\n        transformOption && setAsPrimitive(datasetModel.option.transform);\r\n    }\r\n    function isSeries(sourceHost) {\r\n        return sourceHost.mainType === 'series';\r\n    }\r\n    function doThrow(errMsg) {\r\n        throw new Error(errMsg);\r\n    }\n\n    var TOOLTIP_NAME_TEXT_STYLE_CSS = 'font-size:12px;color:#6e7079';\r\n    var TOOLTIP_TEXT_STYLE_RICH = {\r\n        fontSize: 12,\r\n        fill: '#6e7079'\r\n    };\r\n    var TOOLTIP_VALUE_TEXT_STYLE_CSS = 'font-size:14px;color:#464646;font-weight:900';\r\n    var TOOLTIP_VALUE_TEXT_STYLE_RICH = {\r\n        fontSize: 14,\r\n        fill: '#464646',\r\n        fontWeight: 900\r\n    };\r\n    var TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1';\r\n    var HTML_GAPS = [0, 10, 20, 30];\r\n    var RICH_TEXT_GAPS = ['', '\\n', '\\n\\n', '\\n\\n\\n'];\r\n    function createTooltipMarkup(type, option) {\r\n        option.type = type;\r\n        return option;\r\n    }\r\n    function getBuilder(fragment) {\r\n        return hasOwn(builderMap, fragment.type) && builderMap[fragment.type];\r\n    }\r\n    var builderMap = {\r\n        section: {\r\n            planLayout: function (fragment) {\r\n                var subBlockLen = fragment.blocks.length;\r\n                var thisBlockHasInnerGap = subBlockLen > 1 || (subBlockLen > 0 && !fragment.noHeader);\r\n                var thisGapLevelBetweenSubBlocks = 0;\r\n                each(fragment.blocks, function (subBlock) {\r\n                    getBuilder(subBlock).planLayout(subBlock);\r\n                    var subGapLevel = subBlock.__gapLevelBetweenSubBlocks;\r\n                    if (subGapLevel >= thisGapLevelBetweenSubBlocks) {\r\n                        thisGapLevelBetweenSubBlocks = subGapLevel + ((thisBlockHasInnerGap && (!subGapLevel\r\n                            || (subBlock.type === 'section' && !subBlock.noHeader))) ? 1 : 0);\r\n                    }\r\n                });\r\n                fragment.__gapLevelBetweenSubBlocks = thisGapLevelBetweenSubBlocks;\r\n            },\r\n            build: function (ctx, fragment, topMarginForOuterGap) {\r\n                var noHeader = fragment.noHeader;\r\n                var gaps = getGap(fragment);\r\n                var subMarkupText = buildSubBlocks(ctx, fragment, noHeader ? topMarginForOuterGap : gaps.html);\r\n                if (noHeader) {\r\n                    return subMarkupText;\r\n                }\r\n                var displayableHeader = makeValueReadable(fragment.header, 'ordinal', ctx.useUTC);\r\n                if (ctx.renderMode === 'richText') {\r\n                    return wrapInlineNameRichText(ctx, displayableHeader) + gaps.richText\r\n                        + subMarkupText;\r\n                }\r\n                else {\r\n                    return wrapBlockHTML(\"<div style=\\\"\" + TOOLTIP_NAME_TEXT_STYLE_CSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\"\r\n                        + encodeHTML(displayableHeader)\r\n                        + '</div>'\r\n                        + subMarkupText, topMarginForOuterGap);\r\n                }\r\n            }\r\n        },\r\n        nameValue: {\r\n            planLayout: function (fragment) {\r\n                fragment.__gapLevelBetweenSubBlocks = 0;\r\n            },\r\n            build: function (ctx, fragment, topMarginForOuterGap) {\r\n                var renderMode = ctx.renderMode;\r\n                var noName = fragment.noName;\r\n                var noValue = fragment.noValue;\r\n                var noMarker = !fragment.markerType;\r\n                var name = fragment.name;\r\n                var value = fragment.value;\r\n                var useUTC = ctx.useUTC;\r\n                if (noName && noValue) {\r\n                    return;\r\n                }\r\n                var markerStr = noMarker\r\n                    ? ''\r\n                    : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || '#333', renderMode);\r\n                var readableName = noName\r\n                    ? ''\r\n                    : makeValueReadable(name, 'ordinal', useUTC);\r\n                var valueTypeOption = fragment.valueType;\r\n                var readableValueList = noValue\r\n                    ? []\r\n                    : (isArray(value)\r\n                        ? map(value, function (val, idx) { return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); })\r\n                        : [makeValueReadable(value, isArray(valueTypeOption) ? valueTypeOption[0] : valueTypeOption, useUTC)]);\r\n                var valueAlignRight = !noMarker || !noName;\r\n                var valueCloseToMarker = !noMarker && noName;\r\n                return renderMode === 'richText'\r\n                    ? ((noMarker ? '' : markerStr)\r\n                        + (noName ? '' : wrapInlineNameRichText(ctx, readableName))\r\n                        + (noValue ? '' : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker)))\r\n                    : wrapBlockHTML((noMarker ? '' : markerStr)\r\n                        + (noName ? '' : wrapInlineNameHTML(readableName, !noMarker))\r\n                        + (noValue ? '' : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker)), topMarginForOuterGap);\r\n            }\r\n        }\r\n    };\r\n    function buildSubBlocks(ctx, fragment, topMarginForOuterGap) {\r\n        var subMarkupTextList = [];\r\n        var subBlocks = fragment.blocks || [];\r\n        assert(!subBlocks || isArray(subBlocks));\r\n        subBlocks = subBlocks || [];\r\n        var orderMode = ctx.orderMode;\r\n        if (fragment.sortBlocks && orderMode) {\r\n            subBlocks = subBlocks.slice();\r\n            var orderMap = { valueAsc: 'asc', valueDesc: 'desc' };\r\n            if (hasOwn(orderMap, orderMode)) {\r\n                var comparator_1 = new SortOrderComparator(orderMap[orderMode], null);\r\n                subBlocks.sort(function (a, b) { return comparator_1.evaluate(a.sortParam, b.sortParam); });\r\n            }\r\n            else if (orderMode === 'seriesDesc') {\r\n                subBlocks.reverse();\r\n            }\r\n        }\r\n        var gaps = getGap(fragment);\r\n        each(subBlocks, function (subBlock, idx) {\r\n            var subMarkupText = getBuilder(subBlock).build(ctx, subBlock, idx > 0 ? gaps.html : 0);\r\n            subMarkupText != null && subMarkupTextList.push(subMarkupText);\r\n        });\r\n        if (!subMarkupTextList.length) {\r\n            return;\r\n        }\r\n        return ctx.renderMode === 'richText'\r\n            ? subMarkupTextList.join(gaps.richText)\r\n            : wrapBlockHTML(subMarkupTextList.join(''), topMarginForOuterGap);\r\n    }\r\n    function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC) {\r\n        if (!fragment) {\r\n            return;\r\n        }\r\n        var builder = getBuilder(fragment);\r\n        builder.planLayout(fragment);\r\n        var ctx = {\r\n            useUTC: useUTC,\r\n            renderMode: renderMode,\r\n            orderMode: orderMode,\r\n            markupStyleCreator: markupStyleCreator\r\n        };\r\n        return builder.build(ctx, fragment, 0);\r\n    }\r\n    function getGap(fragment) {\r\n        var gapLevelBetweenSubBlocks = fragment.__gapLevelBetweenSubBlocks;\r\n        return {\r\n            html: HTML_GAPS[gapLevelBetweenSubBlocks],\r\n            richText: RICH_TEXT_GAPS[gapLevelBetweenSubBlocks]\r\n        };\r\n    }\r\n    function wrapBlockHTML(encodedContent, topGap) {\r\n        var clearfix = '<div style=\"clear:both\"></div>';\r\n        var marginCSS = \"margin: \" + topGap + \"px 0 0\";\r\n        return \"<div style=\\\"\" + marginCSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\"\r\n            + encodedContent + clearfix\r\n            + '</div>';\r\n    }\r\n    function wrapInlineNameHTML(name, leftHasMarker) {\r\n        var marginCss = leftHasMarker ? 'margin-left:2px' : '';\r\n        return \"<span style=\\\"\" + TOOLTIP_NAME_TEXT_STYLE_CSS + \";\" + marginCss + \"\\\">\"\r\n            + encodeHTML(name)\r\n            + '</span>';\r\n    }\r\n    function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker) {\r\n        var paddingStr = valueCloseToMarker ? '10px' : '20px';\r\n        var alignCSS = alignRight ? \"float:right;margin-left:\" + paddingStr : '';\r\n        return (\"<span style=\\\"\" + alignCSS + \";\" + TOOLTIP_VALUE_TEXT_STYLE_CSS + \"\\\">\"\r\n            + map(valueList, function (value) { return encodeHTML(value); }).join('&nbsp;&nbsp;')\r\n            + '</span>');\r\n    }\r\n    function wrapInlineNameRichText(ctx, name) {\r\n        return ctx.markupStyleCreator.wrapRichTextStyle(name, TOOLTIP_TEXT_STYLE_RICH);\r\n    }\r\n    function wrapInlineValueRichText(ctx, valueList, alignRight, valueCloseToMarker) {\r\n        var styles = [TOOLTIP_VALUE_TEXT_STYLE_RICH];\r\n        var paddingLeft = valueCloseToMarker ? 10 : 20;\r\n        alignRight && styles.push({ padding: [0, 0, 0, paddingLeft], align: 'right' });\r\n        return ctx.markupStyleCreator.wrapRichTextStyle(valueList.join('  '), styles);\r\n    }\r\n    function retrieveVisualColorForTooltipMarker(series, dataIndex) {\r\n        var style = series.getData().getItemVisual(dataIndex, 'style');\r\n        var color = style[series.visualDrawType];\r\n        return convertToColorString(color);\r\n    }\r\n    function getPaddingFromTooltipModel(model, renderMode) {\r\n        var padding = model.get('padding');\r\n        return padding != null\r\n            ? padding\r\n            : renderMode === 'richText'\r\n                ? [8, 10]\r\n                : 10;\r\n    }\r\n    var TooltipMarkupStyleCreator = (function () {\r\n        function TooltipMarkupStyleCreator() {\r\n            this.richTextStyles = {};\r\n            this._nextStyleNameId = getRandomIdBase();\r\n        }\r\n        TooltipMarkupStyleCreator.prototype._generateStyleName = function () {\r\n            return '__EC_aUTo_' + this._nextStyleNameId++;\r\n        };\r\n        TooltipMarkupStyleCreator.prototype.makeTooltipMarker = function (markerType, colorStr, renderMode) {\r\n            var markerId = renderMode === 'richText'\r\n                ? this._generateStyleName()\r\n                : null;\r\n            var marker = getTooltipMarker({\r\n                color: colorStr,\r\n                type: markerType,\r\n                renderMode: renderMode,\r\n                markerId: markerId\r\n            });\r\n            if (isString(marker)) {\r\n                return marker;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    assert(markerId);\r\n                }\r\n                this.richTextStyles[markerId] = marker.style;\r\n                return marker.content;\r\n            }\r\n        };\r\n        TooltipMarkupStyleCreator.prototype.wrapRichTextStyle = function (text, styles) {\r\n            var finalStl = {};\r\n            if (isArray(styles)) {\r\n                each(styles, function (stl) { return extend(finalStl, stl); });\r\n            }\r\n            else {\r\n                extend(finalStl, styles);\r\n            }\r\n            var styleName = this._generateStyleName();\r\n            this.richTextStyles[styleName] = finalStl;\r\n            return \"{\" + styleName + \"|\" + text + \"}\";\r\n        };\r\n        return TooltipMarkupStyleCreator;\r\n    }());\n\n    function defaultSeriesFormatTooltip(opt) {\r\n        var series = opt.series;\r\n        var dataIndex = opt.dataIndex;\r\n        var multipleSeries = opt.multipleSeries;\r\n        var data = series.getData();\r\n        var tooltipDims = data.mapDimensionsAll('defaultedTooltip');\r\n        var tooltipDimLen = tooltipDims.length;\r\n        var value = series.getRawValue(dataIndex);\r\n        var isValueArr = isArray(value);\r\n        var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex);\r\n        var inlineValue;\r\n        var inlineValueType;\r\n        var subBlocks;\r\n        var sortParam;\r\n        if (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen)) {\r\n            var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);\r\n            inlineValue = formatArrResult.inlineValues;\r\n            inlineValueType = formatArrResult.inlineValueTypes;\r\n            subBlocks = formatArrResult.blocks;\r\n            sortParam = formatArrResult.inlineValues[0];\r\n        }\r\n        else if (tooltipDimLen) {\r\n            var dimInfo = data.getDimensionInfo(tooltipDims[0]);\r\n            sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);\r\n            inlineValueType = dimInfo.type;\r\n        }\r\n        else {\r\n            sortParam = inlineValue = isValueArr ? value[0] : value;\r\n        }\r\n        var seriesNameSpecified = isNameSpecified(series);\r\n        var seriesName = seriesNameSpecified && series.name || '';\r\n        var itemName = data.getName(dataIndex);\r\n        var inlineName = multipleSeries ? seriesName : itemName;\r\n        return createTooltipMarkup('section', {\r\n            header: seriesName,\r\n            noHeader: multipleSeries || !seriesNameSpecified,\r\n            sortParam: sortParam,\r\n            blocks: [\r\n                createTooltipMarkup('nameValue', {\r\n                    markerType: 'item',\r\n                    markerColor: markerColor,\r\n                    name: inlineName,\r\n                    noName: !trim(inlineName),\r\n                    value: inlineValue,\r\n                    valueType: inlineValueType\r\n                })\r\n            ].concat(subBlocks || [])\r\n        });\r\n    }\r\n    function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {\r\n        var data = series.getData();\r\n        var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) {\r\n            var dimItem = data.getDimensionInfo(idx);\r\n            return isValueMultipleLine = isValueMultipleLine\r\n                || (dimItem && dimItem.tooltip !== false && dimItem.displayName != null);\r\n        }, false);\r\n        var inlineValues = [];\r\n        var inlineValueTypes = [];\r\n        var blocks = [];\r\n        tooltipDims.length\r\n            ? each(tooltipDims, function (dim) {\r\n                setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\r\n            })\r\n            : each(value, setEachItem);\r\n        function setEachItem(val, dim) {\r\n            var dimInfo = data.getDimensionInfo(dim);\r\n            if (!dimInfo || dimInfo.otherDims.tooltip === false) {\r\n                return;\r\n            }\r\n            if (isValueMultipleLine) {\r\n                blocks.push(createTooltipMarkup('nameValue', {\r\n                    markerType: 'subItem',\r\n                    markerColor: colorStr,\r\n                    name: dimInfo.displayName,\r\n                    value: val,\r\n                    valueType: dimInfo.type\r\n                }));\r\n            }\r\n            else {\r\n                inlineValues.push(val);\r\n                inlineValueTypes.push(dimInfo.type);\r\n            }\r\n        }\r\n        return { inlineValues: inlineValues, inlineValueTypes: inlineValueTypes, blocks: blocks };\r\n    }\n\n    var inner$1 = makeInner();\r\n    function getSelectionKey(data, dataIndex) {\r\n        return data.getName(dataIndex) || data.getId(dataIndex);\r\n    }\r\n    var SeriesModel = (function (_super) {\r\n        __extends(SeriesModel, _super);\r\n        function SeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this._selectedDataIndicesMap = {};\r\n            return _this;\r\n        }\r\n        SeriesModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.seriesIndex = this.componentIndex;\r\n            this.dataTask = createTask({\r\n                count: dataTaskCount,\r\n                reset: dataTaskReset\r\n            });\r\n            this.dataTask.context = { model: this };\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            var sourceManager = inner$1(this).sourceManager = new SourceManager(this);\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(option, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.context.data = data;\r\n            if (__DEV__) {\r\n                assert(data, 'getInitialData returned invalid data.');\r\n            }\r\n            inner$1(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeSubType = this.subType;\r\n            if (ComponentModel.hasClass(themeSubType)) {\r\n                themeSubType += 'Series';\r\n            }\r\n            merge(option, ecModel.getTheme().get(this.subType));\r\n            merge(option, this.getDefaultOption());\r\n            defaultEmphasis(option, 'label', ['show']);\r\n            this.fillDataTextStyle(option.data);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) {\r\n            newSeriesOption = merge(this.option, newSeriesOption, true);\r\n            this.fillDataTextStyle(newSeriesOption.data);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, newSeriesOption, layoutMode);\r\n            }\r\n            var sourceManager = inner$1(this).sourceManager;\r\n            sourceManager.dirty();\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(newSeriesOption, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.dirty();\r\n            this.dataTask.context.data = data;\r\n            inner$1(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.fillDataTextStyle = function (data) {\r\n            if (data && !isTypedArray(data)) {\r\n                var props = ['show'];\r\n                for (var i = 0; i < data.length; i++) {\r\n                    if (data[i] && data[i].label) {\r\n                        defaultEmphasis(data[i], 'label', props);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        SeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return;\r\n        };\r\n        SeriesModel.prototype.appendData = function (params) {\r\n            var data = this.getRawData();\r\n            data.appendData(params.data);\r\n        };\r\n        SeriesModel.prototype.getData = function (dataType) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var data = task.context.data;\r\n                return (dataType == null ? data : data.getLinkedData(dataType));\r\n            }\r\n            else {\r\n                return inner$1(this).data;\r\n            }\r\n        };\r\n        SeriesModel.prototype.getAllData = function () {\r\n            var mainData = this.getData();\r\n            return (mainData && mainData.getLinkedDataAll)\r\n                ? mainData.getLinkedDataAll()\r\n                : [{ data: mainData }];\r\n        };\r\n        SeriesModel.prototype.setData = function (data) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var context = task.context;\r\n                context.outputData = data;\r\n                if (task !== this.dataTask) {\r\n                    context.data = data;\r\n                }\r\n            }\r\n            inner$1(this).data = data;\r\n        };\r\n        SeriesModel.prototype.getSource = function () {\r\n            return inner$1(this).sourceManager.getSource();\r\n        };\r\n        SeriesModel.prototype.getRawData = function () {\r\n            return inner$1(this).dataBeforeProcessed;\r\n        };\r\n        SeriesModel.prototype.getBaseAxis = function () {\r\n            var coordSys = this.coordinateSystem;\r\n            return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\r\n        };\r\n        SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            return defaultSeriesFormatTooltip({\r\n                series: this,\r\n                dataIndex: dataIndex,\r\n                multipleSeries: multipleSeries\r\n            });\r\n        };\r\n        SeriesModel.prototype.isAnimationEnabled = function () {\r\n            if (env.node) {\r\n                return false;\r\n            }\r\n            var animationEnabled = this.getShallow('animation');\r\n            if (animationEnabled) {\r\n                if (this.getData().count() > this.getShallow('animationThreshold')) {\r\n                    animationEnabled = false;\r\n                }\r\n            }\r\n            return !!animationEnabled;\r\n        };\r\n        SeriesModel.prototype.restoreData = function () {\r\n            this.dataTask.dirty();\r\n        };\r\n        SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\r\n            var ecModel = this.ecModel;\r\n            var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);\r\n            if (!color) {\r\n                color = ecModel.getColorFromPalette(name, scope, requestColorNum);\r\n            }\r\n            return color;\r\n        };\r\n        SeriesModel.prototype.coordDimToDataDim = function (coordDim) {\r\n            return this.getRawData().mapDimensionsAll(coordDim);\r\n        };\r\n        SeriesModel.prototype.getProgressive = function () {\r\n            return this.get('progressive');\r\n        };\r\n        SeriesModel.prototype.getProgressiveThreshold = function () {\r\n            return this.get('progressiveThreshold');\r\n        };\r\n        SeriesModel.prototype.select = function (innerDataIndices, dataType) {\r\n            this._innerSelect(this.getData(dataType), innerDataIndices);\r\n        };\r\n        SeriesModel.prototype.unselect = function (innerDataIndices, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return;\r\n            }\r\n            var data = this.getData(dataType);\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                var dataIndex = innerDataIndices[i];\r\n                var nameOrId = getSelectionKey(data, dataIndex);\r\n                selectedMap[nameOrId] = false;\r\n                this._selectedDataIndicesMap[nameOrId] = -1;\r\n            }\r\n        };\r\n        SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) {\r\n            var tmpArr = [];\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                tmpArr[0] = innerDataIndices[i];\r\n                this.isSelected(innerDataIndices[i], dataType)\r\n                    ? this.unselect(tmpArr, dataType)\r\n                    : this.select(tmpArr, dataType);\r\n            }\r\n        };\r\n        SeriesModel.prototype.getSelectedDataIndices = function () {\r\n            var selectedDataIndicesMap = this._selectedDataIndicesMap;\r\n            var nameOrIds = keys(selectedDataIndicesMap);\r\n            var dataIndices = [];\r\n            for (var i = 0; i < nameOrIds.length; i++) {\r\n                var dataIndex = selectedDataIndicesMap[nameOrIds[i]];\r\n                if (dataIndex >= 0) {\r\n                    dataIndices.push(dataIndex);\r\n                }\r\n            }\r\n            return dataIndices;\r\n        };\r\n        SeriesModel.prototype.isSelected = function (dataIndex, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return false;\r\n            }\r\n            var data = this.getData(dataType);\r\n            var nameOrId = getSelectionKey(data, dataIndex);\r\n            return selectedMap[nameOrId] || false;\r\n        };\r\n        SeriesModel.prototype._innerSelect = function (data, innerDataIndices) {\r\n            var _a, _b;\r\n            var selectedMode = this.option.selectedMode;\r\n            var len = innerDataIndices.length;\r\n            if (!selectedMode || !len) {\r\n                return;\r\n            }\r\n            if (selectedMode === 'multiple') {\r\n                var selectedMap = this.option.selectedMap || (this.option.selectedMap = {});\r\n                for (var i = 0; i < len; i++) {\r\n                    var dataIndex = innerDataIndices[i];\r\n                    var nameOrId = getSelectionKey(data, dataIndex);\r\n                    selectedMap[nameOrId] = true;\r\n                    this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);\r\n                }\r\n            }\r\n            else if (selectedMode === 'single' || selectedMode === true) {\r\n                var lastDataIndex = innerDataIndices[len - 1];\r\n                var nameOrId = getSelectionKey(data, lastDataIndex);\r\n                this.option.selectedMap = (_a = {},\r\n                    _a[nameOrId] = true,\r\n                    _a);\r\n                this._selectedDataIndicesMap = (_b = {},\r\n                    _b[nameOrId] = data.getRawIndex(lastDataIndex),\r\n                    _b);\r\n            }\r\n        };\r\n        SeriesModel.prototype._initSelectedMapFromData = function (data) {\r\n            if (this.option.selectedMap) {\r\n                return;\r\n            }\r\n            var dataIndices = [];\r\n            if (data.hasItemOption) {\r\n                data.each(function (idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (typeof rawItem === 'object'\r\n                        && rawItem.selected) {\r\n                        dataIndices.push(idx);\r\n                    }\r\n                });\r\n            }\r\n            if (dataIndices.length > 0) {\r\n                this._innerSelect(data, dataIndices);\r\n            }\r\n        };\r\n        SeriesModel.registerClass = function (clz) {\r\n            return ComponentModel.registerClass(clz);\r\n        };\r\n        SeriesModel.protoInitialize = (function () {\r\n            var proto = SeriesModel.prototype;\r\n            proto.type = 'series.__base__';\r\n            proto.seriesIndex = 0;\r\n            proto.useColorPaletteOnData = false;\r\n            proto.ignoreStyleOnData = false;\r\n            proto.hasSymbolVisual = false;\r\n            proto.defaultSymbol = 'circle';\r\n            proto.visualStyleAccessPath = 'itemStyle';\r\n            proto.visualDrawType = 'fill';\r\n        })();\r\n        return SeriesModel;\r\n    }(ComponentModel));\r\n    mixin(SeriesModel, DataFormatMixin);\r\n    mixin(SeriesModel, PaletteMixin);\r\n    mountExtend(SeriesModel, ComponentModel);\r\n    function autoSeriesName(seriesModel) {\r\n        var name = seriesModel.name;\r\n        if (!isNameSpecified(seriesModel)) {\r\n            seriesModel.name = getSeriesAutoName(seriesModel) || name;\r\n        }\r\n    }\r\n    function getSeriesAutoName(seriesModel) {\r\n        var data = seriesModel.getRawData();\r\n        var dataDims = data.mapDimensionsAll('seriesName');\r\n        var nameArr = [];\r\n        each(dataDims, function (dataDim) {\r\n            var dimInfo = data.getDimensionInfo(dataDim);\r\n            dimInfo.displayName && nameArr.push(dimInfo.displayName);\r\n        });\r\n        return nameArr.join(' ');\r\n    }\r\n    function dataTaskCount(context) {\r\n        return context.model.getRawData().count();\r\n    }\r\n    function dataTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        seriesModel.setData(seriesModel.getRawData().cloneShallow());\r\n        return dataTaskProgress;\r\n    }\r\n    function dataTaskProgress(param, context) {\r\n        if (context.outputData && param.end > context.outputData.count()) {\r\n            context.model.getRawData().cloneShallow(context.outputData);\r\n        }\r\n    }\r\n    function wrapData(data, seriesModel) {\r\n        each(__spreadArrays(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function (methodName) {\r\n            data.wrapMethod(methodName, curry(onDataChange, seriesModel));\r\n        });\r\n    }\r\n    function onDataChange(seriesModel, newList) {\r\n        var task = getCurrentTask(seriesModel);\r\n        if (task) {\r\n            task.setOutputEnd((newList || this).count());\r\n        }\r\n        return newList;\r\n    }\r\n    function getCurrentTask(seriesModel) {\r\n        var scheduler = (seriesModel.ecModel || {}).scheduler;\r\n        var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\r\n        if (pipeline) {\r\n            var task = pipeline.currentTask;\r\n            if (task) {\r\n                var agentStubMap = task.agentStubMap;\r\n                if (agentStubMap) {\r\n                    task = agentStubMap.get(seriesModel.uid);\r\n                }\r\n            }\r\n            return task;\r\n        }\r\n    }\n\n    var ComponentView = (function () {\r\n        function ComponentView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewComponent');\r\n        }\r\n        ComponentView.prototype.init = function (ecModel, api) { };\r\n        ComponentView.prototype.render = function (model, ecModel, api, payload) { };\r\n        ComponentView.prototype.dispose = function (ecModel, api) { };\r\n        ComponentView.prototype.updateView = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.blurSeries = function (seriesModels, ecModel) {\r\n        };\r\n        return ComponentView;\r\n    }());\r\n    enableClassExtend(ComponentView);\r\n    enableClassManagement(ComponentView, { registerWhenExtend: true });\n\n    function createRenderPlanner() {\r\n        var inner = makeInner();\r\n        return function (seriesModel) {\r\n            var fields = inner(seriesModel);\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var originalLarge = !!fields.large;\r\n            var originalProgressive = !!fields.progressiveRender;\r\n            var large = fields.large = !!(pipelineContext && pipelineContext.large);\r\n            var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);\r\n            return (!!((originalLarge !== large) || (originalProgressive !== progressive)) && 'reset');\r\n        };\r\n    }\n\n    var inner$2 = makeInner();\r\n    var renderPlanner = createRenderPlanner();\r\n    var ChartView = (function () {\r\n        function ChartView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewChart');\r\n            this.renderTask = createTask({\r\n                plan: renderTaskPlan,\r\n                reset: renderTaskReset\r\n            });\r\n            this.renderTask.context = { view: this };\r\n        }\r\n        ChartView.prototype.init = function (ecModel, api) { };\r\n        ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { };\r\n        ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'emphasis');\r\n        };\r\n        ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'normal');\r\n        };\r\n        ChartView.prototype.remove = function (ecModel, api) {\r\n            this.group.removeAll();\r\n        };\r\n        ChartView.prototype.dispose = function (ecModel, api) { };\r\n        ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.markUpdateMethod = function (payload, methodName) {\r\n            inner$2(payload).updateMethod = methodName;\r\n        };\r\n        ChartView.protoInitialize = (function () {\r\n            var proto = ChartView.prototype;\r\n            proto.type = 'chart';\r\n        })();\r\n        return ChartView;\r\n    }());\r\n    function elSetState(el, state, highlightDigit) {\r\n        if (el) {\r\n            (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\r\n        }\r\n    }\r\n    function toggleHighlight(data, payload, state) {\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        var highlightDigit = (payload && payload.highlightKey != null)\r\n            ? getHighlightDigit(payload.highlightKey)\r\n            : null;\r\n        if (dataIndex != null) {\r\n            each(normalizeToArray(dataIndex), function (dataIdx) {\r\n                elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\r\n            });\r\n        }\r\n        else {\r\n            data.eachItemGraphicEl(function (el) {\r\n                elSetState(el, state, highlightDigit);\r\n            });\r\n        }\r\n    }\r\n    enableClassExtend(ChartView, ['dispose']);\r\n    enableClassManagement(ChartView, { registerWhenExtend: true });\r\n    function renderTaskPlan(context) {\r\n        return renderPlanner(context.model);\r\n    }\r\n    function renderTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        var ecModel = context.ecModel;\r\n        var api = context.api;\r\n        var payload = context.payload;\r\n        var progressiveRender = seriesModel.pipelineContext.progressiveRender;\r\n        var view = context.view;\r\n        var updateMethod = payload && inner$2(payload).updateMethod;\r\n        var methodName = progressiveRender\r\n            ? 'incrementalPrepareRender'\r\n            : (updateMethod && view[updateMethod])\r\n                ? updateMethod\r\n                : 'render';\r\n        if (methodName !== 'render') {\r\n            view[methodName](seriesModel, ecModel, api, payload);\r\n        }\r\n        return progressMethodMap[methodName];\r\n    }\r\n    var progressMethodMap = {\r\n        incrementalPrepareRender: {\r\n            progress: function (params, context) {\r\n                context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        },\r\n        render: {\r\n            forceFirstProgress: true,\r\n            progress: function (params, context) {\r\n                context.view.render(context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        }\r\n    };\n\n    var ORIGIN_METHOD = '\\0__throttleOriginMethod';\r\n    var RATE = '\\0__throttleRate';\r\n    var THROTTLE_TYPE = '\\0__throttleType';\r\n    function throttle(fn, delay, debounce) {\r\n        var currCall;\r\n        var lastCall = 0;\r\n        var lastExec = 0;\r\n        var timer = null;\r\n        var diff;\r\n        var scope;\r\n        var args;\r\n        var debounceNextCall;\r\n        delay = delay || 0;\r\n        function exec() {\r\n            lastExec = (new Date()).getTime();\r\n            timer = null;\r\n            fn.apply(scope, args || []);\r\n        }\r\n        var cb = function () {\r\n            var cbArgs = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                cbArgs[_i] = arguments[_i];\r\n            }\r\n            currCall = (new Date()).getTime();\r\n            scope = this;\r\n            args = cbArgs;\r\n            var thisDelay = debounceNextCall || delay;\r\n            var thisDebounce = debounceNextCall || debounce;\r\n            debounceNextCall = null;\r\n            diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\r\n            clearTimeout(timer);\r\n            if (thisDebounce) {\r\n                timer = setTimeout(exec, thisDelay);\r\n            }\r\n            else {\r\n                if (diff >= 0) {\r\n                    exec();\r\n                }\r\n                else {\r\n                    timer = setTimeout(exec, -diff);\r\n                }\r\n            }\r\n            lastCall = currCall;\r\n        };\r\n        cb.clear = function () {\r\n            if (timer) {\r\n                clearTimeout(timer);\r\n                timer = null;\r\n            }\r\n        };\r\n        cb.debounceNextCall = function (debounceDelay) {\r\n            debounceNextCall = debounceDelay;\r\n        };\r\n        return cb;\r\n    }\r\n    function createOrUpdate(obj, fnAttr, rate, throttleType) {\r\n        var fn = obj[fnAttr];\r\n        if (!fn) {\r\n            return;\r\n        }\r\n        var originFn = fn[ORIGIN_METHOD] || fn;\r\n        var lastThrottleType = fn[THROTTLE_TYPE];\r\n        var lastRate = fn[RATE];\r\n        if (lastRate !== rate || lastThrottleType !== throttleType) {\r\n            if (rate == null || !throttleType) {\r\n                return (obj[fnAttr] = originFn);\r\n            }\r\n            fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\r\n            fn[ORIGIN_METHOD] = originFn;\r\n            fn[THROTTLE_TYPE] = throttleType;\r\n            fn[RATE] = rate;\r\n        }\r\n        return fn;\r\n    }\r\n    function clear(obj, fnAttr) {\r\n        var fn = obj[fnAttr];\r\n        if (fn && fn[ORIGIN_METHOD]) {\r\n            obj[fnAttr] = fn[ORIGIN_METHOD];\r\n        }\r\n    }\n\n    var inner$3 = makeInner();\r\n    var defaultStyleMappers = {\r\n        itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\r\n        lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\r\n    };\r\n    var defaultColorKey = {\r\n        lineStyle: 'stroke',\r\n        itemStyle: 'fill'\r\n    };\r\n    function getStyleMapper(seriesModel, stylePath) {\r\n        var styleMapper = seriesModel.visualStyleMapper\r\n            || defaultStyleMappers[stylePath];\r\n        if (!styleMapper) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return defaultStyleMappers.itemStyle;\r\n        }\r\n        return styleMapper;\r\n    }\r\n    function getDefaultColorKey(seriesModel, stylePath) {\r\n        var colorKey = seriesModel.visualDrawType\r\n            || defaultColorKey[stylePath];\r\n        if (!colorKey) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return 'fill';\r\n        }\r\n        return colorKey;\r\n    }\r\n    var seriesStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var styleModel = seriesModel.getModel(stylePath);\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var globalStyle = getStyle(styleModel);\r\n            var decalOption = styleModel.getShallow('decal');\r\n            if (decalOption) {\r\n                data.setVisual('decal', decalOption);\r\n                decalOption.dirty = true;\r\n            }\r\n            var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n            var color = globalStyle[colorKey];\r\n            var colorCallback = isFunction(color) ? color : null;\r\n            if (!globalStyle[colorKey] || colorCallback) {\r\n                globalStyle[colorKey] = seriesModel.getColorFromPalette(seriesModel.name, null, ecModel.getSeriesCount());\r\n                data.setVisual('colorFromPalette', true);\r\n            }\r\n            data.setVisual('style', globalStyle);\r\n            data.setVisual('drawType', colorKey);\r\n            if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {\r\n                data.setVisual('colorFromPalette', false);\r\n                return {\r\n                    dataEach: function (data, idx) {\r\n                        var dataParams = seriesModel.getDataParams(idx);\r\n                        var itemStyle = extend({}, globalStyle);\r\n                        itemStyle[colorKey] = colorCallback(dataParams);\r\n                        data.setItemVisual(idx, 'style', itemStyle);\r\n                    }\r\n                };\r\n            }\r\n        }\r\n    };\r\n    var sharedModel = new Model();\r\n    var dataStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var colorKey = data.getVisual('drawType');\r\n            return {\r\n                dataEach: data.hasItemOption ? function (data, idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (rawItem && rawItem[stylePath]) {\r\n                        sharedModel.option = rawItem[stylePath];\r\n                        var style = getStyle(sharedModel);\r\n                        var existsStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        extend(existsStyle, style);\r\n                        if (sharedModel.option.decal) {\r\n                            data.setItemVisual(idx, 'decal', sharedModel.option.decal);\r\n                            sharedModel.option.decal.dirty = true;\r\n                        }\r\n                        if (colorKey in style) {\r\n                            data.setItemVisual(idx, 'colorFromPalette', false);\r\n                        }\r\n                    }\r\n                } : null\r\n            };\r\n        }\r\n    };\r\n    var dataColorPaletteTask = {\r\n        performRawSeries: true,\r\n        overallReset: function (ecModel) {\r\n            var paletteScopeGroupByType = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData) {\r\n                    return;\r\n                }\r\n                var colorScope = paletteScopeGroupByType.get(seriesModel.type);\r\n                if (!colorScope) {\r\n                    colorScope = {};\r\n                    paletteScopeGroupByType.set(seriesModel.type, colorScope);\r\n                }\r\n                inner$3(seriesModel).scope = colorScope;\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                    return;\r\n                }\r\n                var dataAll = seriesModel.getRawData();\r\n                var idxMap = {};\r\n                var data = seriesModel.getData();\r\n                var colorScope = inner$3(seriesModel).scope;\r\n                var stylePath = seriesModel.visualStyleAccessPath\r\n                    || 'itemStyle';\r\n                var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n                data.each(function (idx) {\r\n                    var rawIdx = data.getRawIndex(idx);\r\n                    idxMap[rawIdx] = idx;\r\n                });\r\n                dataAll.each(function (rawIdx) {\r\n                    var idx = idxMap[rawIdx];\r\n                    var fromPalette = data.getItemVisual(idx, 'colorFromPalette');\r\n                    if (fromPalette) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        var name_1 = dataAll.getName(rawIdx) || (rawIdx + '');\r\n                        var dataCount = dataAll.count();\r\n                        itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    };\n\n    var PI$5 = Math.PI;\r\n    function defaultLoading(api, opts) {\r\n        opts = opts || {};\r\n        defaults(opts, {\r\n            text: 'loading',\r\n            textColor: '#000',\r\n            fontSize: '12px',\r\n            maskColor: 'rgba(255, 255, 255, 0.8)',\r\n            showSpinner: true,\r\n            color: '#5470c6',\r\n            spinnerRadius: 10,\r\n            lineWidth: 5,\r\n            zlevel: 0\r\n        });\r\n        var group = new Group();\r\n        var mask = new Rect({\r\n            style: {\r\n                fill: opts.maskColor\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10000\r\n        });\r\n        group.add(mask);\r\n        var font = opts.fontSize + ' sans-serif';\r\n        var labelRect = new Rect({\r\n            style: {\r\n                fill: 'none'\r\n            },\r\n            textContent: new ZRText({\r\n                style: {\r\n                    text: opts.text,\r\n                    fill: opts.textColor,\r\n                    font: font\r\n                }\r\n            }),\r\n            textConfig: {\r\n                position: 'right',\r\n                distance: 10\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10001\r\n        });\r\n        group.add(labelRect);\r\n        var arc;\r\n        if (opts.showSpinner) {\r\n            arc = new Arc({\r\n                shape: {\r\n                    startAngle: -PI$5 / 2,\r\n                    endAngle: -PI$5 / 2 + 0.1,\r\n                    r: opts.spinnerRadius\r\n                },\r\n                style: {\r\n                    stroke: opts.color,\r\n                    lineCap: 'round',\r\n                    lineWidth: opts.lineWidth\r\n                },\r\n                zlevel: opts.zlevel,\r\n                z: 10001\r\n            });\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                endAngle: PI$5 * 3 / 2\r\n            })\r\n                .start('circularInOut');\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                startAngle: PI$5 * 3 / 2\r\n            })\r\n                .delay(300)\r\n                .start('circularInOut');\r\n            group.add(arc);\r\n        }\r\n        group.resize = function () {\r\n            var textWidth = getWidth(opts.text, font);\r\n            var r = opts.showSpinner ? opts.spinnerRadius : 0;\r\n            var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2\r\n                - (opts.showSpinner ? 0 : textWidth / 2);\r\n            var cy = api.getHeight() / 2;\r\n            opts.showSpinner && arc.setShape({\r\n                cx: cx,\r\n                cy: cy\r\n            });\r\n            labelRect.setShape({\r\n                x: cx - r,\r\n                y: cy - r,\r\n                width: r * 2,\r\n                height: r * 2\r\n            });\r\n            mask.setShape({\r\n                x: 0,\r\n                y: 0,\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n        };\r\n        group.resize();\r\n        return group;\r\n    }\n\n    var Scheduler = (function () {\r\n        function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\r\n            this._stageTaskMap = createHashMap();\r\n            this.ecInstance = ecInstance;\r\n            this.api = api;\r\n            dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\r\n            visualHandlers = this._visualHandlers = visualHandlers.slice();\r\n            this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\r\n        }\r\n        Scheduler.prototype.restoreData = function (ecModel, payload) {\r\n            ecModel.restoreData(payload);\r\n            this._stageTaskMap.each(function (taskRecord) {\r\n                var overallTask = taskRecord.overallTask;\r\n                overallTask && overallTask.dirty();\r\n            });\r\n        };\r\n        Scheduler.prototype.getPerformArgs = function (task, isBlock) {\r\n            if (!task.__pipeline) {\r\n                return;\r\n            }\r\n            var pipeline = this._pipelineMap.get(task.__pipeline.id);\r\n            var pCtx = pipeline.context;\r\n            var incremental = !isBlock\r\n                && pipeline.progressiveEnabled\r\n                && (!pCtx || pCtx.progressiveRender)\r\n                && task.__idxInPipeline > pipeline.blockIndex;\r\n            var step = incremental ? pipeline.step : null;\r\n            var modDataCount = pCtx && pCtx.modDataCount;\r\n            var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\r\n            return { step: step, modBy: modBy, modDataCount: modDataCount };\r\n        };\r\n        Scheduler.prototype.getPipeline = function (pipelineId) {\r\n            return this._pipelineMap.get(pipelineId);\r\n        };\r\n        Scheduler.prototype.updateStreamModes = function (seriesModel, view) {\r\n            var pipeline = this._pipelineMap.get(seriesModel.uid);\r\n            var data = seriesModel.getData();\r\n            var dataLen = data.count();\r\n            var progressiveRender = pipeline.progressiveEnabled\r\n                && view.incrementalPrepareRender\r\n                && dataLen >= pipeline.threshold;\r\n            var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold');\r\n            var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\r\n            seriesModel.pipelineContext = pipeline.context = {\r\n                progressiveRender: progressiveRender,\r\n                modDataCount: modDataCount,\r\n                large: large\r\n            };\r\n        };\r\n        Scheduler.prototype.restorePipelines = function (ecModel) {\r\n            var scheduler = this;\r\n            var pipelineMap = scheduler._pipelineMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var progressive = seriesModel.getProgressive();\r\n                var pipelineId = seriesModel.uid;\r\n                pipelineMap.set(pipelineId, {\r\n                    id: pipelineId,\r\n                    head: null,\r\n                    tail: null,\r\n                    threshold: seriesModel.getProgressiveThreshold(),\r\n                    progressiveEnabled: progressive\r\n                        && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\r\n                    blockIndex: -1,\r\n                    step: Math.round(progressive || 700),\r\n                    count: 0\r\n                });\r\n                scheduler._pipe(seriesModel, seriesModel.dataTask);\r\n            });\r\n        };\r\n        Scheduler.prototype.prepareStageTasks = function () {\r\n            var stageTaskMap = this._stageTaskMap;\r\n            var ecModel = this.api.getModel();\r\n            var api = this.api;\r\n            each(this._allHandlers, function (handler) {\r\n                var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = '\"reset\" and \"overallReset\" must not be both specified.';\r\n                }\r\n                assert(!(handler.reset && handler.overallReset), errMsg);\r\n                handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);\r\n                handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);\r\n            }, this);\r\n        };\r\n        Scheduler.prototype.prepareView = function (view, model, ecModel, api) {\r\n            var renderTask = view.renderTask;\r\n            var context = renderTask.context;\r\n            context.model = model;\r\n            context.ecModel = ecModel;\r\n            context.api = api;\r\n            renderTask.__block = !view.incrementalPrepareRender;\r\n            this._pipe(model, renderTask);\r\n        };\r\n        Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) {\r\n            this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { block: true });\r\n        };\r\n        Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) {\r\n            this._performStageTasks(this._visualHandlers, ecModel, payload, opt);\r\n        };\r\n        Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) {\r\n            opt = opt || {};\r\n            var unfinished = false;\r\n            var scheduler = this;\r\n            each(stageHandlers, function (stageHandler, idx) {\r\n                if (opt.visualType && opt.visualType !== stageHandler.visualType) {\r\n                    return;\r\n                }\r\n                var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\r\n                var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n                var overallTask = stageHandlerRecord.overallTask;\r\n                if (overallTask) {\r\n                    var overallNeedDirty_1;\r\n                    var agentStubMap = overallTask.agentStubMap;\r\n                    agentStubMap.each(function (stub) {\r\n                        if (needSetDirty(opt, stub)) {\r\n                            stub.dirty();\r\n                            overallNeedDirty_1 = true;\r\n                        }\r\n                    });\r\n                    overallNeedDirty_1 && overallTask.dirty();\r\n                    scheduler.updatePayload(overallTask, payload);\r\n                    var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block);\r\n                    agentStubMap.each(function (stub) {\r\n                        stub.perform(performArgs_1);\r\n                    });\r\n                    if (overallTask.perform(performArgs_1)) {\r\n                        unfinished = true;\r\n                    }\r\n                }\r\n                else if (seriesTaskMap) {\r\n                    seriesTaskMap.each(function (task, pipelineId) {\r\n                        if (needSetDirty(opt, task)) {\r\n                            task.dirty();\r\n                        }\r\n                        var performArgs = scheduler.getPerformArgs(task, opt.block);\r\n                        performArgs.skip = !stageHandler.performRawSeries\r\n                            && ecModel.isSeriesFiltered(task.context.model);\r\n                        scheduler.updatePayload(task, payload);\r\n                        if (task.perform(performArgs)) {\r\n                            unfinished = true;\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n            function needSetDirty(opt, task) {\r\n                return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\r\n            }\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.performSeriesTasks = function (ecModel) {\r\n            var unfinished;\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                unfinished = seriesModel.dataTask.perform() || unfinished;\r\n            });\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.plan = function () {\r\n            this._pipelineMap.each(function (pipeline) {\r\n                var task = pipeline.tail;\r\n                do {\r\n                    if (task.__block) {\r\n                        pipeline.blockIndex = task.__idxInPipeline;\r\n                        break;\r\n                    }\r\n                    task = task.getUpstream();\r\n                } while (task);\r\n            });\r\n        };\r\n        Scheduler.prototype.updatePayload = function (task, payload) {\r\n            payload !== 'remain' && (task.context.payload = payload);\r\n        };\r\n        Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n            var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            if (stageHandler.createOnAllSeries) {\r\n                ecModel.eachRawSeries(create);\r\n            }\r\n            else if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, create);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(create);\r\n            }\r\n            function create(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId)\r\n                    || createTask({\r\n                        plan: seriesTaskPlan,\r\n                        reset: seriesTaskReset,\r\n                        count: seriesTaskCount\r\n                    }));\r\n                task.context = {\r\n                    model: seriesModel,\r\n                    ecModel: ecModel,\r\n                    api: api,\r\n                    useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\r\n                    plan: stageHandler.plan,\r\n                    reset: stageHandler.reset,\r\n                    scheduler: scheduler\r\n                };\r\n                scheduler._pipe(seriesModel, task);\r\n            }\r\n        };\r\n        Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask\r\n                || createTask({ reset: overallTaskReset });\r\n            overallTask.context = {\r\n                ecModel: ecModel,\r\n                api: api,\r\n                overallReset: stageHandler.overallReset,\r\n                scheduler: scheduler\r\n            };\r\n            var oldAgentStubMap = overallTask.agentStubMap;\r\n            var newAgentStubMap = overallTask.agentStubMap = createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            var overallProgress = true;\r\n            var shouldOverallTaskDirty = false;\r\n            var errMsg = '';\r\n            if (__DEV__) {\r\n                errMsg = '\"createOnAllSeries\" do not supported for \"overallReset\", '\r\n                    + 'becuase it will block all streams.';\r\n            }\r\n            assert(!stageHandler.createOnAllSeries, errMsg);\r\n            if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, createStub);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(createStub);\r\n            }\r\n            else {\r\n                overallProgress = false;\r\n                each(ecModel.getSeries(), createStub);\r\n            }\r\n            function createStub(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId)\r\n                    || (shouldOverallTaskDirty = true,\r\n                        createTask({ reset: stubReset, onDirty: stubOnDirty })));\r\n                stub.context = {\r\n                    model: seriesModel,\r\n                    overallProgress: overallProgress\r\n                };\r\n                stub.agent = overallTask;\r\n                stub.__block = overallProgress;\r\n                scheduler._pipe(seriesModel, stub);\r\n            }\r\n            if (shouldOverallTaskDirty) {\r\n                overallTask.dirty();\r\n            }\r\n        };\r\n        Scheduler.prototype._pipe = function (seriesModel, task) {\r\n            var pipelineId = seriesModel.uid;\r\n            var pipeline = this._pipelineMap.get(pipelineId);\r\n            !pipeline.head && (pipeline.head = task);\r\n            pipeline.tail && pipeline.tail.pipe(task);\r\n            pipeline.tail = task;\r\n            task.__idxInPipeline = pipeline.count++;\r\n            task.__pipeline = pipeline;\r\n        };\r\n        Scheduler.wrapStageHandler = function (stageHandler, visualType) {\r\n            if (isFunction(stageHandler)) {\r\n                stageHandler = {\r\n                    overallReset: stageHandler,\r\n                    seriesType: detectSeriseType(stageHandler)\r\n                };\r\n            }\r\n            stageHandler.uid = getUID('stageHandler');\r\n            visualType && (stageHandler.visualType = visualType);\r\n            return stageHandler;\r\n        };\r\n        return Scheduler;\r\n    }());\r\n    function overallTaskReset(context) {\r\n        context.overallReset(context.ecModel, context.api, context.payload);\r\n    }\r\n    function stubReset(context) {\r\n        return context.overallProgress && stubProgress;\r\n    }\r\n    function stubProgress() {\r\n        this.agent.dirty();\r\n        this.getDownstream().dirty();\r\n    }\r\n    function stubOnDirty() {\r\n        this.agent && this.agent.dirty();\r\n    }\r\n    function seriesTaskPlan(context) {\r\n        return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\r\n    }\r\n    function seriesTaskReset(context) {\r\n        if (context.useClearVisual) {\r\n            context.data.clearAllVisual();\r\n        }\r\n        var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\r\n        return resetDefines.length > 1\r\n            ? map(resetDefines, function (v, idx) {\r\n                return makeSeriesTaskProgress(idx);\r\n            })\r\n            : singleSeriesTaskProgress;\r\n    }\r\n    var singleSeriesTaskProgress = makeSeriesTaskProgress(0);\r\n    function makeSeriesTaskProgress(resetDefineIdx) {\r\n        return function (params, context) {\r\n            var data = context.data;\r\n            var resetDefine = context.resetDefines[resetDefineIdx];\r\n            if (resetDefine && resetDefine.dataEach) {\r\n                for (var i = params.start; i < params.end; i++) {\r\n                    resetDefine.dataEach(data, i);\r\n                }\r\n            }\r\n            else if (resetDefine && resetDefine.progress) {\r\n                resetDefine.progress(params, data);\r\n            }\r\n        };\r\n    }\r\n    function seriesTaskCount(context) {\r\n        return context.data.count();\r\n    }\r\n    function detectSeriseType(legacyFunc) {\r\n        seriesType = null;\r\n        try {\r\n            legacyFunc(ecModelMock, apiMock);\r\n        }\r\n        catch (e) {\r\n        }\r\n        return seriesType;\r\n    }\r\n    var ecModelMock = {};\r\n    var apiMock = {};\r\n    var seriesType;\r\n    mockMethods(ecModelMock, GlobalModel);\r\n    mockMethods(apiMock, ExtensionAPI);\r\n    ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\r\n        seriesType = type;\r\n    };\r\n    ecModelMock.eachComponent = function (cond) {\r\n        if (cond.mainType === 'series' && cond.subType) {\r\n            seriesType = cond.subType;\r\n        }\r\n    };\r\n    function mockMethods(target, Clz) {\r\n        for (var name_1 in Clz.prototype) {\r\n            target[name_1] = noop;\r\n        }\r\n    }\n\n    var colorAll = [\r\n        '#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f',\r\n        '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'\r\n    ];\r\n    var lightTheme = {\r\n        color: colorAll,\r\n        colorLayer: [\r\n            ['#37A2DA', '#ffd85c', '#fd7b5f'],\r\n            ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'],\r\n            ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'],\r\n            colorAll\r\n        ]\r\n    };\n\n    var contrastColor = '#B9B8CE';\r\n    var backgroundColor = '#100C2A';\r\n    var axisCommon = function () {\r\n        return {\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: contrastColor\r\n                }\r\n            },\r\n            splitLine: {\r\n                lineStyle: {\r\n                    color: '#484753'\r\n                }\r\n            },\r\n            splitArea: {\r\n                areaStyle: {\r\n                    color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\r\n                }\r\n            },\r\n            minorSplitLine: {\r\n                lineStyle: {\r\n                    color: '#20203B'\r\n                }\r\n            }\r\n        };\r\n    };\r\n    var colorPalette = [\r\n        '#4992ff',\r\n        '#7cffb2',\r\n        '#fddd60',\r\n        '#ff6e76',\r\n        '#58d9f9',\r\n        '#05c091',\r\n        '#ff8a45',\r\n        '#8d48e3',\r\n        '#dd79ff'\r\n    ];\r\n    var theme = {\r\n        darkMode: true,\r\n        color: colorPalette,\r\n        backgroundColor: backgroundColor,\r\n        axisPointer: {\r\n            lineStyle: {\r\n                color: '#817f91'\r\n            },\r\n            crossStyle: {\r\n                color: '#817f91'\r\n            },\r\n            label: {\r\n                color: '#fff'\r\n            }\r\n        },\r\n        legend: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        textStyle: {\r\n            color: contrastColor\r\n        },\r\n        title: {\r\n            textStyle: {\r\n                color: '#EEF1FA'\r\n            },\r\n            subtextStyle: {\r\n                color: '#B9B8CE'\r\n            }\r\n        },\r\n        toolbox: {\r\n            iconStyle: {\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        dataZoom: {\r\n            borderColor: '#71708A',\r\n            textStyle: {\r\n                color: contrastColor\r\n            },\r\n            brushStyle: {\r\n                color: 'rgba(135,163,206,0.3)'\r\n            },\r\n            handleStyle: {\r\n                color: '#353450',\r\n                borderColor: '#C5CBE3'\r\n            },\r\n            moveHandleStyle: {\r\n                color: '#B0B6C3',\r\n                opacity: 0.3\r\n            },\r\n            fillerColor: 'rgba(135,163,206,0.2)',\r\n            emphasis: {\r\n                handleStyle: {\r\n                    borderColor: '#91B7F2',\r\n                    color: '#4D587D'\r\n                },\r\n                moveHandleStyle: {\r\n                    color: '#636D9A',\r\n                    opacity: 0.7\r\n                }\r\n            },\r\n            dataBackground: {\r\n                lineStyle: {\r\n                    color: '#71708A',\r\n                    width: 1\r\n                },\r\n                areaStyle: {\r\n                    color: '#71708A'\r\n                }\r\n            },\r\n            selectedDataBackground: {\r\n                lineStyle: {\r\n                    color: '#87A3CE'\r\n                },\r\n                areaStyle: {\r\n                    color: '#87A3CE'\r\n                }\r\n            }\r\n        },\r\n        visualMap: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeline: {\r\n            lineStyle: {\r\n                color: contrastColor\r\n            },\r\n            label: {\r\n                color: contrastColor\r\n            },\r\n            controlStyle: {\r\n                color: contrastColor,\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        calendar: {\r\n            itemStyle: {\r\n                color: backgroundColor\r\n            },\r\n            dayLabel: {\r\n                color: contrastColor\r\n            },\r\n            monthLabel: {\r\n                color: contrastColor\r\n            },\r\n            yearLabel: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeAxis: axisCommon(),\r\n        logAxis: axisCommon(),\r\n        valueAxis: axisCommon(),\r\n        categoryAxis: axisCommon(),\r\n        line: {\r\n            symbol: 'circle'\r\n        },\r\n        graph: {\r\n            color: colorPalette\r\n        },\r\n        gauge: {\r\n            title: {\r\n                color: contrastColor\r\n            },\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: [[1, 'rgba(207,212,219,0.2)']]\r\n                }\r\n            },\r\n            axisLabel: {\r\n                color: contrastColor\r\n            },\r\n            detail: {\r\n                color: '#EEF1FA'\r\n            }\r\n        },\r\n        candlestick: {\r\n            itemStyle: {\r\n                color: '#FD1050',\r\n                color0: '#0CF49B',\r\n                borderColor: '#FD1050',\r\n                borderColor0: '#0CF49B'\r\n            }\r\n        }\r\n    };\r\n    theme.categoryAxis.splitLine.show = false;\n\n    var DatasetModel = (function (_super) {\r\n        __extends(DatasetModel, _super);\r\n        function DatasetModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetModel.prototype.init = function (option, parentModel, ecModel) {\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            this._sourceManager = new SourceManager(this);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.mergeOption = function (newOption, ecModel) {\r\n            _super.prototype.mergeOption.call(this, newOption, ecModel);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.optionUpdated = function () {\r\n            this._sourceManager.dirty();\r\n        };\r\n        DatasetModel.prototype.getSourceManager = function () {\r\n            return this._sourceManager;\r\n        };\r\n        DatasetModel.type = 'dataset';\r\n        DatasetModel.defaultOption = {\r\n            seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN\r\n        };\r\n        return DatasetModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(DatasetModel);\r\n    var DatasetView = (function (_super) {\r\n        __extends(DatasetView, _super);\r\n        function DatasetView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetView.type = 'dataset';\r\n        return DatasetView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(DatasetView);\n\n    var storage = createHashMap();\r\n    var mapDataStorage = {\r\n        registerMap: function (mapName, rawDef, rawSpecialAreas) {\r\n            var records;\r\n            if (isArray(rawDef)) {\r\n                records = rawDef;\r\n            }\r\n            else if (rawDef.svg) {\r\n                records = [{\r\n                        type: 'svg',\r\n                        source: rawDef.svg,\r\n                        specialAreas: rawDef.specialAreas\r\n                    }];\r\n            }\r\n            else {\r\n                var geoSource = rawDef.geoJson\r\n                    || rawDef.geoJSON;\r\n                if (geoSource && !rawDef.features) {\r\n                    rawSpecialAreas = rawDef.specialAreas;\r\n                    rawDef = geoSource;\r\n                }\r\n                records = [{\r\n                        type: 'geoJSON',\r\n                        source: rawDef,\r\n                        specialAreas: rawSpecialAreas\r\n                    }];\r\n            }\r\n            each(records, function (record) {\r\n                var type = record.type;\r\n                type === 'geoJson' && (type = record.type = 'geoJSON');\r\n                var parse = parsers[type];\r\n                if (__DEV__) {\r\n                    assert(parse, 'Illegal map type: ' + type);\r\n                }\r\n                parse(record);\r\n            });\r\n            return storage.set(mapName, records);\r\n        },\r\n        retrieveMap: function (mapName) {\r\n            return storage.get(mapName);\r\n        }\r\n    };\r\n    var parsers = {\r\n        geoJSON: function (record) {\r\n            var source = record.source;\r\n            record.geoJSON = !isString(source)\r\n                ? source\r\n                : (typeof JSON !== 'undefined' && JSON.parse)\r\n                    ? JSON.parse(source)\r\n                    : (new Function('return (' + source + ');'))();\r\n        },\r\n        svg: function (record) {\r\n            record.svgXML = parseXML(record.source);\r\n        }\r\n    };\n\n    var ECEventProcessor = (function () {\r\n        function ECEventProcessor() {\r\n        }\r\n        ECEventProcessor.prototype.normalizeQuery = function (query) {\r\n            var cptQuery = {};\r\n            var dataQuery = {};\r\n            var otherQuery = {};\r\n            if (isString(query)) {\r\n                var condCptType = parseClassType(query);\r\n                cptQuery.mainType = condCptType.main || null;\r\n                cptQuery.subType = condCptType.sub || null;\r\n            }\r\n            else {\r\n                var suffixes_1 = ['Index', 'Name', 'Id'];\r\n                var dataKeys_1 = { name: 1, dataIndex: 1, dataType: 1 };\r\n                each(query, function (val, key) {\r\n                    var reserved = false;\r\n                    for (var i = 0; i < suffixes_1.length; i++) {\r\n                        var propSuffix = suffixes_1[i];\r\n                        var suffixPos = key.lastIndexOf(propSuffix);\r\n                        if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\r\n                            var mainType = key.slice(0, suffixPos);\r\n                            if (mainType !== 'data') {\r\n                                cptQuery.mainType = mainType;\r\n                                cptQuery[propSuffix.toLowerCase()] = val;\r\n                                reserved = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (dataKeys_1.hasOwnProperty(key)) {\r\n                        dataQuery[key] = val;\r\n                        reserved = true;\r\n                    }\r\n                    if (!reserved) {\r\n                        otherQuery[key] = val;\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                cptQuery: cptQuery,\r\n                dataQuery: dataQuery,\r\n                otherQuery: otherQuery\r\n            };\r\n        };\r\n        ECEventProcessor.prototype.filter = function (eventType, query) {\r\n            var eventInfo = this.eventInfo;\r\n            if (!eventInfo) {\r\n                return true;\r\n            }\r\n            var targetEl = eventInfo.targetEl;\r\n            var packedEvent = eventInfo.packedEvent;\r\n            var model = eventInfo.model;\r\n            var view = eventInfo.view;\r\n            if (!model || !view) {\r\n                return true;\r\n            }\r\n            var cptQuery = query.cptQuery;\r\n            var dataQuery = query.dataQuery;\r\n            return check(cptQuery, model, 'mainType')\r\n                && check(cptQuery, model, 'subType')\r\n                && check(cptQuery, model, 'index', 'componentIndex')\r\n                && check(cptQuery, model, 'name')\r\n                && check(cptQuery, model, 'id')\r\n                && check(dataQuery, packedEvent, 'name')\r\n                && check(dataQuery, packedEvent, 'dataIndex')\r\n                && check(dataQuery, packedEvent, 'dataType')\r\n                && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\r\n            function check(query, host, prop, propOnHost) {\r\n                return query[prop] == null || host[propOnHost || prop] === query[prop];\r\n            }\r\n        };\r\n        ECEventProcessor.prototype.afterTrigger = function () {\r\n            this.eventInfo = null;\r\n        };\r\n        return ECEventProcessor;\r\n    }());\n\n    var seriesSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            if (seriesModel.legendSymbol) {\r\n                data.setVisual('legendSymbol', seriesModel.legendSymbol);\r\n            }\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            var symbolType = seriesModel.get('symbol');\r\n            var symbolSize = seriesModel.get('symbolSize');\r\n            var keepAspect = seriesModel.get('symbolKeepAspect');\r\n            var symbolRotate = seriesModel.get('symbolRotate');\r\n            var hasSymbolTypeCallback = isFunction(symbolType);\r\n            var hasSymbolSizeCallback = isFunction(symbolSize);\r\n            var hasSymbolRotateCallback = isFunction(symbolRotate);\r\n            var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\r\n            var seriesSymbol = (!hasSymbolTypeCallback && symbolType) ? symbolType : seriesModel.defaultSymbol;\r\n            var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\r\n            var seriesSymbolRotate = !hasSymbolRotateCallback ? symbolRotate : null;\r\n            data.setVisual({\r\n                legendSymbol: seriesModel.legendSymbol || seriesSymbol,\r\n                symbol: seriesSymbol,\r\n                symbolSize: seriesSymbolSize,\r\n                symbolKeepAspect: keepAspect,\r\n                symbolRotate: seriesSymbolRotate\r\n            });\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            function dataEach(data, idx) {\r\n                var rawValue = seriesModel.getRawValue(idx);\r\n                var params = seriesModel.getDataParams(idx);\r\n                hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\r\n                hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\r\n                hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\r\n            }\r\n            return { dataEach: hasCallback ? dataEach : null };\r\n        }\r\n    };\r\n    var dataSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            function dataEach(data, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var itemSymbolType = itemModel.getShallow('symbol', true);\r\n                var itemSymbolSize = itemModel.getShallow('symbolSize', true);\r\n                var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\r\n                var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true);\r\n                if (itemSymbolType != null) {\r\n                    data.setItemVisual(idx, 'symbol', itemSymbolType);\r\n                }\r\n                if (itemSymbolSize != null) {\r\n                    data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\r\n                }\r\n                if (itemSymbolRotate != null) {\r\n                    data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\r\n                }\r\n                if (itemSymbolKeepAspect != null) {\r\n                    data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\r\n                }\r\n            }\r\n            return { dataEach: data.hasItemOption ? dataEach : null };\r\n        }\r\n    };\n\n    function getItemVisualFromData(data, dataIndex, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getItemVisual(dataIndex, 'style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getItemVisual(dataIndex, 'style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getItemVisual(dataIndex, key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\r\n    function getVisualFromData(data, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getVisual('style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getVisual('style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getVisual(key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\r\n    function setItemVisualFromData(data, dataIndex, key, value) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.ensureUniqueItemVisual(dataIndex, 'style');\r\n                style[data.getVisual('drawType')] = value;\r\n                data.setItemVisual(dataIndex, 'colorFromPalette', false);\r\n                break;\r\n            case 'opacity':\r\n                data.ensureUniqueItemVisual(dataIndex, 'style').opacity = value;\r\n                break;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                data.setItemVisual(dataIndex, key, value);\r\n                break;\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\n\n    var PI2$7 = Math.PI * 2;\r\n    var CMD$4 = PathProxy.CMD;\r\n    var DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\r\n    function getCandidateAnchor(pos, distance, rect, outPt, outDir) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        switch (pos) {\r\n            case 'top':\r\n                outPt.set(rect.x + width / 2, rect.y - distance);\r\n                outDir.set(0, -1);\r\n                break;\r\n            case 'bottom':\r\n                outPt.set(rect.x + width / 2, rect.y + height + distance);\r\n                outDir.set(0, 1);\r\n                break;\r\n            case 'left':\r\n                outPt.set(rect.x - distance, rect.y + height / 2);\r\n                outDir.set(-1, 0);\r\n                break;\r\n            case 'right':\r\n                outPt.set(rect.x + width + distance, rect.y + height / 2);\r\n                outDir.set(1, 0);\r\n                break;\r\n        }\r\n    }\r\n    function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        x /= d;\r\n        y /= d;\r\n        var ox = x * r + cx;\r\n        var oy = y * r + cy;\r\n        if (Math.abs(startAngle - endAngle) % PI2$7 < 1e-4) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$7;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$7;\r\n        }\r\n        if ((angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$7 >= startAngle && angle + PI2$7 <= endAngle)) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        var x1 = r * Math.cos(startAngle) + cx;\r\n        var y1 = r * Math.sin(startAngle) + cy;\r\n        var x2 = r * Math.cos(endAngle) + cx;\r\n        var y2 = r * Math.sin(endAngle) + cy;\r\n        var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\r\n        var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\r\n        if (d1 < d2) {\r\n            out[0] = x1;\r\n            out[1] = y1;\r\n            return Math.sqrt(d1);\r\n        }\r\n        else {\r\n            out[0] = x2;\r\n            out[1] = y2;\r\n            return Math.sqrt(d2);\r\n        }\r\n    }\r\n    function projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\r\n        var dx = x - x1;\r\n        var dy = y - y1;\r\n        var dx1 = x2 - x1;\r\n        var dy1 = y2 - y1;\r\n        var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n        dx1 /= lineLen;\r\n        dy1 /= lineLen;\r\n        var projectedLen = dx * dx1 + dy * dy1;\r\n        var t = projectedLen / lineLen;\r\n        if (limitToEnds) {\r\n            t = Math.min(Math.max(t, 0), 1);\r\n        }\r\n        t *= lineLen;\r\n        var ox = out[0] = x1 + t * dx1;\r\n        var oy = out[1] = y1 + t * dy1;\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    function projectPointToRect(x1, y1, width, height, x, y, out) {\r\n        if (width < 0) {\r\n            x1 = x1 + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y1 = y1 + height;\r\n            height = -height;\r\n        }\r\n        var x2 = x1 + width;\r\n        var y2 = y1 + height;\r\n        var ox = out[0] = Math.min(Math.max(x, x1), x2);\r\n        var oy = out[1] = Math.min(Math.max(y, y1), y2);\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    var tmpPt = [];\r\n    function nearestPointOnRect(pt, rect, out) {\r\n        var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\r\n        out.set(tmpPt[0], tmpPt[1]);\r\n        return dist;\r\n    }\r\n    function nearestPointOnPath(pt, path, out) {\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        var minDist = Infinity;\r\n        var data = path.data;\r\n        var x = pt.x;\r\n        var y = pt.y;\r\n        for (var i = 0; i < data.length;) {\r\n            var cmd = data[i++];\r\n            if (i === 1) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            var d = minDist;\r\n            switch (cmd) {\r\n                case CMD$4.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$4.L:\r\n                    d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$4.C:\r\n                    d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$4.Q:\r\n                    d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$4.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (i <= 1) {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$4.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\r\n                    break;\r\n                case CMD$4.Z:\r\n                    d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n            if (d < minDist) {\r\n                minDist = d;\r\n                out.set(tmpPt[0], tmpPt[1]);\r\n            }\r\n        }\r\n        return minDist;\r\n    }\r\n    var pt0 = new Point();\r\n    var pt1 = new Point();\r\n    var pt2 = new Point();\r\n    var dir = new Point();\r\n    var dir2 = new Point();\r\n    function updateLabelLinePoints(target, labelLineModel) {\r\n        if (!target) {\r\n            return;\r\n        }\r\n        var labelLine = target.getTextGuideLine();\r\n        var label = target.getTextContent();\r\n        if (!(label && labelLine)) {\r\n            return;\r\n        }\r\n        var labelGuideConfig = target.textGuideLineConfig || {};\r\n        var points = [[0, 0], [0, 0], [0, 0]];\r\n        var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\r\n        var labelRect = label.getBoundingRect().clone();\r\n        labelRect.applyTransform(label.getComputedTransform());\r\n        var minDist = Infinity;\r\n        var anchorPoint = labelGuideConfig.anchor;\r\n        var targetTransform = target.getComputedTransform();\r\n        var targetInversedTransform = targetTransform && invert([], targetTransform);\r\n        var len = labelLineModel.get('length2') || 0;\r\n        if (anchorPoint) {\r\n            pt2.copy(anchorPoint);\r\n        }\r\n        for (var i = 0; i < searchSpace.length; i++) {\r\n            var candidate = searchSpace[i];\r\n            getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\r\n            Point.scaleAndAdd(pt1, pt0, dir, len);\r\n            pt1.transform(targetInversedTransform);\r\n            var boundingRect = target.getBoundingRect();\r\n            var dist = anchorPoint ? anchorPoint.distance(pt1)\r\n                : (target instanceof Path\r\n                    ? nearestPointOnPath(pt1, target.path, pt2)\r\n                    : nearestPointOnRect(pt1, boundingRect, pt2));\r\n            if (dist < minDist) {\r\n                minDist = dist;\r\n                pt1.transform(targetTransform);\r\n                pt2.transform(targetTransform);\r\n                pt2.toArray(points[0]);\r\n                pt1.toArray(points[1]);\r\n                pt0.toArray(points[2]);\r\n            }\r\n        }\r\n        limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\r\n        labelLine.setShape({ points: points });\r\n    }\r\n    var tmpArr$1 = [];\r\n    var tmpProjPoint = new Point();\r\n    function limitTurnAngle(linePoints, minTurnAngle) {\r\n        if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\r\n            return;\r\n        }\r\n        minTurnAngle = minTurnAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt0, pt1);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(dir2);\r\n        var minTurnAngleCos = Math.cos(minTurnAngle);\r\n        if (minTurnAngleCos < angleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr$1, false);\r\n            tmpProjPoint.fromArray(tmpArr$1);\r\n            tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\r\n            var t = pt2.x !== pt1.x\r\n                ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n            if (isNaN(t)) {\r\n                return;\r\n            }\r\n            if (t < 0) {\r\n                Point.copy(tmpProjPoint, pt1);\r\n            }\r\n            else if (t > 1) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\r\n        if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\r\n            return;\r\n        }\r\n        maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt1, pt0);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(surfaceNormal);\r\n        var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\r\n        if (angleCos < maxSurfaceAngleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr$1, false);\r\n            tmpProjPoint.fromArray(tmpArr$1);\r\n            var HALF_PI = Math.PI / 2;\r\n            var angle2 = Math.acos(dir2.dot(surfaceNormal));\r\n            var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\r\n            if (newAngle >= HALF_PI) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            else {\r\n                tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\r\n                var t = pt2.x !== pt1.x\r\n                    ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                    : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n                if (isNaN(t)) {\r\n                    return;\r\n                }\r\n                if (t < 0) {\r\n                    Point.copy(tmpProjPoint, pt1);\r\n                }\r\n                else if (t > 1) {\r\n                    Point.copy(tmpProjPoint, pt2);\r\n                }\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function setLabelLineState(labelLine, ignore, stateName, stateModel) {\r\n        var isNormal = stateName === 'normal';\r\n        var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\r\n        stateObj.ignore = ignore;\r\n        var smooth = stateModel.get('smooth');\r\n        if (smooth && smooth === true) {\r\n            smooth = 0.3;\r\n        }\r\n        stateObj.shape = stateObj.shape || {};\r\n        if (smooth > 0) {\r\n            stateObj.shape.smooth = smooth;\r\n        }\r\n        var styleObj = stateModel.getModel('lineStyle').getLineStyle();\r\n        isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\r\n    }\r\n    function buildLabelLinePath(path, shape) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (!points) {\r\n            return;\r\n        }\r\n        path.moveTo(points[0][0], points[0][1]);\r\n        if (smooth > 0 && points.length >= 3) {\r\n            var len1 = dist(points[0], points[1]);\r\n            var len2 = dist(points[1], points[2]);\r\n            if (!len1 || !len2) {\r\n                path.lineTo(points[1][0], points[1][1]);\r\n                path.lineTo(points[2][0], points[2][1]);\r\n                return;\r\n            }\r\n            var moveLen = Math.min(len1, len2) * smooth;\r\n            var midPoint0 = lerp([], points[1], points[0], moveLen / len1);\r\n            var midPoint2 = lerp([], points[1], points[2], moveLen / len2);\r\n            var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);\r\n            path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\r\n            path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\r\n        }\r\n        else {\r\n            for (var i = 1; i < points.length; i++) {\r\n                path.lineTo(points[i][0], points[i][1]);\r\n            }\r\n        }\r\n    }\r\n    function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\r\n        var labelLine = targetEl.getTextGuideLine();\r\n        var label = targetEl.getTextContent();\r\n        if (!label) {\r\n            if (labelLine) {\r\n                targetEl.removeTextGuideLine();\r\n            }\r\n            return;\r\n        }\r\n        var normalModel = statesModels.normal;\r\n        var showNormal = normalModel.get('show');\r\n        var labelIgnoreNormal = label.ignore;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateName = DISPLAY_STATES[i];\r\n            var stateModel = statesModels[stateName];\r\n            var isNormal = stateName === 'normal';\r\n            if (stateModel) {\r\n                var stateShow = stateModel.get('show');\r\n                var isLabelIgnored = isNormal\r\n                    ? labelIgnoreNormal\r\n                    : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\r\n                if (isLabelIgnored\r\n                    || !retrieve2(stateShow, showNormal)) {\r\n                    var stateObj = isNormal ? labelLine : (labelLine && labelLine.states.normal);\r\n                    if (stateObj) {\r\n                        stateObj.ignore = true;\r\n                    }\r\n                    continue;\r\n                }\r\n                if (!labelLine) {\r\n                    labelLine = new Polyline();\r\n                    targetEl.setTextGuideLine(labelLine);\r\n                    if (!isNormal && (labelIgnoreNormal || !showNormal)) {\r\n                        setLabelLineState(labelLine, true, 'normal', statesModels.normal);\r\n                    }\r\n                    if (targetEl.stateProxy) {\r\n                        labelLine.stateProxy = targetEl.stateProxy;\r\n                    }\r\n                }\r\n                setLabelLineState(labelLine, false, stateName, stateModel);\r\n            }\r\n        }\r\n        if (labelLine) {\r\n            defaults(labelLine.style, defaultStyle);\r\n            labelLine.style.fill = null;\r\n            var showAbove = normalModel.get('showAbove');\r\n            var labelLineConfig = (targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {});\r\n            labelLineConfig.showAbove = showAbove || false;\r\n            labelLine.buildPath = buildLabelLinePath;\r\n        }\r\n    }\r\n    function getLabelLineStatesModels(itemModel, labelLineName) {\r\n        labelLineName = (labelLineName || 'labelLine');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelLineName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\r\n        }\r\n        return statesModels;\r\n    }\n\n    function prepareLayoutList(input) {\r\n        var list = [];\r\n        for (var i = 0; i < input.length; i++) {\r\n            var rawItem = input[i];\r\n            if (rawItem.defaultAttr.ignore) {\r\n                continue;\r\n            }\r\n            var label = rawItem.label;\r\n            var transform = label.getComputedTransform();\r\n            var localRect = label.getBoundingRect();\r\n            var isAxisAligned = !transform || (transform[1] < 1e-5 && transform[2] < 1e-5);\r\n            var minMargin = label.style.margin || 0;\r\n            var globalRect = localRect.clone();\r\n            globalRect.applyTransform(transform);\r\n            globalRect.x -= minMargin / 2;\r\n            globalRect.y -= minMargin / 2;\r\n            globalRect.width += minMargin;\r\n            globalRect.height += minMargin;\r\n            var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\r\n            list.push({\r\n                label: label,\r\n                labelLine: rawItem.labelLine,\r\n                rect: globalRect,\r\n                localRect: localRect,\r\n                obb: obb,\r\n                priority: rawItem.priority,\r\n                defaultAttr: rawItem.defaultAttr,\r\n                layoutOption: rawItem.computedLayoutOption,\r\n                axisAligned: isAxisAligned,\r\n                transform: transform\r\n            });\r\n        }\r\n        return list;\r\n    }\r\n    function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\r\n        var len = list.length;\r\n        if (len < 2) {\r\n            return;\r\n        }\r\n        list.sort(function (a, b) {\r\n            return a.rect[xyDim] - b.rect[xyDim];\r\n        });\r\n        var lastPos = 0;\r\n        var delta;\r\n        var adjusted = false;\r\n        var totalShifts = 0;\r\n        for (var i = 0; i < len; i++) {\r\n            var item = list[i];\r\n            var rect = item.rect;\r\n            delta = rect[xyDim] - lastPos;\r\n            if (delta < 0) {\r\n                rect[xyDim] -= delta;\r\n                item.label[xyDim] -= delta;\r\n                adjusted = true;\r\n            }\r\n            var shift = Math.max(-delta, 0);\r\n            totalShifts += shift;\r\n            lastPos = rect[xyDim] + rect[sizeDim];\r\n        }\r\n        if (totalShifts > 0 && balanceShift) {\r\n            shiftList(-totalShifts / len, 0, len);\r\n        }\r\n        var first = list[0];\r\n        var last = list[len - 1];\r\n        var minGap;\r\n        var maxGap;\r\n        updateMinMaxGap();\r\n        minGap < 0 && squeezeGaps(-minGap, 0.8);\r\n        maxGap < 0 && squeezeGaps(maxGap, 0.8);\r\n        updateMinMaxGap();\r\n        takeBoundsGap(minGap, maxGap, 1);\r\n        takeBoundsGap(maxGap, minGap, -1);\r\n        updateMinMaxGap();\r\n        if (minGap < 0) {\r\n            squeezeWhenBailout(-minGap);\r\n        }\r\n        if (maxGap < 0) {\r\n            squeezeWhenBailout(maxGap);\r\n        }\r\n        function updateMinMaxGap() {\r\n            minGap = first.rect[xyDim] - minBound;\r\n            maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\r\n        }\r\n        function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\r\n            if (gapThisBound < 0) {\r\n                var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\r\n                if (moveFromMaxGap > 0) {\r\n                    shiftList(moveFromMaxGap * moveDir, 0, len);\r\n                    var remained = moveFromMaxGap + gapThisBound;\r\n                    if (remained < 0) {\r\n                        squeezeGaps(-remained * moveDir, 1);\r\n                    }\r\n                }\r\n                else {\r\n                    squeezeGaps(-gapThisBound * moveDir, 1);\r\n                }\r\n            }\r\n        }\r\n        function shiftList(delta, start, end) {\r\n            if (delta !== 0) {\r\n                adjusted = true;\r\n            }\r\n            for (var i = start; i < end; i++) {\r\n                var item = list[i];\r\n                var rect = item.rect;\r\n                rect[xyDim] += delta;\r\n                item.label[xyDim] += delta;\r\n            }\r\n        }\r\n        function squeezeGaps(delta, maxSqeezePercent) {\r\n            var gaps = [];\r\n            var totalGaps = 0;\r\n            for (var i = 1; i < len; i++) {\r\n                var prevItemRect = list[i - 1].rect;\r\n                var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\r\n                gaps.push(gap);\r\n                totalGaps += gap;\r\n            }\r\n            if (!totalGaps) {\r\n                return;\r\n            }\r\n            var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\r\n            if (delta > 0) {\r\n                for (var i = 0; i < len - 1; i++) {\r\n                    var movement = gaps[i] * squeezePercent;\r\n                    shiftList(movement, 0, i + 1);\r\n                }\r\n            }\r\n            else {\r\n                for (var i = len - 1; i > 0; i--) {\r\n                    var movement = gaps[i - 1] * squeezePercent;\r\n                    shiftList(-movement, i, len);\r\n                }\r\n            }\r\n        }\r\n        function squeezeWhenBailout(delta) {\r\n            var dir = delta < 0 ? -1 : 1;\r\n            delta = Math.abs(delta);\r\n            var moveForEachLabel = Math.ceil(delta / (len - 1));\r\n            for (var i = 0; i < len - 1; i++) {\r\n                if (dir > 0) {\r\n                    shiftList(moveForEachLabel, 0, i + 1);\r\n                }\r\n                else {\r\n                    shiftList(-moveForEachLabel, len - i - 1, len);\r\n                }\r\n                delta -= moveForEachLabel;\r\n                if (delta <= 0) {\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        return adjusted;\r\n    }\r\n    function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {\r\n        return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\r\n    }\r\n    function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {\r\n        return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\r\n    }\r\n    function hideOverlap(labelList) {\r\n        var displayedLabels = [];\r\n        labelList.sort(function (a, b) {\r\n            return b.priority - a.priority;\r\n        });\r\n        var globalRect = new BoundingRect(0, 0, 0, 0);\r\n        function hideEl(el) {\r\n            if (!el.ignore) {\r\n                var emphasisState = el.ensureState('emphasis');\r\n                if (emphasisState.ignore == null) {\r\n                    emphasisState.ignore = false;\r\n                }\r\n            }\r\n            el.ignore = true;\r\n        }\r\n        for (var i = 0; i < labelList.length; i++) {\r\n            var labelItem = labelList[i];\r\n            var isAxisAligned = labelItem.axisAligned;\r\n            var localRect = labelItem.localRect;\r\n            var transform = labelItem.transform;\r\n            var label = labelItem.label;\r\n            var labelLine = labelItem.labelLine;\r\n            globalRect.copy(labelItem.rect);\r\n            globalRect.width -= 0.1;\r\n            globalRect.height -= 0.1;\r\n            globalRect.x += 0.05;\r\n            globalRect.y += 0.05;\r\n            var obb = labelItem.obb;\r\n            var overlapped = false;\r\n            for (var j = 0; j < displayedLabels.length; j++) {\r\n                var existsTextCfg = displayedLabels[j];\r\n                if (!globalRect.intersect(existsTextCfg.rect)) {\r\n                    continue;\r\n                }\r\n                if (isAxisAligned && existsTextCfg.axisAligned) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n                if (!existsTextCfg.obb) {\r\n                    existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\r\n                }\r\n                if (!obb) {\r\n                    obb = new OrientedBoundingRect(localRect, transform);\r\n                }\r\n                if (obb.intersect(existsTextCfg.obb)) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n            }\r\n            if (overlapped) {\r\n                hideEl(label);\r\n                labelLine && hideEl(labelLine);\r\n            }\r\n            else {\r\n                label.attr('ignore', labelItem.defaultAttr.ignore);\r\n                labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\r\n                displayedLabels.push(labelItem);\r\n            }\r\n        }\r\n    }\n\n    function cloneArr(points) {\r\n        if (points) {\r\n            var newPoints = [];\r\n            for (var i = 0; i < points.length; i++) {\r\n                newPoints.push(points[i].slice());\r\n            }\r\n            return newPoints;\r\n        }\r\n    }\r\n    function prepareLayoutCallbackParams(labelItem, hostEl) {\r\n        var label = labelItem.label;\r\n        var labelLine = hostEl && hostEl.getTextGuideLine();\r\n        return {\r\n            dataIndex: labelItem.dataIndex,\r\n            dataType: labelItem.dataType,\r\n            seriesIndex: labelItem.seriesModel.seriesIndex,\r\n            text: labelItem.label.style.text,\r\n            rect: labelItem.hostRect,\r\n            labelRect: labelItem.rect,\r\n            align: label.style.align,\r\n            verticalAlign: label.style.verticalAlign,\r\n            labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\r\n        };\r\n    }\r\n    var LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\r\n    var dummyTransformable = new Transformable();\r\n    var labelLayoutInnerStore = makeInner();\r\n    var labelLineAnimationStore = makeInner();\r\n    function extendWithKeys(target, source, keys) {\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var key = keys[i];\r\n            if (source[key] != null) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n    }\r\n    var LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\r\n    var LabelManager = (function () {\r\n        function LabelManager() {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        }\r\n        LabelManager.prototype.clearLabels = function () {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        };\r\n        LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\r\n            var labelStyle = label.style;\r\n            var hostEl = label.__hostTarget;\r\n            var textConfig = hostEl.textConfig || {};\r\n            var labelTransform = label.getComputedTransform();\r\n            var labelRect = label.getBoundingRect().plain();\r\n            BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\r\n            if (labelTransform) {\r\n                dummyTransformable.setLocalTransform(labelTransform);\r\n            }\r\n            else {\r\n                dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation =\r\n                    dummyTransformable.originX = dummyTransformable.originY = 0;\r\n                dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\r\n            }\r\n            var host = label.__hostTarget;\r\n            var hostRect;\r\n            if (host) {\r\n                hostRect = host.getBoundingRect().plain();\r\n                var transform = host.getComputedTransform();\r\n                BoundingRect.applyTransform(hostRect, hostRect, transform);\r\n            }\r\n            var labelGuide = hostRect && host.getTextGuideLine();\r\n            this._labelList.push({\r\n                label: label,\r\n                labelLine: labelGuide,\r\n                seriesModel: seriesModel,\r\n                dataIndex: dataIndex,\r\n                dataType: dataType,\r\n                layoutOption: layoutOption,\r\n                computedLayoutOption: null,\r\n                rect: labelRect,\r\n                hostRect: hostRect,\r\n                priority: hostRect ? hostRect.width * hostRect.height : 0,\r\n                defaultAttr: {\r\n                    ignore: label.ignore,\r\n                    labelGuideIgnore: labelGuide && labelGuide.ignore,\r\n                    x: dummyTransformable.x,\r\n                    y: dummyTransformable.y,\r\n                    rotation: dummyTransformable.rotation,\r\n                    style: {\r\n                        x: labelStyle.x,\r\n                        y: labelStyle.y,\r\n                        align: labelStyle.align,\r\n                        verticalAlign: labelStyle.verticalAlign,\r\n                        width: labelStyle.width,\r\n                        height: labelStyle.height,\r\n                        fontSize: labelStyle.fontSize\r\n                    },\r\n                    cursor: label.cursor,\r\n                    attachedPos: textConfig.position,\r\n                    attachedRot: textConfig.rotation\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.addLabelsOfSeries = function (chartView) {\r\n            var _this = this;\r\n            this._chartViewList.push(chartView);\r\n            var seriesModel = chartView.__model;\r\n            var layoutOption = seriesModel.get('labelLayout');\r\n            if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\r\n                return;\r\n            }\r\n            chartView.group.traverse(function (child) {\r\n                if (child.ignore) {\r\n                    return true;\r\n                }\r\n                var textEl = child.getTextContent();\r\n                var ecData = getECData(child);\r\n                if (textEl && !textEl.disableLabelLayout) {\r\n                    _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.updateLayoutConfig = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            function createDragHandler(el, labelLineModel) {\r\n                return function () {\r\n                    updateLabelLinePoints(el, labelLineModel);\r\n                };\r\n            }\r\n            for (var i = 0; i < this._labelList.length; i++) {\r\n                var labelItem = this._labelList[i];\r\n                var label = labelItem.label;\r\n                var hostEl = label.__hostTarget;\r\n                var defaultLabelAttr = labelItem.defaultAttr;\r\n                var layoutOption = void 0;\r\n                if (typeof labelItem.layoutOption === 'function') {\r\n                    layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\r\n                }\r\n                else {\r\n                    layoutOption = labelItem.layoutOption;\r\n                }\r\n                layoutOption = layoutOption || {};\r\n                labelItem.computedLayoutOption = layoutOption;\r\n                var degreeToRadian = Math.PI / 180;\r\n                if (hostEl) {\r\n                    hostEl.setTextConfig({\r\n                        local: false,\r\n                        position: (layoutOption.x != null || layoutOption.y != null)\r\n                            ? null : defaultLabelAttr.attachedPos,\r\n                        rotation: layoutOption.rotate != null\r\n                            ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\r\n                        offset: [layoutOption.dx || 0, layoutOption.dy || 0]\r\n                    });\r\n                }\r\n                var needsUpdateLabelLine = false;\r\n                if (layoutOption.x != null) {\r\n                    label.x = parsePercent$2(layoutOption.x, width);\r\n                    label.setStyle('x', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.x = defaultLabelAttr.x;\r\n                    label.setStyle('x', defaultLabelAttr.style.x);\r\n                }\r\n                if (layoutOption.y != null) {\r\n                    label.y = parsePercent$2(layoutOption.y, height);\r\n                    label.setStyle('y', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.y = defaultLabelAttr.y;\r\n                    label.setStyle('y', defaultLabelAttr.style.y);\r\n                }\r\n                if (layoutOption.labelLinePoints) {\r\n                    var guideLine = hostEl.getTextGuideLine();\r\n                    if (guideLine) {\r\n                        guideLine.setShape({ points: layoutOption.labelLinePoints });\r\n                        needsUpdateLabelLine = false;\r\n                    }\r\n                }\r\n                var labelLayoutStore = labelLayoutInnerStore(label);\r\n                labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\r\n                label.rotation = layoutOption.rotate != null\r\n                    ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\r\n                for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\r\n                    var key = LABEL_OPTION_TO_STYLE_KEYS[k];\r\n                    label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\r\n                }\r\n                if (layoutOption.draggable) {\r\n                    label.draggable = true;\r\n                    label.cursor = 'move';\r\n                    if (hostEl) {\r\n                        var hostModel = labelItem.seriesModel;\r\n                        if (labelItem.dataIndex != null) {\r\n                            var data = labelItem.seriesModel.getData(labelItem.dataType);\r\n                            hostModel = data.getItemModel(labelItem.dataIndex);\r\n                        }\r\n                        label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\r\n                    }\r\n                }\r\n                else {\r\n                    label.off('drag');\r\n                    label.cursor = defaultLabelAttr.cursor;\r\n                }\r\n            }\r\n        };\r\n        LabelManager.prototype.layout = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            var labelList = prepareLayoutList(this._labelList);\r\n            var labelsNeedsAdjustOnX = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftX';\r\n            });\r\n            var labelsNeedsAdjustOnY = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftY';\r\n            });\r\n            shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\r\n            shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\r\n            var labelsNeedsHideOverlap = filter(labelList, function (item) {\r\n                return item.layoutOption.hideOverlap;\r\n            });\r\n            hideOverlap(labelsNeedsHideOverlap);\r\n        };\r\n        LabelManager.prototype.processLabelsOverall = function () {\r\n            var _this = this;\r\n            each(this._chartViewList, function (chartView) {\r\n                var seriesModel = chartView.__model;\r\n                var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\r\n                var animationEnabled = seriesModel.isAnimationEnabled();\r\n                chartView.group.traverse(function (child) {\r\n                    if (child.ignore) {\r\n                        return true;\r\n                    }\r\n                    var needsUpdateLabelLine = !ignoreLabelLineUpdate;\r\n                    var label = child.getTextContent();\r\n                    if (!needsUpdateLabelLine && label) {\r\n                        needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\r\n                    }\r\n                    if (needsUpdateLabelLine) {\r\n                        _this._updateLabelLine(child, seriesModel);\r\n                    }\r\n                    if (animationEnabled) {\r\n                        _this._animateLabels(child, seriesModel);\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var ecData = getECData(el);\r\n            var dataIndex = ecData.dataIndex;\r\n            if (textEl && dataIndex != null) {\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var defaultStyle = {};\r\n                var visualStyle = data.getItemVisual(dataIndex, 'style');\r\n                var visualType = data.getVisual('drawType');\r\n                defaultStyle.stroke = visualStyle[visualType];\r\n                var labelLineModel = itemModel.getModel('labelLine');\r\n                setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\r\n                updateLabelLinePoints(el, labelLineModel);\r\n            }\r\n        };\r\n        LabelManager.prototype._animateLabels = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var guideLine = el.getTextGuideLine();\r\n            if (textEl\r\n                && !textEl.ignore\r\n                && !textEl.invisible\r\n                && !el.disableLabelAnimation\r\n                && !isElementRemoved(el)) {\r\n                var layoutStore = labelLayoutInnerStore(textEl);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var ecData = getECData(el);\r\n                var dataIndex = ecData.dataIndex;\r\n                var newProps = {\r\n                    x: textEl.x,\r\n                    y: textEl.y,\r\n                    rotation: textEl.rotation\r\n                };\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                if (!oldLayout) {\r\n                    textEl.attr(newProps);\r\n                    if (!labelInner(textEl).valueAnimation) {\r\n                        var oldOpacity = retrieve2(textEl.style.opacity, 1);\r\n                        textEl.style.opacity = 0;\r\n                        initProps(textEl, {\r\n                            style: { opacity: oldOpacity }\r\n                        }, seriesModel, dataIndex);\r\n                    }\r\n                }\r\n                else {\r\n                    textEl.attr(oldLayout);\r\n                    var prevStates = el.prevStates;\r\n                    if (prevStates) {\r\n                        if (indexOf(prevStates, 'select') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutSelect);\r\n                        }\r\n                        if (indexOf(prevStates, 'emphasis') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutEmphasis);\r\n                        }\r\n                    }\r\n                    updateProps(textEl, newProps, seriesModel, dataIndex);\r\n                }\r\n                layoutStore.oldLayout = newProps;\r\n                if (textEl.states.select) {\r\n                    var layoutSelect = layoutStore.oldLayoutSelect = {};\r\n                    extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\r\n                }\r\n                if (textEl.states.emphasis) {\r\n                    var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\r\n                    extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\r\n                }\r\n                animateLabelValue(textEl, dataIndex, data, seriesModel);\r\n            }\r\n            if (guideLine && !guideLine.ignore && !guideLine.invisible) {\r\n                var layoutStore = labelLineAnimationStore(guideLine);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var newLayout = { points: guideLine.shape.points };\r\n                if (!oldLayout) {\r\n                    guideLine.setShape(newLayout);\r\n                    guideLine.style.strokePercent = 0;\r\n                    initProps(guideLine, {\r\n                        style: { strokePercent: 1 }\r\n                    }, seriesModel);\r\n                }\r\n                else {\r\n                    guideLine.attr({ shape: oldLayout });\r\n                    updateProps(guideLine, {\r\n                        shape: newLayout\r\n                    }, seriesModel);\r\n                }\r\n                layoutStore.oldLayout = newLayout;\r\n            }\r\n        };\r\n        return LabelManager;\r\n    }());\n\n    function createLegacyDataSelectAction(seriesType, ecRegisterAction) {\r\n        function getSeriesIndices(ecModel, payload) {\r\n            var seriesIndices = [];\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: seriesType, query: payload\r\n            }, function (seriesModel) {\r\n                seriesIndices.push(seriesModel.seriesIndex);\r\n            });\r\n            return seriesIndices;\r\n        }\r\n        each([\r\n            [seriesType + 'ToggleSelect', 'toggleSelect'],\r\n            [seriesType + 'Select', 'select'],\r\n            [seriesType + 'UnSelect', 'unselect']\r\n        ], function (eventsMap) {\r\n            ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {\r\n                payload = extend({}, payload);\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(payload.type, eventsMap[1]);\r\n                }\r\n                api.dispatchAction(extend(payload, {\r\n                    type: eventsMap[1],\r\n                    seriesIndex: getSeriesIndices(ecModel, payload)\r\n                }));\r\n            });\r\n        });\r\n    }\r\n    function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {\r\n        var legacyEventName = type + eventPostfix;\r\n        if (!ecIns.isSilent(legacyEventName)) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"event \" + legacyEventName + \" is deprecated.\");\r\n            }\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: 'pie'\r\n            }, function (seriesModel) {\r\n                var seriesIndex = seriesModel.seriesIndex;\r\n                var selected = payload.selected;\r\n                for (var i = 0; i < selected.length; i++) {\r\n                    if (selected[i].seriesIndex === seriesIndex) {\r\n                        var data = seriesModel.getData();\r\n                        var dataIndex = queryDataIndex(data, payload.fromActionPayload);\r\n                        ecIns.trigger(legacyEventName, {\r\n                            type: legacyEventName,\r\n                            seriesId: seriesModel.id,\r\n                            name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),\r\n                            selected: extend({}, seriesModel.option.selectedMap)\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function handleLegacySelectEvents(messageCenter, ecIns, ecModel) {\r\n        messageCenter.on('selectchanged', function (params) {\r\n            if (params.isFromClick) {\r\n                handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params);\r\n            }\r\n            else if (params.fromAction === 'select') {\r\n                handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params);\r\n            }\r\n            else if (params.fromAction === 'unselect') {\r\n                handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params);\r\n            }\r\n        });\r\n    }\n\n    function createLinearGradient(ctx, obj, rect) {\r\n        var x = obj.x == null ? 0 : obj.x;\r\n        var x2 = obj.x2 == null ? 1 : obj.x2;\r\n        var y = obj.y == null ? 0 : obj.y;\r\n        var y2 = obj.y2 == null ? 0 : obj.y2;\r\n        if (!obj.global) {\r\n            x = x * rect.width + rect.x;\r\n            x2 = x2 * rect.width + rect.x;\r\n            y = y * rect.height + rect.y;\r\n            y2 = y2 * rect.height + rect.y;\r\n        }\r\n        x = isNaN(x) ? 0 : x;\r\n        x2 = isNaN(x2) ? 1 : x2;\r\n        y = isNaN(y) ? 0 : y;\r\n        y2 = isNaN(y2) ? 0 : y2;\r\n        var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\r\n        return canvasGradient;\r\n    }\r\n    function createRadialGradient(ctx, obj, rect) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var min = Math.min(width, height);\r\n        var x = obj.x == null ? 0.5 : obj.x;\r\n        var y = obj.y == null ? 0.5 : obj.y;\r\n        var r = obj.r == null ? 0.5 : obj.r;\r\n        if (!obj.global) {\r\n            x = x * width + rect.x;\r\n            y = y * height + rect.y;\r\n            r = r * min;\r\n        }\r\n        var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\r\n        return canvasGradient;\r\n    }\r\n    function getCanvasGradient(ctx, obj, rect) {\r\n        var canvasGradient = obj.type === 'radial'\r\n            ? createRadialGradient(ctx, obj, rect)\r\n            : createLinearGradient(ctx, obj, rect);\r\n        var colorStops = obj.colorStops;\r\n        for (var i = 0; i < colorStops.length; i++) {\r\n            canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\r\n        }\r\n        return canvasGradient;\r\n    }\r\n    function isClipPathChanged(clipPaths, prevClipPaths) {\r\n        if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\r\n            return false;\r\n        }\r\n        if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            if (clipPaths[i] !== prevClipPaths[i]) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\n\n    function normalizeLineDash(lineType, lineWidth) {\r\n        if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\r\n            return null;\r\n        }\r\n        lineWidth = lineWidth || 1;\r\n        return lineType === 'dashed'\r\n            ? [4 * lineWidth, 2 * lineWidth]\r\n            : lineType === 'dotted'\r\n                ? [lineWidth]\r\n                : isNumber(lineType)\r\n                    ? [lineType] : isArray(lineType) ? lineType : null;\r\n    }\n\n    var pathProxyForDraw = new PathProxy(true);\r\n    function styleHasStroke(style) {\r\n        var stroke = style.stroke;\r\n        return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n    }\r\n    function styleHasFill(style) {\r\n        var fill = style.fill;\r\n        return fill != null && fill !== 'none';\r\n    }\r\n    function doFillPath(ctx, style) {\r\n        if (style.fillOpacity != null && style.fillOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.fillOpacity * style.opacity;\r\n            ctx.fill();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.fill();\r\n        }\r\n    }\r\n    function doStrokePath(ctx, style) {\r\n        if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.strokeOpacity * style.opacity;\r\n            ctx.stroke();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.stroke();\r\n        }\r\n    }\r\n    function createCanvasPattern(ctx, pattern, el) {\r\n        var image = createOrUpdateImage(pattern.image, pattern.__image, el);\r\n        if (isImageReady(image)) {\r\n            var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\r\n            if (typeof DOMMatrix === 'function') {\r\n                var matrix = new DOMMatrix();\r\n                matrix.rotateSelf(0, 0, (pattern.rotation || 0) / Math.PI * 180);\r\n                matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\r\n                matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\r\n                canvasPattern.setTransform(matrix);\r\n            }\r\n            return canvasPattern;\r\n        }\r\n    }\r\n    function brushPath(ctx, el, style, inBatch) {\r\n        var hasStroke = styleHasStroke(style);\r\n        var hasFill = styleHasFill(style);\r\n        var strokePercent = style.strokePercent;\r\n        var strokePart = strokePercent < 1;\r\n        var firstDraw = !el.path;\r\n        if ((!el.silent || strokePart) && firstDraw) {\r\n            el.createPathProxy();\r\n        }\r\n        var path = el.path || pathProxyForDraw;\r\n        if (!inBatch) {\r\n            var fill = style.fill;\r\n            var stroke = style.stroke;\r\n            var hasFillGradient = hasFill && !!fill.colorStops;\r\n            var hasStrokeGradient = hasStroke && !!stroke.colorStops;\r\n            var hasFillPattern = hasFill && !!fill.image;\r\n            var hasStrokePattern = hasStroke && !!stroke.image;\r\n            var fillGradient = void 0;\r\n            var strokeGradient = void 0;\r\n            var fillPattern = void 0;\r\n            var strokePattern = void 0;\r\n            var rect = void 0;\r\n            if (hasFillGradient || hasStrokeGradient) {\r\n                rect = el.getBoundingRect();\r\n            }\r\n            if (hasFillGradient) {\r\n                fillGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, fill, rect)\r\n                    : el.__canvasFillGradient;\r\n                el.__canvasFillGradient = fillGradient;\r\n            }\r\n            if (hasStrokeGradient) {\r\n                strokeGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, stroke, rect)\r\n                    : el.__canvasStrokeGradient;\r\n                el.__canvasStrokeGradient = strokeGradient;\r\n            }\r\n            if (hasFillPattern) {\r\n                fillPattern = (el.__dirty || !el.__canvasFillPattern)\r\n                    ? createCanvasPattern(ctx, fill, el)\r\n                    : el.__canvasFillPattern;\r\n                el.__canvasFillPattern = fillPattern;\r\n            }\r\n            if (hasStrokePattern) {\r\n                strokePattern = (el.__dirty || !el.__canvasStrokePattern)\r\n                    ? createCanvasPattern(ctx, stroke, el)\r\n                    : el.__canvasStrokePattern;\r\n                el.__canvasStrokePattern = fillPattern;\r\n            }\r\n            if (hasFillGradient) {\r\n                ctx.fillStyle = fillGradient;\r\n            }\r\n            else if (hasFillPattern) {\r\n                if (fillPattern) {\r\n                    ctx.fillStyle = fillPattern;\r\n                }\r\n                else {\r\n                    hasFill = false;\r\n                }\r\n            }\r\n            if (hasStrokeGradient) {\r\n                ctx.strokeStyle = strokeGradient;\r\n            }\r\n            else if (hasStrokePattern) {\r\n                if (strokePattern) {\r\n                    ctx.strokeStyle = strokePattern;\r\n                }\r\n                else {\r\n                    hasStroke = false;\r\n                }\r\n            }\r\n        }\r\n        var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n        var lineDashOffset = style.lineDashOffset;\r\n        var ctxLineDash = !!ctx.setLineDash;\r\n        var scale = el.getGlobalScale();\r\n        path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\r\n        if (lineDash) {\r\n            var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n            if (lineScale_1 && lineScale_1 !== 1) {\r\n                lineDash = map(lineDash, function (rawVal) {\r\n                    return rawVal / lineScale_1;\r\n                });\r\n                lineDashOffset /= lineScale_1;\r\n            }\r\n        }\r\n        var needsRebuild = true;\r\n        if (firstDraw || (el.__dirty & Path.SHAPE_CHANGED_BIT)\r\n            || (lineDash && !ctxLineDash && hasStroke)) {\r\n            path.setDPR(ctx.dpr);\r\n            if (strokePart) {\r\n                path.setContext(null);\r\n            }\r\n            else {\r\n                path.setContext(ctx);\r\n                needsRebuild = false;\r\n            }\r\n            path.reset();\r\n            if (lineDash && !ctxLineDash) {\r\n                path.setLineDash(lineDash);\r\n                path.setLineDashOffset(lineDashOffset);\r\n            }\r\n            el.buildPath(path, el.shape, inBatch);\r\n            path.toStatic();\r\n            el.pathUpdated();\r\n        }\r\n        if (needsRebuild) {\r\n            path.rebuildPath(ctx, strokePart ? strokePercent : 1);\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash(lineDash);\r\n            ctx.lineDashOffset = lineDashOffset;\r\n        }\r\n        if (!inBatch) {\r\n            if (style.strokeFirst) {\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n            }\r\n            else {\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n            }\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash([]);\r\n        }\r\n    }\r\n    function brushImage(ctx, el, style) {\r\n        var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\r\n        if (!image || !isImageReady(image)) {\r\n            return;\r\n        }\r\n        var x = style.x || 0;\r\n        var y = style.y || 0;\r\n        var width = el.getWidth();\r\n        var height = el.getHeight();\r\n        var aspect = image.width / image.height;\r\n        if (width == null && height != null) {\r\n            width = height * aspect;\r\n        }\r\n        else if (height == null && width != null) {\r\n            height = width / aspect;\r\n        }\r\n        else if (width == null && height == null) {\r\n            width = image.width;\r\n            height = image.height;\r\n        }\r\n        if (style.sWidth && style.sHeight) {\r\n            var sx = style.sx || 0;\r\n            var sy = style.sy || 0;\r\n            ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\r\n        }\r\n        else if (style.sx && style.sy) {\r\n            var sx = style.sx;\r\n            var sy = style.sy;\r\n            var sWidth = width - sx;\r\n            var sHeight = height - sy;\r\n            ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\r\n        }\r\n        else {\r\n            ctx.drawImage(image, x, y, width, height);\r\n        }\r\n    }\r\n    function brushText(ctx, el, style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        if (text) {\r\n            ctx.font = style.font || DEFAULT_FONT;\r\n            ctx.textAlign = style.textAlign;\r\n            ctx.textBaseline = style.textBaseline;\r\n            var hasLineDash = void 0;\r\n            if (ctx.setLineDash) {\r\n                var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n                var lineDashOffset = style.lineDashOffset;\r\n                if (lineDash) {\r\n                    var lineScale_2 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n                    if (lineScale_2 && lineScale_2 !== 1) {\r\n                        lineDash = map(lineDash, function (rawVal) {\r\n                            return rawVal / lineScale_2;\r\n                        });\r\n                        lineDashOffset /= lineScale_2;\r\n                    }\r\n                    ctx.setLineDash(lineDash);\r\n                    ctx.lineDashOffset = lineDashOffset;\r\n                    hasLineDash = true;\r\n                }\r\n            }\r\n            if (style.strokeFirst) {\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n            }\r\n            else {\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n            }\r\n            if (hasLineDash) {\r\n                ctx.setLineDash([]);\r\n            }\r\n        }\r\n    }\r\n    var SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\n    var STROKE_PROPS = [\r\n        ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n    ];\r\n    function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\r\n        var styleChanged = false;\r\n        if (!forceSetAll) {\r\n            prevStyle = prevStyle || {};\r\n            if (style === prevStyle) {\r\n                return false;\r\n            }\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? DEFAULT_COMMON_STYLE.opacity : style.opacity;\r\n        }\r\n        if (forceSetAll || style.blend !== prevStyle.blend) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\r\n        }\r\n        for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\r\n            var propName = SHADOW_NUMBER_PROPS[i];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = ctx.dpr * (style[propName] || 0);\r\n            }\r\n        }\r\n        if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        var style = getStyle(el, scope.inHover);\r\n        var prevStyle = forceSetAll\r\n            ? null\r\n            : (prevEl && getStyle(prevEl, scope.inHover) || {});\r\n        if (style === prevStyle) {\r\n            return false;\r\n        }\r\n        var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\r\n        if (forceSetAll || style.fill !== prevStyle.fill) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.fillStyle = style.fill;\r\n        }\r\n        if (forceSetAll || style.stroke !== prevStyle.stroke) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.strokeStyle = style.stroke;\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\r\n        }\r\n        if (el.hasStroke()) {\r\n            var lineWidth = style.lineWidth;\r\n            var newLineWidth = lineWidth / ((style.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1);\r\n            if (ctx.lineWidth !== newLineWidth) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx.lineWidth = newLineWidth;\r\n            }\r\n        }\r\n        for (var i = 0; i < STROKE_PROPS.length; i++) {\r\n            var prop = STROKE_PROPS[i];\r\n            var propName = prop[0];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = style[propName] || prop[1];\r\n            }\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\r\n    }\r\n    function setContextTransform(ctx, el) {\r\n        var m = el.transform;\r\n        var dpr = ctx.dpr || 1;\r\n        if (m) {\r\n            ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\r\n        }\r\n        else {\r\n            ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n        }\r\n    }\r\n    function updateClipStatus(clipPaths, ctx, scope) {\r\n        var allClipped = false;\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            var clipPath = clipPaths[i];\r\n            allClipped = allClipped || clipPath.isZeroArea();\r\n            setContextTransform(ctx, clipPath);\r\n            ctx.beginPath();\r\n            clipPath.buildPath(ctx, clipPath.shape);\r\n            ctx.clip();\r\n        }\r\n        scope.allClipped = allClipped;\r\n    }\r\n    function isTransformChanged(m0, m1) {\r\n        if (m0 && m1) {\r\n            return m0[0] !== m1[0]\r\n                || m0[1] !== m1[1]\r\n                || m0[2] !== m1[2]\r\n                || m0[3] !== m1[3]\r\n                || m0[4] !== m1[4]\r\n                || m0[5] !== m1[5];\r\n        }\r\n        else if (!m0 && !m1) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    var DRAW_TYPE_PATH = 1;\r\n    var DRAW_TYPE_IMAGE = 2;\r\n    var DRAW_TYPE_TEXT = 3;\r\n    var DRAW_TYPE_INCREMENTAL = 4;\r\n    function canPathBatch(style) {\r\n        var hasFill = styleHasFill(style);\r\n        var hasStroke = styleHasStroke(style);\r\n        return !(style.lineDash\r\n            || !(+hasFill ^ +hasStroke)\r\n            || (hasFill && typeof style.fill !== 'string')\r\n            || (hasStroke && typeof style.stroke !== 'string')\r\n            || style.strokePercent < 1\r\n            || style.strokeOpacity < 1\r\n            || style.fillOpacity < 1);\r\n    }\r\n    function flushPathDrawn(ctx, scope) {\r\n        scope.batchFill && ctx.fill();\r\n        scope.batchStroke && ctx.stroke();\r\n        scope.batchFill = '';\r\n        scope.batchStroke = '';\r\n    }\r\n    function getStyle(el, inHover) {\r\n        return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n    }\r\n    function brushSingle(ctx, el) {\r\n        brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\r\n    }\r\n    function brush(ctx, el, scope, isLast) {\r\n        var m = el.transform;\r\n        if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\r\n            el.__dirty &= ~Element.REDARAW_BIT;\r\n            el.__isRendered = false;\r\n            return;\r\n        }\r\n        var clipPaths = el.__clipPaths;\r\n        var prevElClipPaths = scope.prevElClipPaths;\r\n        var forceSetTransform = false;\r\n        var forceSetStyle = false;\r\n        if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\r\n            if (prevElClipPaths && prevElClipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.restore();\r\n                forceSetStyle = forceSetTransform = true;\r\n                scope.prevElClipPaths = null;\r\n                scope.allClipped = false;\r\n                scope.prevEl = null;\r\n            }\r\n            if (clipPaths && clipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.save();\r\n                updateClipStatus(clipPaths, ctx, scope);\r\n                forceSetTransform = true;\r\n            }\r\n            scope.prevElClipPaths = clipPaths;\r\n        }\r\n        if (scope.allClipped) {\r\n            el.__isRendered = false;\r\n            return;\r\n        }\r\n        el.beforeBrush && el.beforeBrush();\r\n        el.innerBeforeBrush();\r\n        var prevEl = scope.prevEl;\r\n        if (!prevEl) {\r\n            forceSetStyle = forceSetTransform = true;\r\n        }\r\n        var canBatchPath = el instanceof Path\r\n            && el.autoBatch\r\n            && canPathBatch(el.style);\r\n        if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\r\n            flushPathDrawn(ctx, scope);\r\n            setContextTransform(ctx, el);\r\n        }\r\n        else if (!canBatchPath) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        var style = getStyle(el, scope.inHover);\r\n        if (el instanceof Path) {\r\n            if (scope.lastDrawType !== DRAW_TYPE_PATH) {\r\n                forceSetStyle = true;\r\n                scope.lastDrawType = DRAW_TYPE_PATH;\r\n            }\r\n            bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n            if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\r\n                ctx.beginPath();\r\n            }\r\n            brushPath(ctx, el, style, canBatchPath);\r\n            if (canBatchPath) {\r\n                scope.batchFill = style.fill || '';\r\n                scope.batchStroke = style.stroke || '';\r\n            }\r\n        }\r\n        else {\r\n            if (el instanceof TSpan) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_TEXT;\r\n                }\r\n                bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushText(ctx, el, style);\r\n            }\r\n            else if (el instanceof ZRImage) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_IMAGE;\r\n                }\r\n                bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushImage(ctx, el, style);\r\n            }\r\n            else if (el instanceof IncrementalDisplayble) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\r\n                }\r\n                brushIncremental(ctx, el, scope);\r\n            }\r\n        }\r\n        if (canBatchPath && isLast) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        el.innerAfterBrush();\r\n        el.afterBrush && el.afterBrush();\r\n        scope.prevEl = el;\r\n        el.__dirty = 0;\r\n        el.__isRendered = true;\r\n    }\r\n    function brushIncremental(ctx, el, scope) {\r\n        var displayables = el.getDisplayables();\r\n        var temporalDisplayables = el.getTemporalDisplayables();\r\n        ctx.save();\r\n        var innerScope = {\r\n            prevElClipPaths: null,\r\n            prevEl: null,\r\n            allClipped: false,\r\n            viewWidth: scope.viewWidth,\r\n            viewHeight: scope.viewHeight,\r\n            inHover: scope.inHover\r\n        };\r\n        var i;\r\n        var len;\r\n        for (i = el.getCursor(), len = displayables.length; i < len; i++) {\r\n            var displayable = displayables[i];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i === len - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\r\n            var displayable = temporalDisplayables[i_1];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        el.clearTemporalDisplayables();\r\n        el.notClear = true;\r\n        ctx.restore();\r\n    }\n\n    function returnFalse() {\r\n        return false;\r\n    }\r\n    function createDom(id, painter, dpr) {\r\n        var newDom = createCanvas();\r\n        var width = painter.getWidth();\r\n        var height = painter.getHeight();\r\n        var newDomStyle = newDom.style;\r\n        if (newDomStyle) {\r\n            newDomStyle.position = 'absolute';\r\n            newDomStyle.left = '0';\r\n            newDomStyle.top = '0';\r\n            newDomStyle.width = width + 'px';\r\n            newDomStyle.height = height + 'px';\r\n            newDom.setAttribute('data-zr-dom-id', id);\r\n        }\r\n        newDom.width = width * dpr;\r\n        newDom.height = height * dpr;\r\n        return newDom;\r\n    }\r\n    var Layer = (function (_super) {\r\n        __extends(Layer, _super);\r\n        function Layer(id, painter, dpr) {\r\n            var _this = _super.call(this) || this;\r\n            _this.motionBlur = false;\r\n            _this.lastFrameAlpha = 0.7;\r\n            _this.dpr = 1;\r\n            _this.virtual = false;\r\n            _this.config = {};\r\n            _this.incremental = false;\r\n            _this.zlevel = 0;\r\n            _this.maxRepaintRectCount = 5;\r\n            _this.__dirty = true;\r\n            _this.__firstTimePaint = true;\r\n            _this.__used = false;\r\n            _this.__drawIndex = 0;\r\n            _this.__startIndex = 0;\r\n            _this.__endIndex = 0;\r\n            _this.__prevStartIndex = null;\r\n            _this.__prevEndIndex = null;\r\n            var dom;\r\n            dpr = dpr || devicePixelRatio;\r\n            if (typeof id === 'string') {\r\n                dom = createDom(id, painter, dpr);\r\n            }\r\n            else if (isObject(id)) {\r\n                dom = id;\r\n                id = dom.id;\r\n            }\r\n            _this.id = id;\r\n            _this.dom = dom;\r\n            var domStyle = dom.style;\r\n            if (domStyle) {\r\n                dom.onselectstart = returnFalse;\r\n                domStyle.webkitUserSelect = 'none';\r\n                domStyle.userSelect = 'none';\r\n                domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\r\n                domStyle['-webkit-touch-callout'] = 'none';\r\n                domStyle.padding = '0';\r\n                domStyle.margin = '0';\r\n                domStyle.borderWidth = '0';\r\n            }\r\n            _this.domBack = null;\r\n            _this.ctxBack = null;\r\n            _this.painter = painter;\r\n            _this.config = null;\r\n            _this.dpr = dpr;\r\n            return _this;\r\n        }\r\n        Layer.prototype.getElementCount = function () {\r\n            return this.__endIndex - this.__startIndex;\r\n        };\r\n        Layer.prototype.afterBrush = function () {\r\n            this.__prevStartIndex = this.__startIndex;\r\n            this.__prevEndIndex = this.__endIndex;\r\n        };\r\n        Layer.prototype.initContext = function () {\r\n            this.ctx = this.dom.getContext('2d');\r\n            this.ctx.dpr = this.dpr;\r\n        };\r\n        Layer.prototype.setUnpainted = function () {\r\n            this.__firstTimePaint = true;\r\n        };\r\n        Layer.prototype.createBackBuffer = function () {\r\n            var dpr = this.dpr;\r\n            this.domBack = createDom('back-' + this.id, this.painter, dpr);\r\n            this.ctxBack = this.domBack.getContext('2d');\r\n            if (dpr !== 1) {\r\n                this.ctxBack.scale(dpr, dpr);\r\n            }\r\n        };\r\n        Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\r\n            if (this.__firstTimePaint) {\r\n                this.__firstTimePaint = false;\r\n                return null;\r\n            }\r\n            var mergedRepaintRects = [];\r\n            var maxRepaintRectCount = this.maxRepaintRectCount;\r\n            var full = false;\r\n            var pendingRect = new BoundingRect(0, 0, 0, 0);\r\n            function addRectToMergePool(rect) {\r\n                if (!rect.isFinite() || rect.isZero()) {\r\n                    return;\r\n                }\r\n                if (mergedRepaintRects.length === 0) {\r\n                    var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n                    boundingRect.copy(rect);\r\n                    mergedRepaintRects.push(boundingRect);\r\n                }\r\n                else {\r\n                    var isMerged = false;\r\n                    var minDeltaArea = Infinity;\r\n                    var bestRectToMergeIdx = 0;\r\n                    for (var i = 0; i < mergedRepaintRects.length; ++i) {\r\n                        var mergedRect = mergedRepaintRects[i];\r\n                        if (mergedRect.intersect(rect)) {\r\n                            var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\r\n                            pendingRect_1.copy(mergedRect);\r\n                            pendingRect_1.union(rect);\r\n                            mergedRepaintRects[i] = pendingRect_1;\r\n                            isMerged = true;\r\n                            break;\r\n                        }\r\n                        else if (full) {\r\n                            pendingRect.copy(rect);\r\n                            pendingRect.union(mergedRect);\r\n                            var aArea = rect.width * rect.height;\r\n                            var bArea = mergedRect.width * mergedRect.height;\r\n                            var pendingArea = pendingRect.width * pendingRect.height;\r\n                            var deltaArea = pendingArea - aArea - bArea;\r\n                            if (deltaArea < minDeltaArea) {\r\n                                minDeltaArea = minDeltaArea;\r\n                                bestRectToMergeIdx = i;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (full) {\r\n                        mergedRepaintRects[bestRectToMergeIdx].union(rect);\r\n                        isMerged = true;\r\n                    }\r\n                    if (!isMerged) {\r\n                        var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n                        boundingRect.copy(rect);\r\n                        mergedRepaintRects.push(boundingRect);\r\n                    }\r\n                    if (!full) {\r\n                        full = mergedRepaintRects.length >= maxRepaintRectCount;\r\n                    }\r\n                }\r\n            }\r\n            for (var i = this.__startIndex; i < this.__endIndex; ++i) {\r\n                var el = displayList[i];\r\n                if (el) {\r\n                    var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n                    var prevRect = el.__isRendered && ((el.__dirty & Element.REDARAW_BIT) || !shouldPaint)\r\n                        ? el.getPrevPaintRect()\r\n                        : null;\r\n                    if (prevRect) {\r\n                        addRectToMergePool(prevRect);\r\n                    }\r\n                    var curRect = shouldPaint && ((el.__dirty & Element.REDARAW_BIT) || !el.__isRendered)\r\n                        ? el.getPaintRect()\r\n                        : null;\r\n                    if (curRect) {\r\n                        addRectToMergePool(curRect);\r\n                    }\r\n                }\r\n            }\r\n            for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\r\n                var el = prevList[i];\r\n                var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n                if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\r\n                    var prevRect = el.getPrevPaintRect();\r\n                    if (prevRect) {\r\n                        addRectToMergePool(prevRect);\r\n                    }\r\n                }\r\n            }\r\n            var hasIntersections;\r\n            do {\r\n                hasIntersections = false;\r\n                for (var i = 0; i < mergedRepaintRects.length;) {\r\n                    if (mergedRepaintRects[i].isZero()) {\r\n                        mergedRepaintRects.splice(i, 1);\r\n                        continue;\r\n                    }\r\n                    for (var j = i + 1; j < mergedRepaintRects.length;) {\r\n                        if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\r\n                            hasIntersections = true;\r\n                            mergedRepaintRects[i].union(mergedRepaintRects[j]);\r\n                            mergedRepaintRects.splice(j, 1);\r\n                        }\r\n                        else {\r\n                            j++;\r\n                        }\r\n                    }\r\n                    i++;\r\n                }\r\n            } while (hasIntersections);\r\n            this._paintRects = mergedRepaintRects;\r\n            return mergedRepaintRects;\r\n        };\r\n        Layer.prototype.debugGetPaintRects = function () {\r\n            return (this._paintRects || []).slice();\r\n        };\r\n        Layer.prototype.resize = function (width, height) {\r\n            var dpr = this.dpr;\r\n            var dom = this.dom;\r\n            var domStyle = dom.style;\r\n            var domBack = this.domBack;\r\n            if (domStyle) {\r\n                domStyle.width = width + 'px';\r\n                domStyle.height = height + 'px';\r\n            }\r\n            dom.width = width * dpr;\r\n            dom.height = height * dpr;\r\n            if (domBack) {\r\n                domBack.width = width * dpr;\r\n                domBack.height = height * dpr;\r\n                if (dpr !== 1) {\r\n                    this.ctxBack.scale(dpr, dpr);\r\n                }\r\n            }\r\n        };\r\n        Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\r\n            var dom = this.dom;\r\n            var ctx = this.ctx;\r\n            var width = dom.width;\r\n            var height = dom.height;\r\n            clearColor = clearColor || this.clearColor;\r\n            var haveMotionBLur = this.motionBlur && !clearAll;\r\n            var lastFrameAlpha = this.lastFrameAlpha;\r\n            var dpr = this.dpr;\r\n            var self = this;\r\n            if (haveMotionBLur) {\r\n                if (!this.domBack) {\r\n                    this.createBackBuffer();\r\n                }\r\n                this.ctxBack.globalCompositeOperation = 'copy';\r\n                this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\r\n            }\r\n            var domBack = this.domBack;\r\n            function doClear(x, y, width, height) {\r\n                ctx.clearRect(x, y, width, height);\r\n                if (clearColor && clearColor !== 'transparent') {\r\n                    var clearColorGradientOrPattern = void 0;\r\n                    if (isGradientObject(clearColor)) {\r\n                        clearColorGradientOrPattern = clearColor.__canvasGradient\r\n                            || getCanvasGradient(ctx, clearColor, {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            });\r\n                        clearColor.__canvasGradient = clearColorGradientOrPattern;\r\n                    }\r\n                    else if (isPatternObject(clearColor)) {\r\n                        clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\r\n                            dirty: function () {\r\n                                self.setUnpainted();\r\n                                self.__painter.refresh();\r\n                            }\r\n                        });\r\n                    }\r\n                    ctx.save();\r\n                    ctx.fillStyle = clearColorGradientOrPattern || clearColor;\r\n                    ctx.fillRect(x, y, width, height);\r\n                    ctx.restore();\r\n                }\r\n                if (haveMotionBLur) {\r\n                    ctx.save();\r\n                    ctx.globalAlpha = lastFrameAlpha;\r\n                    ctx.drawImage(domBack, x, y, width, height);\r\n                    ctx.restore();\r\n                }\r\n            }\r\n            if (!repaintRects || haveMotionBLur) {\r\n                doClear(0, 0, width, height);\r\n            }\r\n            else if (repaintRects.length) {\r\n                each(repaintRects, function (rect) {\r\n                    doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n                });\r\n            }\r\n        };\r\n        return Layer;\r\n    }(Eventful));\n\n    var HOVER_LAYER_ZLEVEL = 1e5;\r\n    var CANVAS_ZLEVEL = 314159;\r\n    var EL_AFTER_INCREMENTAL_INC = 0.01;\r\n    var INCREMENTAL_INC = 0.001;\r\n    function parseInt10(val) {\r\n        return parseInt(val, 10);\r\n    }\r\n    function isLayerValid(layer) {\r\n        if (!layer) {\r\n            return false;\r\n        }\r\n        if (layer.__builtin__) {\r\n            return true;\r\n        }\r\n        if (typeof (layer.resize) !== 'function'\r\n            || typeof (layer.refresh) !== 'function') {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function createRoot(width, height) {\r\n        var domRoot = document.createElement('div');\r\n        domRoot.style.cssText = [\r\n            'position:relative',\r\n            'width:' + width + 'px',\r\n            'height:' + height + 'px',\r\n            'padding:0',\r\n            'margin:0',\r\n            'border-width:0'\r\n        ].join(';') + ';';\r\n        return domRoot;\r\n    }\r\n    var CanvasPainter = (function () {\r\n        function CanvasPainter(root, storage, opts, id) {\r\n            this.type = 'canvas';\r\n            this._zlevelList = [];\r\n            this._prevDisplayList = [];\r\n            this._layers = {};\r\n            this._layerConfig = {};\r\n            this._needsManuallyCompositing = false;\r\n            this.type = 'canvas';\r\n            var singleCanvas = !root.nodeName\r\n                || root.nodeName.toUpperCase() === 'CANVAS';\r\n            this._opts = opts = extend({}, opts || {});\r\n            this.dpr = opts.devicePixelRatio || devicePixelRatio;\r\n            this._singleCanvas = singleCanvas;\r\n            this.root = root;\r\n            var rootStyle = root.style;\r\n            if (rootStyle) {\r\n                rootStyle.webkitTapHighlightColor = 'transparent';\r\n                rootStyle.webkitUserSelect = 'none';\r\n                rootStyle.userSelect = 'none';\r\n                rootStyle['-webkit-touch-callout'] = 'none';\r\n                root.innerHTML = '';\r\n            }\r\n            this.storage = storage;\r\n            var zlevelList = this._zlevelList;\r\n            this._prevDisplayList = [];\r\n            var layers = this._layers;\r\n            if (!singleCanvas) {\r\n                this._width = this._getSize(0);\r\n                this._height = this._getSize(1);\r\n                var domRoot = this._domRoot = createRoot(this._width, this._height);\r\n                root.appendChild(domRoot);\r\n            }\r\n            else {\r\n                var rootCanvas = root;\r\n                var width = rootCanvas.width;\r\n                var height = rootCanvas.height;\r\n                if (opts.width != null) {\r\n                    width = opts.width;\r\n                }\r\n                if (opts.height != null) {\r\n                    height = opts.height;\r\n                }\r\n                this.dpr = opts.devicePixelRatio || 1;\r\n                rootCanvas.width = width * this.dpr;\r\n                rootCanvas.height = height * this.dpr;\r\n                this._width = width;\r\n                this._height = height;\r\n                var mainLayer = new Layer(rootCanvas, this, this.dpr);\r\n                mainLayer.__builtin__ = true;\r\n                mainLayer.initContext();\r\n                layers[CANVAS_ZLEVEL] = mainLayer;\r\n                mainLayer.zlevel = CANVAS_ZLEVEL;\r\n                zlevelList.push(CANVAS_ZLEVEL);\r\n                this._domRoot = root;\r\n            }\r\n        }\r\n        CanvasPainter.prototype.getType = function () {\r\n            return 'canvas';\r\n        };\r\n        CanvasPainter.prototype.isSingleCanvas = function () {\r\n            return this._singleCanvas;\r\n        };\r\n        CanvasPainter.prototype.getViewportRoot = function () {\r\n            return this._domRoot;\r\n        };\r\n        CanvasPainter.prototype.getViewportRootOffset = function () {\r\n            var viewportRoot = this.getViewportRoot();\r\n            if (viewportRoot) {\r\n                return {\r\n                    offsetLeft: viewportRoot.offsetLeft || 0,\r\n                    offsetTop: viewportRoot.offsetTop || 0\r\n                };\r\n            }\r\n        };\r\n        CanvasPainter.prototype.refresh = function (paintAll) {\r\n            var list = this.storage.getDisplayList(true);\r\n            var prevList = this._prevDisplayList;\r\n            var zlevelList = this._zlevelList;\r\n            this._redrawId = Math.random();\r\n            this._paintList(list, prevList, paintAll, this._redrawId);\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__ && layer.refresh) {\r\n                    var clearColor = i === 0 ? this._backgroundColor : null;\r\n                    layer.refresh(clearColor);\r\n                }\r\n            }\r\n            if (this._opts.useDirtyRect) {\r\n                this._prevDisplayList = list.slice();\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.refreshHover = function () {\r\n            this._paintHoverList(this.storage.getDisplayList(false));\r\n        };\r\n        CanvasPainter.prototype._paintHoverList = function (list) {\r\n            var len = list.length;\r\n            var hoverLayer = this._hoverlayer;\r\n            hoverLayer && hoverLayer.clear();\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var scope = {\r\n                inHover: true,\r\n                viewWidth: this._width,\r\n                viewHeight: this._height\r\n            };\r\n            var ctx;\r\n            for (var i = 0; i < len; i++) {\r\n                var el = list[i];\r\n                if (el.__inHover) {\r\n                    if (!hoverLayer) {\r\n                        hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\r\n                    }\r\n                    if (!ctx) {\r\n                        ctx = hoverLayer.ctx;\r\n                        ctx.save();\r\n                    }\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            if (ctx) {\r\n                ctx.restore();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getHoverLayer = function () {\r\n            return this.getLayer(HOVER_LAYER_ZLEVEL);\r\n        };\r\n        CanvasPainter.prototype.paintOne = function (ctx, el) {\r\n            brushSingle(ctx, el);\r\n        };\r\n        CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\r\n            if (this._redrawId !== redrawId) {\r\n                return;\r\n            }\r\n            paintAll = paintAll || false;\r\n            this._updateLayerStatus(list);\r\n            var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\r\n            if (this._needsManuallyCompositing) {\r\n                this._compositeManually();\r\n            }\r\n            if (needsRefreshHover) {\r\n                this._paintHoverList(list);\r\n            }\r\n            if (!finished) {\r\n                var self_1 = this;\r\n                requestAnimationFrame$1(function () {\r\n                    self_1._paintList(list, prevList, paintAll, redrawId);\r\n                });\r\n            }\r\n            else {\r\n                this.eachLayer(function (layer) {\r\n                    layer.afterBrush && layer.afterBrush();\r\n                });\r\n            }\r\n        };\r\n        CanvasPainter.prototype._compositeManually = function () {\r\n            var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\r\n            var width = this._domRoot.width;\r\n            var height = this._domRoot.height;\r\n            ctx.clearRect(0, 0, width, height);\r\n            this.eachBuiltinLayer(function (layer) {\r\n                if (layer.virtual) {\r\n                    ctx.drawImage(layer.dom, 0, 0, width, height);\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\r\n            var _this = this;\r\n            var layerList = [];\r\n            var useDirtyRect = this._opts.useDirtyRect;\r\n            for (var zi = 0; zi < this._zlevelList.length; zi++) {\r\n                var zlevel = this._zlevelList[zi];\r\n                var layer = this._layers[zlevel];\r\n                if (layer.__builtin__\r\n                    && layer !== this._hoverlayer\r\n                    && (layer.__dirty || paintAll)) {\r\n                    layerList.push(layer);\r\n                }\r\n            }\r\n            var finished = true;\r\n            var needsRefreshHover = false;\r\n            var _loop_1 = function (k) {\r\n                var layer = layerList[k];\r\n                var ctx = layer.ctx;\r\n                var repaintRects = useDirtyRect\r\n                    && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\r\n                ctx.save();\r\n                var start = paintAll ? layer.__startIndex : layer.__drawIndex;\r\n                var useTimer = !paintAll && layer.incremental && Date.now;\r\n                var startTime = useTimer && Date.now();\r\n                var clearColor = layer.zlevel === this_1._zlevelList[0]\r\n                    ? this_1._backgroundColor : null;\r\n                if (layer.__startIndex === layer.__endIndex) {\r\n                    layer.clear(false, clearColor, repaintRects);\r\n                }\r\n                else if (start === layer.__startIndex) {\r\n                    var firstEl = list[start];\r\n                    if (!firstEl.incremental || !firstEl.notClear || paintAll) {\r\n                        layer.clear(false, clearColor, repaintRects);\r\n                    }\r\n                }\r\n                if (start === -1) {\r\n                    console.error('For some unknown reason. drawIndex is -1');\r\n                    start = layer.__startIndex;\r\n                }\r\n                var i;\r\n                var repaint = function (repaintRect) {\r\n                    var scope = {\r\n                        inHover: false,\r\n                        allClipped: false,\r\n                        prevEl: null,\r\n                        viewWidth: _this._width,\r\n                        viewHeight: _this._height\r\n                    };\r\n                    for (i = start; i < layer.__endIndex; i++) {\r\n                        var el = list[i];\r\n                        if (el.__inHover) {\r\n                            needsRefreshHover = true;\r\n                        }\r\n                        _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\r\n                        if (useTimer) {\r\n                            var dTime = Date.now() - startTime;\r\n                            if (dTime > 15) {\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (scope.prevElClipPaths) {\r\n                        ctx.restore();\r\n                    }\r\n                };\r\n                if (repaintRects) {\r\n                    if (repaintRects.length === 0) {\r\n                        i = layer.__endIndex;\r\n                    }\r\n                    else {\r\n                        var dpr = this_1.dpr;\r\n                        for (var r = 0; r < repaintRects.length; ++r) {\r\n                            var rect = repaintRects[r];\r\n                            ctx.save();\r\n                            ctx.beginPath();\r\n                            ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n                            ctx.clip();\r\n                            repaint(rect);\r\n                            ctx.restore();\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    ctx.save();\r\n                    repaint();\r\n                    ctx.restore();\r\n                }\r\n                layer.__drawIndex = i;\r\n                if (layer.__drawIndex < layer.__endIndex) {\r\n                    finished = false;\r\n                }\r\n            };\r\n            var this_1 = this;\r\n            for (var k = 0; k < layerList.length; k++) {\r\n                _loop_1(k);\r\n            }\r\n            if (env.wxa) {\r\n                each(this._layers, function (layer) {\r\n                    if (layer && layer.ctx && layer.ctx.draw) {\r\n                        layer.ctx.draw();\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                finished: finished,\r\n                needsRefreshHover: needsRefreshHover\r\n            };\r\n        };\r\n        CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\r\n            var ctx = currentLayer.ctx;\r\n            if (useDirtyRect) {\r\n                var paintRect = el.getPaintRect();\r\n                if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\r\n                    brush(ctx, el, scope, isLast);\r\n                    el.setPrevPaintRect(paintRect);\r\n                }\r\n            }\r\n            else {\r\n                brush(ctx, el, scope, isLast);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\r\n            if (this._singleCanvas && !this._needsManuallyCompositing) {\r\n                zlevel = CANVAS_ZLEVEL;\r\n            }\r\n            var layer = this._layers[zlevel];\r\n            if (!layer) {\r\n                layer = new Layer('zr_' + zlevel, this, this.dpr);\r\n                layer.zlevel = zlevel;\r\n                layer.__builtin__ = true;\r\n                if (this._layerConfig[zlevel]) {\r\n                    merge(layer, this._layerConfig[zlevel], true);\r\n                }\r\n                else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\r\n                    merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\r\n                }\r\n                if (virtual) {\r\n                    layer.virtual = virtual;\r\n                }\r\n                this.insertLayer(zlevel, layer);\r\n                layer.initContext();\r\n            }\r\n            return layer;\r\n        };\r\n        CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\r\n            var layersMap = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var len = zlevelList.length;\r\n            var domRoot = this._domRoot;\r\n            var prevLayer = null;\r\n            var i = -1;\r\n            if (layersMap[zlevel]) {\r\n                logError('ZLevel ' + zlevel + ' has been used already');\r\n                return;\r\n            }\r\n            if (!isLayerValid(layer)) {\r\n                logError('Layer of zlevel ' + zlevel + ' is not valid');\r\n                return;\r\n            }\r\n            if (len > 0 && zlevel > zlevelList[0]) {\r\n                for (i = 0; i < len - 1; i++) {\r\n                    if (zlevelList[i] < zlevel\r\n                        && zlevelList[i + 1] > zlevel) {\r\n                        break;\r\n                    }\r\n                }\r\n                prevLayer = layersMap[zlevelList[i]];\r\n            }\r\n            zlevelList.splice(i + 1, 0, zlevel);\r\n            layersMap[zlevel] = layer;\r\n            if (!layer.virtual) {\r\n                if (prevLayer) {\r\n                    var prevDom = prevLayer.dom;\r\n                    if (prevDom.nextSibling) {\r\n                        domRoot.insertBefore(layer.dom, prevDom.nextSibling);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n                else {\r\n                    if (domRoot.firstChild) {\r\n                        domRoot.insertBefore(layer.dom, domRoot.firstChild);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n            }\r\n            layer.__painter = this;\r\n        };\r\n        CanvasPainter.prototype.eachLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                cb.call(context, this._layers[z], z);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayers = function () {\r\n            return this._layers;\r\n        };\r\n        CanvasPainter.prototype._updateLayerStatus = function (list) {\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                layer.__dirty = layer.__used = false;\r\n            });\r\n            function updatePrevLayer(idx) {\r\n                if (prevLayer) {\r\n                    if (prevLayer.__endIndex !== idx) {\r\n                        prevLayer.__dirty = true;\r\n                    }\r\n                    prevLayer.__endIndex = idx;\r\n                }\r\n            }\r\n            if (this._singleCanvas) {\r\n                for (var i_1 = 1; i_1 < list.length; i_1++) {\r\n                    var el = list[i_1];\r\n                    if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\r\n                        this._needsManuallyCompositing = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            var prevLayer = null;\r\n            var incrementalLayerCount = 0;\r\n            var prevZlevel;\r\n            var i;\r\n            for (i = 0; i < list.length; i++) {\r\n                var el = list[i];\r\n                var zlevel = el.zlevel;\r\n                var layer = void 0;\r\n                if (prevZlevel !== zlevel) {\r\n                    prevZlevel = zlevel;\r\n                    incrementalLayerCount = 0;\r\n                }\r\n                if (el.incremental) {\r\n                    layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\r\n                    layer.incremental = true;\r\n                    incrementalLayerCount = 1;\r\n                }\r\n                else {\r\n                    layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\r\n                }\r\n                if (!layer.__builtin__) {\r\n                    logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\r\n                }\r\n                if (layer !== prevLayer) {\r\n                    layer.__used = true;\r\n                    if (layer.__startIndex !== i) {\r\n                        layer.__dirty = true;\r\n                    }\r\n                    layer.__startIndex = i;\r\n                    if (!layer.incremental) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                    else {\r\n                        layer.__drawIndex = -1;\r\n                    }\r\n                    updatePrevLayer(i);\r\n                    prevLayer = layer;\r\n                }\r\n                if ((el.__dirty & Element.REDARAW_BIT) && !el.__inHover) {\r\n                    layer.__dirty = true;\r\n                    if (layer.incremental && layer.__drawIndex < 0) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                }\r\n            }\r\n            updatePrevLayer(i);\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                if (!layer.__used && layer.getElementCount() > 0) {\r\n                    layer.__dirty = true;\r\n                    layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\r\n                }\r\n                if (layer.__dirty && layer.__drawIndex < 0) {\r\n                    layer.__drawIndex = layer.__startIndex;\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype.clear = function () {\r\n            this.eachBuiltinLayer(this._clearLayer);\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype._clearLayer = function (layer) {\r\n            layer.clear();\r\n        };\r\n        CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n            this._backgroundColor = backgroundColor;\r\n            each(this._layers, function (layer) {\r\n                layer.setUnpainted();\r\n            });\r\n        };\r\n        CanvasPainter.prototype.configLayer = function (zlevel, config) {\r\n            if (config) {\r\n                var layerConfig = this._layerConfig;\r\n                if (!layerConfig[zlevel]) {\r\n                    layerConfig[zlevel] = config;\r\n                }\r\n                else {\r\n                    merge(layerConfig[zlevel], config, true);\r\n                }\r\n                for (var i = 0; i < this._zlevelList.length; i++) {\r\n                    var _zlevel = this._zlevelList[i];\r\n                    if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\r\n                        var layer = this._layers[_zlevel];\r\n                        merge(layer, layerConfig[zlevel], true);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.delLayer = function (zlevel) {\r\n            var layers = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var layer = layers[zlevel];\r\n            if (!layer) {\r\n                return;\r\n            }\r\n            layer.dom.parentNode.removeChild(layer.dom);\r\n            delete layers[zlevel];\r\n            zlevelList.splice(indexOf(zlevelList, zlevel), 1);\r\n        };\r\n        CanvasPainter.prototype.resize = function (width, height) {\r\n            if (!this._domRoot.style) {\r\n                if (width == null || height == null) {\r\n                    return;\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n                this.getLayer(CANVAS_ZLEVEL).resize(width, height);\r\n            }\r\n            else {\r\n                var domRoot = this._domRoot;\r\n                domRoot.style.display = 'none';\r\n                var opts = this._opts;\r\n                width != null && (opts.width = width);\r\n                height != null && (opts.height = height);\r\n                width = this._getSize(0);\r\n                height = this._getSize(1);\r\n                domRoot.style.display = '';\r\n                if (this._width !== width || height !== this._height) {\r\n                    domRoot.style.width = width + 'px';\r\n                    domRoot.style.height = height + 'px';\r\n                    for (var id in this._layers) {\r\n                        if (this._layers.hasOwnProperty(id)) {\r\n                            this._layers[id].resize(width, height);\r\n                        }\r\n                    }\r\n                    this.refresh(true);\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.clearLayer = function (zlevel) {\r\n            var layer = this._layers[zlevel];\r\n            if (layer) {\r\n                layer.clear();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.dispose = function () {\r\n            this.root.innerHTML = '';\r\n            this.root =\r\n                this.storage =\r\n                    this._domRoot =\r\n                        this._layers = null;\r\n        };\r\n        CanvasPainter.prototype.getRenderedCanvas = function (opts) {\r\n            opts = opts || {};\r\n            if (this._singleCanvas && !this._compositeManually) {\r\n                return this._layers[CANVAS_ZLEVEL].dom;\r\n            }\r\n            var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\r\n            var ctx = imageLayer.ctx;\r\n            imageLayer.initContext();\r\n            imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\r\n            if (opts.pixelRatio <= this.dpr) {\r\n                this.refresh();\r\n                var width_1 = imageLayer.dom.width;\r\n                var height_1 = imageLayer.dom.height;\r\n                var ctx_1 = imageLayer.ctx;\r\n                this.eachLayer(function (layer) {\r\n                    if (layer.__builtin__) {\r\n                        ctx_1.drawImage(layer.dom, 0, 0, width_1, height_1);\r\n                    }\r\n                    else if (layer.renderToCanvas) {\r\n                        imageLayer.ctx.save();\r\n                        layer.renderToCanvas(imageLayer.ctx);\r\n                        imageLayer.ctx.restore();\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var scope = {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                };\r\n                var displayList = this.storage.getDisplayList(true);\r\n                for (var i = 0, len = displayList.length; i < len; i++) {\r\n                    var el = displayList[i];\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            return imageLayer.dom;\r\n        };\r\n        CanvasPainter.prototype.getWidth = function () {\r\n            return this._width;\r\n        };\r\n        CanvasPainter.prototype.getHeight = function () {\r\n            return this._height;\r\n        };\r\n        CanvasPainter.prototype._getSize = function (whIdx) {\r\n            var opts = this._opts;\r\n            var wh = ['width', 'height'][whIdx];\r\n            var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n            var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n            var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n            if (opts[wh] != null && opts[wh] !== 'auto') {\r\n                return parseFloat(opts[wh]);\r\n            }\r\n            var root = this.root;\r\n            var stl = document.defaultView.getComputedStyle(root);\r\n            return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\r\n                - (parseInt10(stl[plt]) || 0)\r\n                - (parseInt10(stl[prb]) || 0)) | 0;\r\n        };\r\n        CanvasPainter.prototype.pathToImage = function (path, dpr) {\r\n            dpr = dpr || this.dpr;\r\n            var canvas = document.createElement('canvas');\r\n            var ctx = canvas.getContext('2d');\r\n            var rect = path.getBoundingRect();\r\n            var style = path.style;\r\n            var shadowBlurSize = style.shadowBlur * dpr;\r\n            var shadowOffsetX = style.shadowOffsetX * dpr;\r\n            var shadowOffsetY = style.shadowOffsetY * dpr;\r\n            var lineWidth = path.hasStroke() ? style.lineWidth : 0;\r\n            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\r\n            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\r\n            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\r\n            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\r\n            var width = rect.width + leftMargin + rightMargin;\r\n            var height = rect.height + topMargin + bottomMargin;\r\n            canvas.width = width * dpr;\r\n            canvas.height = height * dpr;\r\n            ctx.scale(dpr, dpr);\r\n            ctx.clearRect(0, 0, width, height);\r\n            ctx.dpr = dpr;\r\n            var pathTransform = {\r\n                x: path.x,\r\n                y: path.y,\r\n                scaleX: path.scaleX,\r\n                scaleY: path.scaleY,\r\n                rotation: path.rotation,\r\n                originX: path.originX,\r\n                originY: path.originY\r\n            };\r\n            path.x = leftMargin - rect.x;\r\n            path.y = topMargin - rect.y;\r\n            path.rotation = 0;\r\n            path.scaleX = 1;\r\n            path.scaleY = 1;\r\n            path.updateTransform();\r\n            if (path) {\r\n                brush(ctx, path, {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                }, true);\r\n            }\r\n            var imgShape = new ZRImage({\r\n                style: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    image: canvas\r\n                }\r\n            });\r\n            extend(path, pathTransform);\r\n            return imgShape;\r\n        };\r\n        return CanvasPainter;\r\n    }());\n\n    registerPainter('canvas', CanvasPainter);\n\n    function findEventDispatcher(target, det, returnFirstMatch) {\r\n        var found;\r\n        while (target) {\r\n            if (det(target)) {\r\n                found = target;\r\n                if (returnFirstMatch) {\r\n                    break;\r\n                }\r\n            }\r\n            target = target.__hostTarget || target.parent;\r\n        }\r\n        return found;\r\n    }\n\n    var wmUniqueIndex = Math.round(Math.random() * 9);\r\n    var WeakMap = (function () {\r\n        function WeakMap() {\r\n            this._id = '__ec_inner_' + wmUniqueIndex++;\r\n        }\r\n        WeakMap.prototype.get = function (key) {\r\n            return this._guard(key)[this._id];\r\n        };\r\n        WeakMap.prototype.set = function (key, value) {\r\n            var target = this._guard(key);\r\n            if (typeof Object.defineProperty === 'function') {\r\n                Object.defineProperty(target, this._id, {\r\n                    value: value,\r\n                    enumerable: false,\r\n                    configurable: true\r\n                });\r\n            }\r\n            else {\r\n                target[this._id] = value;\r\n            }\r\n            return this;\r\n        };\r\n        WeakMap.prototype[\"delete\"] = function (key) {\r\n            if (this.has(key)) {\r\n                delete this._guard(key)[this._id];\r\n                return true;\r\n            }\r\n            return false;\r\n        };\r\n        WeakMap.prototype.has = function (key) {\r\n            return !!this._guard(key)[this._id];\r\n        };\r\n        WeakMap.prototype._guard = function (key) {\r\n            if (key !== Object(key)) {\r\n                throw TypeError('Value of WeakMap is not a non-null object.');\r\n            }\r\n            return key;\r\n        };\r\n        return WeakMap;\r\n    }());\n\n    var Triangle = Path.extend({\r\n        type: 'triangle',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy + height);\r\n            path.lineTo(cx - width, cy + height);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Diamond = Path.extend({\r\n        type: 'diamond',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy);\r\n            path.lineTo(cx, cy + height);\r\n            path.lineTo(cx - width, cy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Pin = Path.extend({\r\n        type: 'pin',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var w = shape.width / 5 * 3;\r\n            var h = Math.max(w, shape.height);\r\n            var r = w / 2;\r\n            var dy = r * r / (h - r);\r\n            var cy = y - h + r + dy;\r\n            var angle = Math.asin(dy / r);\r\n            var dx = Math.cos(angle) * r;\r\n            var tanX = Math.sin(angle);\r\n            var tanY = Math.cos(angle);\r\n            var cpLen = r * 0.6;\r\n            var cpLen2 = r * 0.7;\r\n            path.moveTo(x - dx, cy + dy);\r\n            path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\r\n            path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\r\n            path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Arrow = Path.extend({\r\n        type: 'arrow',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (ctx, shape) {\r\n            var height = shape.height;\r\n            var width = shape.width;\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var dx = width / 3 * 2;\r\n            ctx.moveTo(x, y);\r\n            ctx.lineTo(x + dx, y + height);\r\n            ctx.lineTo(x, y + height / 4 * 3);\r\n            ctx.lineTo(x - dx, y + height);\r\n            ctx.lineTo(x, y);\r\n            ctx.closePath();\r\n        }\r\n    });\r\n    var symbolCtors = {\r\n        line: Rect,\r\n        rect: Rect,\r\n        roundRect: Rect,\r\n        square: Rect,\r\n        circle: Circle,\r\n        diamond: Diamond,\r\n        pin: Pin,\r\n        arrow: Arrow,\r\n        triangle: Triangle\r\n    };\r\n    var symbolShapeMakers = {\r\n        line: function (x, y, w, h, shape) {\r\n            var thickness = 2;\r\n            shape.x = x;\r\n            shape.y = y + h / 2 - thickness / 2;\r\n            shape.width = w;\r\n            shape.height = thickness;\r\n        },\r\n        rect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        roundRect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n            shape.r = Math.min(w, h) / 4;\r\n        },\r\n        square: function (x, y, w, h, shape) {\r\n            var size = Math.min(w, h);\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = size;\r\n            shape.height = size;\r\n        },\r\n        circle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.r = Math.min(w, h) / 2;\r\n        },\r\n        diamond: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        pin: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        arrow: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        triangle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        }\r\n    };\r\n    var symbolBuildProxies = {};\r\n    each(symbolCtors, function (Ctor, name) {\r\n        symbolBuildProxies[name] = new Ctor();\r\n    });\r\n    var SymbolClz = Path.extend({\r\n        type: 'symbol',\r\n        shape: {\r\n            symbolType: '',\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        calculateTextPosition: function (out, config, rect) {\r\n            var res = calculateTextPosition(out, config, rect);\r\n            var shape = this.shape;\r\n            if (shape && shape.symbolType === 'pin' && config.position === 'inside') {\r\n                res.y = rect.y + rect.height * 0.4;\r\n            }\r\n            return res;\r\n        },\r\n        buildPath: function (ctx, shape, inBundle) {\r\n            var symbolType = shape.symbolType;\r\n            if (symbolType !== 'none') {\r\n                var proxySymbol = symbolBuildProxies[symbolType];\r\n                if (!proxySymbol) {\r\n                    symbolType = 'rect';\r\n                    proxySymbol = symbolBuildProxies[symbolType];\r\n                }\r\n                symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\r\n                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\r\n            }\r\n        }\r\n    });\r\n    function symbolPathSetColor(color, innerColor) {\r\n        if (this.type !== 'image') {\r\n            var symbolStyle = this.style;\r\n            if (this.__isEmptyBrush) {\r\n                symbolStyle.stroke = color;\r\n                symbolStyle.fill = innerColor || '#fff';\r\n                symbolStyle.lineWidth = 2;\r\n            }\r\n            else {\r\n                symbolStyle.fill = color;\r\n            }\r\n            this.markRedraw();\r\n        }\r\n    }\r\n    function createSymbol(symbolType, x, y, w, h, color, keepAspect) {\r\n        var isEmpty = symbolType.indexOf('empty') === 0;\r\n        if (isEmpty) {\r\n            symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\r\n        }\r\n        var symbolPath;\r\n        if (symbolType.indexOf('image://') === 0) {\r\n            symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else if (symbolType.indexOf('path://') === 0) {\r\n            symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else {\r\n            symbolPath = new SymbolClz({\r\n                shape: {\r\n                    symbolType: symbolType,\r\n                    x: x,\r\n                    y: y,\r\n                    width: w,\r\n                    height: h\r\n                }\r\n            });\r\n        }\r\n        symbolPath.__isEmptyBrush = isEmpty;\r\n        symbolPath.setColor = symbolPathSetColor;\r\n        if (color) {\r\n            symbolPath.setColor(color);\r\n        }\r\n        return symbolPath;\r\n    }\n\n    var decalMap = new WeakMap();\r\n    var decalCache = new LRU(100);\r\n    var decalKeys = [\r\n        'symbol', 'symbolSize', 'symbolKeepAspect',\r\n        'color', 'backgroundColor',\r\n        'dashArrayX', 'dashArrayY', 'dashLineOffset',\r\n        'maxTileWidth', 'maxTileHeight'\r\n    ];\r\n    function createOrUpdatePatternFromDecal(decalObject, api) {\r\n        if (decalObject === 'none') {\r\n            return null;\r\n        }\r\n        var dpr = api.getDevicePixelRatio();\r\n        var zr = api.getZr();\r\n        var isSVG = zr.painter.type === 'svg';\r\n        if (decalObject.dirty) {\r\n            decalMap[\"delete\"](decalObject);\r\n        }\r\n        var oldPattern = decalMap.get(decalObject);\r\n        if (oldPattern) {\r\n            return oldPattern;\r\n        }\r\n        var decalOpt = defaults(decalObject, {\r\n            symbol: 'rect',\r\n            symbolSize: 1,\r\n            symbolKeepAspect: true,\r\n            color: 'rgba(0, 0, 0, 0.2)',\r\n            backgroundColor: null,\r\n            dashArrayX: 5,\r\n            dashArrayY: 5,\r\n            dashLineOffset: 0,\r\n            rotation: 0,\r\n            maxTileWidth: 512,\r\n            maxTileHeight: 512\r\n        });\r\n        if (decalOpt.backgroundColor === 'none') {\r\n            decalOpt.backgroundColor = null;\r\n        }\r\n        var pattern = { repeat: 'repeat' };\r\n        setPatternnSource(pattern);\r\n        pattern.rotation = decalOpt.rotation;\r\n        pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\r\n        decalMap.set(decalObject, pattern);\r\n        decalObject.dirty = false;\r\n        return pattern;\r\n        function setPatternnSource(pattern) {\r\n            var keys = [dpr];\r\n            var isValidKey = true;\r\n            for (var i = 0; i < decalKeys.length; ++i) {\r\n                var value = decalOpt[decalKeys[i]];\r\n                var valueType = typeof value;\r\n                if (value != null\r\n                    && !isArray(value)\r\n                    && valueType !== 'string'\r\n                    && valueType !== 'number'\r\n                    && valueType !== 'boolean') {\r\n                    isValidKey = false;\r\n                    break;\r\n                }\r\n                keys.push(value);\r\n            }\r\n            var cacheKey;\r\n            if (isValidKey) {\r\n                cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\r\n                var cache = decalCache.get(cacheKey);\r\n                if (cache) {\r\n                    isSVG ? pattern.svgElement = cache\r\n                        : pattern.image = cache;\r\n                }\r\n            }\r\n            var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\r\n            var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\r\n            var symbolArray = normalizeSymbolArray(decalOpt.symbol);\r\n            var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\r\n            var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\r\n            var canvas = !isSVG && createCanvas();\r\n            var svgRoot = isSVG && zr.painter.createSVGElement('g');\r\n            var pSize = getPatternSize();\r\n            var ctx;\r\n            if (canvas) {\r\n                canvas.width = pSize.width * dpr;\r\n                canvas.height = pSize.height * dpr;\r\n                ctx = canvas.getContext('2d');\r\n            }\r\n            brushDecal();\r\n            if (isValidKey) {\r\n                decalCache.put(cacheKey, canvas || svgRoot);\r\n            }\r\n            pattern.image = canvas;\r\n            pattern.svgElement = svgRoot;\r\n            pattern.svgWidth = pSize.width;\r\n            pattern.svgHeight = pSize.height;\r\n            function getPatternSize() {\r\n                var width = 1;\r\n                for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\r\n                    width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\r\n                }\r\n                var symbolRepeats = 1;\r\n                for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\r\n                    symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\r\n                }\r\n                width *= symbolRepeats;\r\n                var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\r\n                if (__DEV__) {\r\n                    var warn = function (attrName) {\r\n                        console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\r\n                    };\r\n                    if (width > decalOpt.maxTileWidth) {\r\n                        warn('maxTileWidth');\r\n                    }\r\n                    if (height > decalOpt.maxTileHeight) {\r\n                        warn('maxTileHeight');\r\n                    }\r\n                }\r\n                return {\r\n                    width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\r\n                    height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\r\n                };\r\n            }\r\n            function brushDecal() {\r\n                if (ctx) {\r\n                    ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n                    if (decalOpt.backgroundColor) {\r\n                        ctx.fillStyle = decalOpt.backgroundColor;\r\n                        ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n                    }\r\n                }\r\n                var ySum = 0;\r\n                for (var i = 0; i < dashArrayY.length; ++i) {\r\n                    ySum += dashArrayY[i];\r\n                }\r\n                if (ySum <= 0) {\r\n                    return;\r\n                }\r\n                var y = -lineBlockLengthY;\r\n                var yId = 0;\r\n                var yIdTotal = 0;\r\n                var xId0 = 0;\r\n                while (y < pSize.height) {\r\n                    if (yId % 2 === 0) {\r\n                        var symbolYId = (yIdTotal / 2) % symbolArray.length;\r\n                        var x = 0;\r\n                        var xId1 = 0;\r\n                        var xId1Total = 0;\r\n                        while (x < pSize.width * 2) {\r\n                            var xSum = 0;\r\n                            for (var i = 0; i < dashArrayX[xId0].length; ++i) {\r\n                                xSum += dashArrayX[xId0][i];\r\n                            }\r\n                            if (xSum <= 0) {\r\n                                break;\r\n                            }\r\n                            if (xId1 % 2 === 0) {\r\n                                var size = (1 - decalOpt.symbolSize) * 0.5;\r\n                                var left = x + dashArrayX[xId0][xId1] * size;\r\n                                var top_1 = y + dashArrayY[yId] * size;\r\n                                var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\r\n                                var height = dashArrayY[yId] * decalOpt.symbolSize;\r\n                                var symbolXId = (xId1Total / 2) % symbolArray[symbolYId].length;\r\n                                brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\r\n                            }\r\n                            x += dashArrayX[xId0][xId1];\r\n                            ++xId1Total;\r\n                            ++xId1;\r\n                            if (xId1 === dashArrayX[xId0].length) {\r\n                                xId1 = 0;\r\n                            }\r\n                        }\r\n                        ++xId0;\r\n                        if (xId0 === dashArrayX.length) {\r\n                            xId0 = 0;\r\n                        }\r\n                    }\r\n                    y += dashArrayY[yId];\r\n                    ++yIdTotal;\r\n                    ++yId;\r\n                    if (yId === dashArrayY.length) {\r\n                        yId = 0;\r\n                    }\r\n                }\r\n                function brushSymbol(x, y, width, height, symbolType) {\r\n                    var scale = isSVG ? 1 : dpr;\r\n                    var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\r\n                    if (isSVG) {\r\n                        svgRoot.appendChild(zr.painter.paintOne(symbol));\r\n                    }\r\n                    else {\r\n                        brushSingle(ctx, symbol);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function normalizeSymbolArray(symbol) {\r\n        if (!symbol || symbol.length === 0) {\r\n            return [['rect']];\r\n        }\r\n        if (typeof symbol === 'string') {\r\n            return [[symbol]];\r\n        }\r\n        var isAllString = true;\r\n        for (var i = 0; i < symbol.length; ++i) {\r\n            if (typeof symbol[i] !== 'string') {\r\n                isAllString = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isAllString) {\r\n            return normalizeSymbolArray([symbol]);\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < symbol.length; ++i) {\r\n            if (typeof symbol[i] === 'string') {\r\n                result.push([symbol[i]]);\r\n            }\r\n            else {\r\n                result.push(symbol[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function normalizeDashArrayX(dash) {\r\n        if (!dash || dash.length === 0) {\r\n            return [[0, 0]];\r\n        }\r\n        if (typeof dash === 'number') {\r\n            var dashValue = Math.ceil(dash);\r\n            return [[dashValue, dashValue]];\r\n        }\r\n        var isAllNumber = true;\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            if (typeof dash[i] !== 'number') {\r\n                isAllNumber = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isAllNumber) {\r\n            return normalizeDashArrayX([dash]);\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            if (typeof dash[i] === 'number') {\r\n                var dashValue = Math.ceil(dash[i]);\r\n                result.push([dashValue, dashValue]);\r\n            }\r\n            else {\r\n                var dashValue = map(dash[i], function (n) { return Math.ceil(n); });\r\n                if (dashValue.length % 2 === 1) {\r\n                    result.push(dashValue.concat(dashValue));\r\n                }\r\n                else {\r\n                    result.push(dashValue);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function normalizeDashArrayY(dash) {\r\n        if (!dash || typeof dash === 'object' && dash.length === 0) {\r\n            return [0, 0];\r\n        }\r\n        if (typeof dash === 'number') {\r\n            var dashValue_1 = Math.ceil(dash);\r\n            return [dashValue_1, dashValue_1];\r\n        }\r\n        var dashValue = map(dash, function (n) { return Math.ceil(n); });\r\n        return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\r\n    }\r\n    function getLineBlockLengthX(dash) {\r\n        return map(dash, function (line) {\r\n            return getLineBlockLengthY(line);\r\n        });\r\n    }\r\n    function getLineBlockLengthY(dash) {\r\n        var blockLength = 0;\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            blockLength += dash[i];\r\n        }\r\n        if (dash.length % 2 === 1) {\r\n            return blockLength * 2;\r\n        }\r\n        return blockLength;\r\n    }\n\n    function decalVisual(ecModel, api) {\r\n        ecModel.eachRawSeries(function (seriesModel) {\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            if (data.hasItemVisual()) {\r\n                data.each(function (idx) {\r\n                    var decal = data.getItemVisual(idx, 'decal');\r\n                    if (decal) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n                    }\r\n                });\r\n            }\r\n            var decal = data.getVisual('decal');\r\n            if (decal) {\r\n                var style = data.getVisual('style');\r\n                style.decal = createOrUpdatePatternFromDecal(decal, api);\r\n            }\r\n        });\r\n    }\n\n    var assert$1 = assert;\r\n    var each$3 = each;\r\n    var isFunction$1 = isFunction;\r\n    var isObject$2 = isObject;\r\n    var version$1 = '5.0.0';\r\n    var dependencies = {\r\n        zrender: '5.0.1'\r\n    };\r\n    var TEST_FRAME_REMAIN_TIME = 1;\r\n    var PRIORITY_PROCESSOR_SERIES_FILTER = 800;\r\n    var PRIORITY_PROCESSOR_DATASTACK = 900;\r\n    var PRIORITY_PROCESSOR_FILTER = 1000;\r\n    var PRIORITY_PROCESSOR_DEFAULT = 2000;\r\n    var PRIORITY_PROCESSOR_STATISTIC = 5000;\r\n    var PRIORITY_VISUAL_LAYOUT = 1000;\r\n    var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\r\n    var PRIORITY_VISUAL_GLOBAL = 2000;\r\n    var PRIORITY_VISUAL_CHART = 3000;\r\n    var PRIORITY_VISUAL_COMPONENT = 4000;\r\n    var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;\r\n    var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\r\n    var PRIORITY_VISUAL_BRUSH = 5000;\r\n    var PRIORITY_VISUAL_ARIA = 6000;\r\n    var PRIORITY_VISUAL_DECAL = 7000;\r\n    var PRIORITY = {\r\n        PROCESSOR: {\r\n            FILTER: PRIORITY_PROCESSOR_FILTER,\r\n            SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\r\n            STATISTIC: PRIORITY_PROCESSOR_STATISTIC\r\n        },\r\n        VISUAL: {\r\n            LAYOUT: PRIORITY_VISUAL_LAYOUT,\r\n            PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\r\n            GLOBAL: PRIORITY_VISUAL_GLOBAL,\r\n            CHART: PRIORITY_VISUAL_CHART,\r\n            POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\r\n            COMPONENT: PRIORITY_VISUAL_COMPONENT,\r\n            BRUSH: PRIORITY_VISUAL_BRUSH,\r\n            CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\r\n            ARIA: PRIORITY_VISUAL_ARIA,\r\n            DECAL: PRIORITY_VISUAL_DECAL\r\n        }\r\n    };\r\n    var IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\r\n    var OPTION_UPDATED_KEY = '__optionUpdated';\r\n    var STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\r\n    var ACTION_REG = /^[a-zA-Z0-9_]+$/;\r\n    var CONNECT_STATUS_KEY = '__connectUpdateStatus';\r\n    var CONNECT_STATUS_PENDING = 0;\r\n    var CONNECT_STATUS_UPDATING = 1;\r\n    var CONNECT_STATUS_UPDATED = 2;\r\n    function createRegisterEventWithLowercaseECharts(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.isDisposed()) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function createRegisterEventWithLowercaseMessageCenter(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function toLowercaseNameAndCallEventful(host, method, args) {\r\n        args[0] = args[0] && args[0].toLowerCase();\r\n        return Eventful.prototype[method].apply(host, args);\r\n    }\r\n    var MessageCenter = (function (_super) {\r\n        __extends(MessageCenter, _super);\r\n        function MessageCenter() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return MessageCenter;\r\n    }(Eventful));\r\n    var messageCenterProto = MessageCenter.prototype;\r\n    messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\r\n    messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off');\r\n    var prepare;\r\n    var prepareView;\r\n    var updateDirectly;\r\n    var updateMethods;\r\n    var doConvertPixel;\r\n    var updateStreamModes;\r\n    var doDispatchAction;\r\n    var flushPendingActions;\r\n    var triggerUpdatedEvent;\r\n    var bindRenderedEvent;\r\n    var bindMouseEvent;\r\n    var clearColorPalette;\r\n    var render;\r\n    var renderComponents;\r\n    var renderSeries;\r\n    var performPostUpdateFuncs;\r\n    var createExtensionAPI;\r\n    var enableConnect;\r\n    var setTransitionOpt;\r\n    var markStatusToUpdate;\r\n    var applyChangedStates;\r\n    var ECharts = (function (_super) {\r\n        __extends(ECharts, _super);\r\n        function ECharts(dom, theme, opts) {\r\n            var _this = _super.call(this, new ECEventProcessor()) || this;\r\n            _this._chartsViews = [];\r\n            _this._chartsMap = {};\r\n            _this._componentsViews = [];\r\n            _this._componentsMap = {};\r\n            _this._pendingActions = [];\r\n            opts = opts || {};\r\n            if (typeof theme === 'string') {\r\n                theme = themeStorage[theme];\r\n            }\r\n            _this._dom = dom;\r\n            var root = (typeof window === 'undefined' ? global : window);\r\n            var defaultRenderer = 'canvas';\r\n            var defaultUseDirtyRect = false;\r\n            if (__DEV__) {\r\n                defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\r\n                var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\r\n                defaultUseDirtyRect = devUseDirtyRect == null\r\n                    ? defaultUseDirtyRect\r\n                    : devUseDirtyRect;\r\n            }\r\n            var zr = _this._zr = init(dom, {\r\n                renderer: opts.renderer || defaultRenderer,\r\n                devicePixelRatio: opts.devicePixelRatio,\r\n                width: opts.width,\r\n                height: opts.height,\r\n                useDirtyRect: opts.useDirtyRect == null ? defaultUseDirtyRect : opts.useDirtyRect\r\n            });\r\n            _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\r\n            theme = clone(theme);\r\n            theme && globalBackwardCompat(theme, true);\r\n            _this._theme = theme;\r\n            _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\r\n            _this._coordSysMgr = new CoordinateSystemManager();\r\n            var api = _this._api = createExtensionAPI(_this);\r\n            function prioritySortFunc(a, b) {\r\n                return a.__prio - b.__prio;\r\n            }\r\n            sort(visualFuncs, prioritySortFunc);\r\n            sort(dataProcessorFuncs, prioritySortFunc);\r\n            _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\r\n            _this._messageCenter = new MessageCenter();\r\n            _this._labelManager = new LabelManager();\r\n            _this._initEvents();\r\n            _this.resize = bind(_this.resize, _this);\r\n            zr.animation.on('frame', _this._onframe, _this);\r\n            bindRenderedEvent(zr, _this);\r\n            bindMouseEvent(zr, _this);\r\n            setAsPrimitive(_this);\r\n            return _this;\r\n        }\r\n        ECharts.prototype._onframe = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            applyChangedStates(this);\r\n            var scheduler = this._scheduler;\r\n            if (this[OPTION_UPDATED_KEY]) {\r\n                var silent = this[OPTION_UPDATED_KEY].silent;\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n            else if (scheduler.unfinished) {\r\n                var remainTime = TEST_FRAME_REMAIN_TIME;\r\n                var ecModel = this._model;\r\n                var api = this._api;\r\n                scheduler.unfinished = false;\r\n                do {\r\n                    var startTime = +new Date();\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    scheduler.performDataProcessorTasks(ecModel);\r\n                    updateStreamModes(this, ecModel);\r\n                    scheduler.performVisualTasks(ecModel);\r\n                    renderSeries(this, this._model, api, 'remain');\r\n                    remainTime -= (+new Date() - startTime);\r\n                } while (remainTime > 0 && scheduler.unfinished);\r\n                if (!scheduler.unfinished) {\r\n                    this._zr.flush();\r\n                }\r\n            }\r\n        };\r\n        ECharts.prototype.getDom = function () {\r\n            return this._dom;\r\n        };\r\n        ECharts.prototype.getId = function () {\r\n            return this.id;\r\n        };\r\n        ECharts.prototype.getZr = function () {\r\n            return this._zr;\r\n        };\r\n        ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`setOption` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var silent;\r\n            var replaceMerge;\r\n            var transitionOpt;\r\n            if (isObject$2(notMerge)) {\r\n                lazyUpdate = notMerge.lazyUpdate;\r\n                silent = notMerge.silent;\r\n                replaceMerge = notMerge.replaceMerge;\r\n                transitionOpt = notMerge.transition;\r\n                notMerge = notMerge.notMerge;\r\n            }\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            if (!this._model || notMerge) {\r\n                var optionManager = new OptionManager(this._api);\r\n                var theme = this._theme;\r\n                var ecModel = this._model = new GlobalModel();\r\n                ecModel.scheduler = this._scheduler;\r\n                ecModel.init(null, null, null, theme, this._locale, optionManager);\r\n            }\r\n            this._model.setOption(option, { replaceMerge: replaceMerge }, optionPreprocessorFuncs);\r\n            setTransitionOpt(this, transitionOpt);\r\n            if (lazyUpdate) {\r\n                this[OPTION_UPDATED_KEY] = { silent: silent };\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this.getZr().wakeUp();\r\n            }\r\n            else {\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n        };\r\n        ECharts.prototype.setTheme = function () {\r\n            console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\r\n        };\r\n        ECharts.prototype.getModel = function () {\r\n            return this._model;\r\n        };\r\n        ECharts.prototype.getOption = function () {\r\n            return this._model && this._model.getOption();\r\n        };\r\n        ECharts.prototype.getWidth = function () {\r\n            return this._zr.getWidth();\r\n        };\r\n        ECharts.prototype.getHeight = function () {\r\n            return this._zr.getHeight();\r\n        };\r\n        ECharts.prototype.getDevicePixelRatio = function () {\r\n            return this._zr.painter.dpr || window.devicePixelRatio || 1;\r\n        };\r\n        ECharts.prototype.getRenderedCanvas = function (opts) {\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            opts = extend({}, opts || {});\r\n            opts.pixelRatio = opts.pixelRatio || 1;\r\n            opts.backgroundColor = opts.backgroundColor\r\n                || this._model.get('backgroundColor');\r\n            var zr = this._zr;\r\n            return zr.painter.getRenderedCanvas(opts);\r\n        };\r\n        ECharts.prototype.getSvgDataURL = function () {\r\n            if (!env.svgSupported) {\r\n                return;\r\n            }\r\n            var zr = this._zr;\r\n            var list = zr.storage.getDisplayList();\r\n            each(list, function (el) {\r\n                el.stopAnimation(null, true);\r\n            });\r\n            return zr.painter.toDataURL();\r\n        };\r\n        ECharts.prototype.getDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            opts = opts || {};\r\n            var excludeComponents = opts.excludeComponents;\r\n            var ecModel = this._model;\r\n            var excludesComponentViews = [];\r\n            var self = this;\r\n            each$3(excludeComponents, function (componentType) {\r\n                ecModel.eachComponent({\r\n                    mainType: componentType\r\n                }, function (component) {\r\n                    var view = self._componentsMap[component.__viewId];\r\n                    if (!view.group.ignore) {\r\n                        excludesComponentViews.push(view);\r\n                        view.group.ignore = true;\r\n                    }\r\n                });\r\n            });\r\n            var url = this._zr.painter.getType() === 'svg'\r\n                ? this.getSvgDataURL()\r\n                : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\r\n            each$3(excludesComponentViews, function (view) {\r\n                view.group.ignore = false;\r\n            });\r\n            return url;\r\n        };\r\n        ECharts.prototype.getConnectedDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            var isSvg = opts.type === 'svg';\r\n            var groupId = this.group;\r\n            var mathMin = Math.min;\r\n            var mathMax = Math.max;\r\n            var MAX_NUMBER = Infinity;\r\n            if (connectedGroups[groupId]) {\r\n                var left_1 = MAX_NUMBER;\r\n                var top_1 = MAX_NUMBER;\r\n                var right_1 = -MAX_NUMBER;\r\n                var bottom_1 = -MAX_NUMBER;\r\n                var canvasList_1 = [];\r\n                var dpr_1 = (opts && opts.pixelRatio) || 1;\r\n                each(instances$1, function (chart, id) {\r\n                    if (chart.group === groupId) {\r\n                        var canvas = isSvg\r\n                            ? chart.getZr().painter.getSvgDom().innerHTML\r\n                            : chart.getRenderedCanvas(clone(opts));\r\n                        var boundingRect = chart.getDom().getBoundingClientRect();\r\n                        left_1 = mathMin(boundingRect.left, left_1);\r\n                        top_1 = mathMin(boundingRect.top, top_1);\r\n                        right_1 = mathMax(boundingRect.right, right_1);\r\n                        bottom_1 = mathMax(boundingRect.bottom, bottom_1);\r\n                        canvasList_1.push({\r\n                            dom: canvas,\r\n                            left: boundingRect.left,\r\n                            top: boundingRect.top\r\n                        });\r\n                    }\r\n                });\r\n                left_1 *= dpr_1;\r\n                top_1 *= dpr_1;\r\n                right_1 *= dpr_1;\r\n                bottom_1 *= dpr_1;\r\n                var width = right_1 - left_1;\r\n                var height = bottom_1 - top_1;\r\n                var targetCanvas = createCanvas();\r\n                var zr_1 = init(targetCanvas, {\r\n                    renderer: isSvg ? 'svg' : 'canvas'\r\n                });\r\n                zr_1.resize({\r\n                    width: width,\r\n                    height: height\r\n                });\r\n                if (isSvg) {\r\n                    var content_1 = '';\r\n                    each$3(canvasList_1, function (item) {\r\n                        var x = item.left - left_1;\r\n                        var y = item.top - top_1;\r\n                        content_1 += '<g transform=\"translate(' + x + ','\r\n                            + y + ')\">' + item.dom + '</g>';\r\n                    });\r\n                    zr_1.painter.getSvgRoot().innerHTML = content_1;\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\r\n                    }\r\n                    zr_1.refreshImmediately();\r\n                    return zr_1.painter.toDataURL();\r\n                }\r\n                else {\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.add(new Rect({\r\n                            shape: {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            },\r\n                            style: {\r\n                                fill: opts.connectedBackgroundColor\r\n                            }\r\n                        }));\r\n                    }\r\n                    each$3(canvasList_1, function (item) {\r\n                        var img = new ZRImage({\r\n                            style: {\r\n                                x: item.left * dpr_1 - left_1,\r\n                                y: item.top * dpr_1 - top_1,\r\n                                image: item.dom\r\n                            }\r\n                        });\r\n                        zr_1.add(img);\r\n                    });\r\n                    zr_1.refreshImmediately();\r\n                    return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\r\n                }\r\n            }\r\n            else {\r\n                return this.getDataURL(opts);\r\n            }\r\n        };\r\n        ECharts.prototype.convertToPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertToPixel', finder, value);\r\n        };\r\n        ECharts.prototype.convertFromPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertFromPixel', finder, value);\r\n        };\r\n        ECharts.prototype.containPixel = function (finder, value) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var ecModel = this._model;\r\n            var result;\r\n            var findResult = parseFinder(ecModel, finder);\r\n            each(findResult, function (models, key) {\r\n                key.indexOf('Models') >= 0 && each(models, function (model) {\r\n                    var coordSys = model.coordinateSystem;\r\n                    if (coordSys && coordSys.containPoint) {\r\n                        result = result || !!coordSys.containPoint(value);\r\n                    }\r\n                    else if (key === 'seriesModels') {\r\n                        var view = this._chartsMap[model.__viewId];\r\n                        if (view && view.containPoint) {\r\n                            result = result || view.containPoint(value, model);\r\n                        }\r\n                        else {\r\n                            if (__DEV__) {\r\n                                console.warn(key + ': ' + (view\r\n                                    ? 'The found component do not support containPoint.'\r\n                                    : 'No view mapping to the found component.'));\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (__DEV__) {\r\n                            console.warn(key + ': containPoint is not supported');\r\n                        }\r\n                    }\r\n                }, this);\r\n            }, this);\r\n            return !!result;\r\n        };\r\n        ECharts.prototype.getVisual = function (finder, visualType) {\r\n            var ecModel = this._model;\r\n            var parsedFinder = parseFinder(ecModel, finder, {\r\n                defaultMainType: 'series'\r\n            });\r\n            var seriesModel = parsedFinder.seriesModel;\r\n            if (__DEV__) {\r\n                if (!seriesModel) {\r\n                    console.warn('There is no specified seires model');\r\n                }\r\n            }\r\n            var data = seriesModel.getData();\r\n            var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside')\r\n                ? parsedFinder.dataIndexInside\r\n                : parsedFinder.hasOwnProperty('dataIndex')\r\n                    ? data.indexOfRawIndex(parsedFinder.dataIndex)\r\n                    : null;\r\n            return dataIndexInside != null\r\n                ? getItemVisualFromData(data, dataIndexInside, visualType)\r\n                : getVisualFromData(data, visualType);\r\n        };\r\n        ECharts.prototype.getViewOfComponentModel = function (componentModel) {\r\n            return this._componentsMap[componentModel.__viewId];\r\n        };\r\n        ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n            return this._chartsMap[seriesModel.__viewId];\r\n        };\r\n        ECharts.prototype._initEvents = function () {\r\n            var _this = this;\r\n            each$3(MOUSE_EVENT_NAMES, function (eveName) {\r\n                var handler = function (e) {\r\n                    var ecModel = _this.getModel();\r\n                    var el = e.target;\r\n                    var params;\r\n                    var isGlobalOut = eveName === 'globalout';\r\n                    if (isGlobalOut) {\r\n                        params = {};\r\n                    }\r\n                    else {\r\n                        el && findEventDispatcher(el, function (parent) {\r\n                            var ecData = getECData(parent);\r\n                            if (ecData && ecData.dataIndex != null) {\r\n                                var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n                                params = (dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {});\r\n                                return true;\r\n                            }\r\n                            else if (ecData.eventData) {\r\n                                params = extend({}, ecData.eventData);\r\n                                return true;\r\n                            }\r\n                        }, true);\r\n                    }\r\n                    if (params) {\r\n                        var componentType = params.componentType;\r\n                        var componentIndex = params.componentIndex;\r\n                        if (componentType === 'markLine'\r\n                            || componentType === 'markPoint'\r\n                            || componentType === 'markArea') {\r\n                            componentType = 'series';\r\n                            componentIndex = params.seriesIndex;\r\n                        }\r\n                        var model = componentType && componentIndex != null\r\n                            && ecModel.getComponent(componentType, componentIndex);\r\n                        var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\r\n                        if (__DEV__) {\r\n                            if (!isGlobalOut && !(model && view)) {\r\n                                console.warn('model or view can not be found by params');\r\n                            }\r\n                        }\r\n                        params.event = e;\r\n                        params.type = eveName;\r\n                        _this._$eventProcessor.eventInfo = {\r\n                            targetEl: el,\r\n                            packedEvent: params,\r\n                            model: model,\r\n                            view: view\r\n                        };\r\n                        _this.trigger(eveName, params);\r\n                    }\r\n                };\r\n                handler.zrEventfulCallAtLast = true;\r\n                _this._zr.on(eveName, handler, _this);\r\n            });\r\n            each$3(eventActionMap, function (actionType, eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            each$3(['selectchanged'], function (eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            handleLegacySelectEvents(this._messageCenter, this, this._model);\r\n        };\r\n        ECharts.prototype.isDisposed = function () {\r\n            return this._disposed;\r\n        };\r\n        ECharts.prototype.clear = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this.setOption({ series: [] }, true);\r\n        };\r\n        ECharts.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._disposed = true;\r\n            setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\r\n            var api = this._api;\r\n            var ecModel = this._model;\r\n            each$3(this._componentsViews, function (component) {\r\n                component.dispose(ecModel, api);\r\n            });\r\n            each$3(this._chartsViews, function (chart) {\r\n                chart.dispose(ecModel, api);\r\n            });\r\n            this._zr.dispose();\r\n            delete instances$1[this.id];\r\n        };\r\n        ECharts.prototype.resize = function (opts) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`resize` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._zr.resize(opts);\r\n            var ecModel = this._model;\r\n            this._loadingFX && this._loadingFX.resize();\r\n            if (!ecModel) {\r\n                return;\r\n            }\r\n            var optionChanged = ecModel.resetOption('media');\r\n            var silent = opts && opts.silent;\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            optionChanged && prepare(this);\r\n            updateMethods.update.call(this, {\r\n                type: 'resize',\r\n                animation: {\r\n                    duration: 0\r\n                }\r\n            });\r\n            this[IN_MAIN_PROCESS_KEY] = false;\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.showLoading = function (name, cfg) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (isObject$2(name)) {\r\n                cfg = name;\r\n                name = '';\r\n            }\r\n            name = name || 'default';\r\n            this.hideLoading();\r\n            if (!loadingEffects[name]) {\r\n                if (__DEV__) {\r\n                    console.warn('Loading effects ' + name + ' not exists.');\r\n                }\r\n                return;\r\n            }\r\n            var el = loadingEffects[name](this._api, cfg);\r\n            var zr = this._zr;\r\n            this._loadingFX = el;\r\n            zr.add(el);\r\n        };\r\n        ECharts.prototype.hideLoading = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._loadingFX && this._zr.remove(this._loadingFX);\r\n            this._loadingFX = null;\r\n        };\r\n        ECharts.prototype.makeActionFromEvent = function (eventObj) {\r\n            var payload = extend({}, eventObj);\r\n            payload.type = eventActionMap[eventObj.type];\r\n            return payload;\r\n        };\r\n        ECharts.prototype.dispatchAction = function (payload, opt) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!isObject$2(opt)) {\r\n                opt = { silent: !!opt };\r\n            }\r\n            if (!actions[payload.type]) {\r\n                return;\r\n            }\r\n            if (!this._model) {\r\n                return;\r\n            }\r\n            if (this[IN_MAIN_PROCESS_KEY]) {\r\n                this._pendingActions.push(payload);\r\n                return;\r\n            }\r\n            var silent = opt.silent;\r\n            doDispatchAction.call(this, payload, silent);\r\n            var flush = opt.flush;\r\n            if (flush) {\r\n                this._zr.flush();\r\n            }\r\n            else if (flush !== false && env.browser.weChat) {\r\n                this._throttledZrFlush();\r\n            }\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.updateLabelLayout = function () {\r\n            var labelManager = this._labelManager;\r\n            labelManager.updateLayoutConfig(this._api);\r\n            labelManager.layout(this._api);\r\n            labelManager.processLabelsOverall();\r\n        };\r\n        ECharts.prototype.appendData = function (params) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var seriesIndex = params.seriesIndex;\r\n            var ecModel = this.getModel();\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            if (__DEV__) {\r\n                assert$1(params.data && seriesModel);\r\n            }\r\n            seriesModel.appendData(params);\r\n            this._scheduler.unfinished = true;\r\n            this.getZr().wakeUp();\r\n        };\r\n        ECharts.internalField = (function () {\r\n            prepare = function (ecIns) {\r\n                var scheduler = ecIns._scheduler;\r\n                scheduler.restorePipelines(ecIns._model);\r\n                scheduler.prepareStageTasks();\r\n                prepareView(ecIns, true);\r\n                prepareView(ecIns, false);\r\n                scheduler.plan();\r\n            };\r\n            prepareView = function (ecIns, isComponent) {\r\n                var ecModel = ecIns._model;\r\n                var scheduler = ecIns._scheduler;\r\n                var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\r\n                var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\r\n                var zr = ecIns._zr;\r\n                var api = ecIns._api;\r\n                for (var i = 0; i < viewList.length; i++) {\r\n                    viewList[i].__alive = false;\r\n                }\r\n                isComponent\r\n                    ? ecModel.eachComponent(function (componentType, model) {\r\n                        componentType !== 'series' && doPrepare(model);\r\n                    })\r\n                    : ecModel.eachSeries(doPrepare);\r\n                function doPrepare(model) {\r\n                    var requireNewView = model.__requireNewView;\r\n                    model.__requireNewView = false;\r\n                    var viewId = '_ec_' + model.id + '_' + model.type;\r\n                    var view = !requireNewView && viewMap[viewId];\r\n                    if (!view) {\r\n                        var classType = parseClassType(model.type);\r\n                        var Clazz = isComponent\r\n                            ? ComponentView.getClass(classType.main, classType.sub)\r\n                            : (ChartView.getClass(classType.sub));\r\n                        if (__DEV__) {\r\n                            assert$1(Clazz, classType.sub + ' does not exist.');\r\n                        }\r\n                        view = new Clazz();\r\n                        view.init(ecModel, api);\r\n                        viewMap[viewId] = view;\r\n                        viewList.push(view);\r\n                        zr.add(view.group);\r\n                    }\r\n                    model.__viewId = view.__id = viewId;\r\n                    view.__alive = true;\r\n                    view.__model = model;\r\n                    view.group.__ecComponentInfo = {\r\n                        mainType: model.mainType,\r\n                        index: model.componentIndex\r\n                    };\r\n                    !isComponent && scheduler.prepareView(view, model, ecModel, api);\r\n                }\r\n                for (var i = 0; i < viewList.length;) {\r\n                    var view = viewList[i];\r\n                    if (!view.__alive) {\r\n                        !isComponent && view.renderTask.dispose();\r\n                        zr.remove(view.group);\r\n                        view.dispose(ecModel, api);\r\n                        viewList.splice(i, 1);\r\n                        if (viewMap[view.__id] === view) {\r\n                            delete viewMap[view.__id];\r\n                        }\r\n                        view.__id = view.group.__ecComponentInfo = null;\r\n                    }\r\n                    else {\r\n                        i++;\r\n                    }\r\n                }\r\n            };\r\n            updateDirectly = function (ecIns, method, payload, mainType, subType) {\r\n                var ecModel = ecIns._model;\r\n                ecModel.setUpdatePayload(payload);\r\n                if (!mainType) {\r\n                    each$3([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);\r\n                    return;\r\n                }\r\n                var query = {};\r\n                query[mainType + 'Id'] = payload[mainType + 'Id'];\r\n                query[mainType + 'Index'] = payload[mainType + 'Index'];\r\n                query[mainType + 'Name'] = payload[mainType + 'Name'];\r\n                var condition = { mainType: mainType, query: query };\r\n                subType && (condition.subType = subType);\r\n                var excludeSeriesId = payload.excludeSeriesId;\r\n                var excludeSeriesIdMap;\r\n                if (excludeSeriesId != null) {\r\n                    excludeSeriesIdMap = createHashMap();\r\n                    each$3(normalizeToArray(excludeSeriesId), function (id) {\r\n                        var modelId = convertOptionIdName(id, null);\r\n                        if (modelId != null) {\r\n                            excludeSeriesIdMap.set(modelId, true);\r\n                        }\r\n                    });\r\n                }\r\n                ecModel && ecModel.eachComponent(condition, function (model) {\r\n                    if (!excludeSeriesIdMap || excludeSeriesIdMap.get(model.id) == null) {\r\n                        if (isHighDownPayload(payload) && !payload.notBlur) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSeriesBlurStateFromPayload(model, payload, ecIns._api);\r\n                            }\r\n                        }\r\n                        else if (isSelectChangePayload(payload)) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSelectionFromPayload(model, payload, ecIns._api);\r\n                                updateSeriesElementSelection(model);\r\n                                markStatusToUpdate(ecIns);\r\n                            }\r\n                        }\r\n                        callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\r\n                    }\r\n                }, ecIns);\r\n                function callView(view) {\r\n                    view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\r\n                }\r\n            };\r\n            updateMethods = {\r\n                prepareAndUpdate: function (payload) {\r\n                    prepare(this);\r\n                    updateMethods.update.call(this, payload);\r\n                },\r\n                update: function (payload) {\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    var zr = this._zr;\r\n                    var coordSysMgr = this._coordSysMgr;\r\n                    var scheduler = this._scheduler;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    scheduler.restoreData(ecModel, payload);\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    coordSysMgr.create(ecModel, api);\r\n                    scheduler.performDataProcessorTasks(ecModel, payload);\r\n                    updateStreamModes(this, ecModel);\r\n                    coordSysMgr.update(ecModel, api);\r\n                    clearColorPalette(ecModel);\r\n                    scheduler.performVisualTasks(ecModel, payload);\r\n                    render(this, ecModel, api, payload);\r\n                    var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\r\n                    var darkMode = ecModel.get('darkMode');\r\n                    if (!env.canvasSupported) {\r\n                        var colorArr = parse(backgroundColor);\r\n                        backgroundColor = stringify(colorArr, 'rgb');\r\n                        if (colorArr[3] === 0) {\r\n                            backgroundColor = 'transparent';\r\n                        }\r\n                    }\r\n                    else {\r\n                        zr.setBackgroundColor(backgroundColor);\r\n                        if (darkMode != null && darkMode !== 'auto') {\r\n                            zr.setDarkMode(darkMode);\r\n                        }\r\n                    }\r\n                    performPostUpdateFuncs(ecModel, api);\r\n                },\r\n                updateTransform: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    var componentDirtyList = [];\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType === 'series') {\r\n                            return;\r\n                        }\r\n                        var componentView = _this.getViewOfComponentModel(componentModel);\r\n                        if (componentView && componentView.__alive) {\r\n                            if (componentView.updateTransform) {\r\n                                var result = componentView.updateTransform(componentModel, ecModel, api, payload);\r\n                                result && result.update && componentDirtyList.push(componentView);\r\n                            }\r\n                            else {\r\n                                componentDirtyList.push(componentView);\r\n                            }\r\n                        }\r\n                    });\r\n                    var seriesDirtyMap = createHashMap();\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.updateTransform) {\r\n                            var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\r\n                            result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                        else {\r\n                            seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                    });\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true, dirtyMap: seriesDirtyMap });\r\n                    renderSeries(this, ecModel, api, payload, seriesDirtyMap);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateView: function (payload) {\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ChartView.markUpdateMethod(payload, 'updateView');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true });\r\n                    render(this, this._model, this._api, payload);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateVisual: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        seriesModel.getData().clearAllVisual();\r\n                    });\r\n                    ChartView.markUpdateMethod(payload, 'updateVisual');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { visualType: 'visual', setDirty: true });\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType !== 'series') {\r\n                            var componentView = _this.getViewOfComponentModel(componentModel);\r\n                            componentView && componentView.__alive\r\n                                && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\r\n                        }\r\n                    });\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\r\n                    });\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateLayout: function (payload) {\r\n                    updateMethods.update.call(this, payload);\r\n                }\r\n            };\r\n            doConvertPixel = function (ecIns, methodName, finder, value) {\r\n                if (ecIns._disposed) {\r\n                    disposedWarning(ecIns.id);\r\n                    return;\r\n                }\r\n                var ecModel = ecIns._model;\r\n                var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\r\n                var result;\r\n                var parsedFinder = parseFinder(ecModel, finder);\r\n                for (var i = 0; i < coordSysList.length; i++) {\r\n                    var coordSys = coordSysList[i];\r\n                    if (coordSys[methodName]\r\n                        && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n                if (__DEV__) {\r\n                    console.warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\r\n                }\r\n            };\r\n            updateStreamModes = function (ecIns, ecModel) {\r\n                var chartsMap = ecIns._chartsMap;\r\n                var scheduler = ecIns._scheduler;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\r\n                });\r\n            };\r\n            doDispatchAction = function (payload, silent) {\r\n                var _this = this;\r\n                var ecModel = this.getModel();\r\n                var payloadType = payload.type;\r\n                var escapeConnect = payload.escapeConnect;\r\n                var actionWrap = actions[payloadType];\r\n                var actionInfo = actionWrap.actionInfo;\r\n                var cptTypeTmp = (actionInfo.update || 'update').split(':');\r\n                var updateMethod = cptTypeTmp.pop();\r\n                var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                var payloads = [payload];\r\n                var batched = false;\r\n                if (payload.batch) {\r\n                    batched = true;\r\n                    payloads = map(payload.batch, function (item) {\r\n                        item = defaults(extend({}, item), payload);\r\n                        item.batch = null;\r\n                        return item;\r\n                    });\r\n                }\r\n                var eventObjBatch = [];\r\n                var eventObj;\r\n                var isSelectChange = isSelectChangePayload(payload);\r\n                var isStatusChange = isHighDownPayload(payload) || isSelectChange;\r\n                each$3(payloads, function (batchItem) {\r\n                    eventObj = actionWrap.action(batchItem, _this._model, _this._api);\r\n                    eventObj = eventObj || extend({}, batchItem);\r\n                    eventObj.type = actionInfo.event || eventObj.type;\r\n                    eventObjBatch.push(eventObj);\r\n                    if (isStatusChange) {\r\n                        updateDirectly(_this, updateMethod, batchItem, 'series');\r\n                        markStatusToUpdate(_this);\r\n                    }\r\n                    else if (cptType) {\r\n                        updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\r\n                    }\r\n                });\r\n                if (updateMethod !== 'none' && !isStatusChange && !cptType) {\r\n                    if (this[OPTION_UPDATED_KEY]) {\r\n                        prepare(this);\r\n                        updateMethods.update.call(this, payload);\r\n                        this[OPTION_UPDATED_KEY] = false;\r\n                    }\r\n                    else {\r\n                        updateMethods[updateMethod].call(this, payload);\r\n                    }\r\n                }\r\n                if (batched) {\r\n                    eventObj = {\r\n                        type: actionInfo.event || payloadType,\r\n                        escapeConnect: escapeConnect,\r\n                        batch: eventObjBatch\r\n                    };\r\n                }\r\n                else {\r\n                    eventObj = eventObjBatch[0];\r\n                }\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                if (!silent) {\r\n                    var messageCenter = this._messageCenter;\r\n                    messageCenter.trigger(eventObj.type, eventObj);\r\n                    if (isSelectChange) {\r\n                        var newObj = {\r\n                            type: 'selectchanged',\r\n                            escapeConnect: escapeConnect,\r\n                            selected: getAllSelectedIndices(ecModel),\r\n                            isFromClick: payload.isFromClick || false,\r\n                            fromAction: payload.type,\r\n                            fromActionPayload: payload\r\n                        };\r\n                        messageCenter.trigger(newObj.type, newObj);\r\n                    }\r\n                }\r\n            };\r\n            flushPendingActions = function (silent) {\r\n                var pendingActions = this._pendingActions;\r\n                while (pendingActions.length) {\r\n                    var payload = pendingActions.shift();\r\n                    doDispatchAction.call(this, payload, silent);\r\n                }\r\n            };\r\n            triggerUpdatedEvent = function (silent) {\r\n                !silent && this.trigger('updated');\r\n            };\r\n            bindRenderedEvent = function (zr, ecIns) {\r\n                zr.on('rendered', function (params) {\r\n                    ecIns.trigger('rendered', params);\r\n                    if (zr.animation.isFinished()\r\n                        && !ecIns[OPTION_UPDATED_KEY]\r\n                        && !ecIns._scheduler.unfinished\r\n                        && !ecIns._pendingActions.length) {\r\n                        ecIns.trigger('finished');\r\n                    }\r\n                });\r\n            };\r\n            bindMouseEvent = function (zr, ecIns) {\r\n                zr.on('mouseover', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, true);\r\n                        enterEmphasisWhenMouseOver(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('mouseout', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, false);\r\n                        leaveEmphasisWhenMouseOut(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('click', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; }, true);\r\n                    if (dispatcher) {\r\n                        var actionType = dispatcher.selected ? 'unselect' : 'select';\r\n                        var ecData = getECData(dispatcher);\r\n                        ecIns._api.dispatchAction({\r\n                            type: actionType,\r\n                            dataType: ecData.dataType,\r\n                            dataIndexInside: ecData.dataIndex,\r\n                            seriesIndex: ecData.seriesIndex,\r\n                            isFromClick: true\r\n                        });\r\n                    }\r\n                });\r\n            };\r\n            clearColorPalette = function (ecModel) {\r\n                ecModel.clearColorPalette();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    seriesModel.clearColorPalette();\r\n                });\r\n            };\r\n            render = function (ecIns, ecModel, api, payload) {\r\n                renderComponents(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    chart.__alive = false;\r\n                });\r\n                renderSeries(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    if (!chart.__alive) {\r\n                        chart.remove(ecModel, api);\r\n                    }\r\n                });\r\n            };\r\n            renderComponents = function (ecIns, ecModel, api, payload, dirtyList) {\r\n                each$3(dirtyList || ecIns._componentsViews, function (componentView) {\r\n                    var componentModel = componentView.__model;\r\n                    clearStates(componentModel, componentView);\r\n                    componentView.render(componentModel, ecModel, api, payload);\r\n                    updateZ(componentModel, componentView);\r\n                    updateStates(componentModel, componentView);\r\n                });\r\n            };\r\n            renderSeries = function (ecIns, ecModel, api, payload, dirtyMap) {\r\n                var scheduler = ecIns._scheduler;\r\n                var labelManager = ecIns._labelManager;\r\n                labelManager.clearLabels();\r\n                var unfinished = false;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    chartView.__alive = true;\r\n                    var renderTask = chartView.renderTask;\r\n                    scheduler.updatePayload(renderTask, payload);\r\n                    clearStates(seriesModel, chartView);\r\n                    if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\r\n                        renderTask.dirty();\r\n                    }\r\n                    if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\r\n                        unfinished = true;\r\n                    }\r\n                    seriesModel.__transientTransitionOpt = null;\r\n                    chartView.group.silent = !!seriesModel.get('silent');\r\n                    updateBlend(seriesModel, chartView);\r\n                    updateSeriesElementSelection(seriesModel);\r\n                    labelManager.addLabelsOfSeries(chartView);\r\n                });\r\n                scheduler.unfinished = unfinished || scheduler.unfinished;\r\n                labelManager.updateLayoutConfig(api);\r\n                labelManager.layout(api);\r\n                labelManager.processLabelsOverall();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    updateZ(seriesModel, chartView);\r\n                    updateStates(seriesModel, chartView);\r\n                });\r\n                updateHoverLayerStatus(ecIns, ecModel);\r\n            };\r\n            performPostUpdateFuncs = function (ecModel, api) {\r\n                each$3(postUpdateFuncs, function (func) {\r\n                    func(ecModel, api);\r\n                });\r\n            };\r\n            markStatusToUpdate = function (ecIns) {\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = true;\r\n                ecIns.getZr().wakeUp();\r\n            };\r\n            applyChangedStates = function (ecIns) {\r\n                if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\r\n                    return;\r\n                }\r\n                ecIns.getZr().storage.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    applyElementStates(el);\r\n                });\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\r\n            };\r\n            function applyElementStates(el) {\r\n                var newStates = [];\r\n                var oldStates = el.currentStates;\r\n                for (var i = 0; i < oldStates.length; i++) {\r\n                    var stateName = oldStates[i];\r\n                    if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\r\n                        newStates.push(stateName);\r\n                    }\r\n                }\r\n                if (el.selected && el.states.select) {\r\n                    newStates.push('select');\r\n                }\r\n                if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\r\n                    newStates.push('emphasis');\r\n                }\r\n                else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\r\n                    newStates.push('blur');\r\n                }\r\n                el.useStates(newStates);\r\n            }\r\n            function updateHoverLayerStatus(ecIns, ecModel) {\r\n                var zr = ecIns._zr;\r\n                var storage = zr.storage;\r\n                var elCount = 0;\r\n                storage.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        elCount++;\r\n                    }\r\n                });\r\n                if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        if (seriesModel.preventUsingHoverLayer) {\r\n                            return;\r\n                        }\r\n                        var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.__alive) {\r\n                            chartView.group.traverse(function (el) {\r\n                                if (el.states.emphasis) {\r\n                                    el.states.emphasis.hoverLayer = true;\r\n                                }\r\n                            });\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function updateBlend(seriesModel, chartView) {\r\n                var blendMode = seriesModel.get('blendMode') || null;\r\n                if (__DEV__) {\r\n                    if (!env.canvasSupported && blendMode && blendMode !== 'source-over') {\r\n                        console.warn('Only canvas support blendMode');\r\n                    }\r\n                }\r\n                chartView.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        el.style.blend = blendMode;\r\n                    }\r\n                    if (el.eachPendingDisplayable) {\r\n                        el.eachPendingDisplayable(function (displayable) {\r\n                            displayable.style.blend = blendMode;\r\n                        });\r\n                    }\r\n                });\r\n            }\r\n            function updateZ(model, view) {\r\n                if (model.preventAutoZ) {\r\n                    return;\r\n                }\r\n                var z = model.get('z');\r\n                var zlevel = model.get('zlevel');\r\n                view.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        z != null && (el.z = z);\r\n                        zlevel != null && (el.zlevel = zlevel);\r\n                        var label = el.getTextContent();\r\n                        var labelLine = el.getTextGuideLine();\r\n                        if (label) {\r\n                            label.z = el.z;\r\n                            label.zlevel = el.zlevel;\r\n                            label.z2 = el.z2 + 2;\r\n                        }\r\n                        if (labelLine) {\r\n                            var showAbove = el.textGuideLineConfig && el.textGuideLineConfig.showAbove;\r\n                            labelLine.z = el.z;\r\n                            labelLine.zlevel = el.zlevel;\r\n                            labelLine.z2 = el.z2 + (showAbove ? 1 : -1);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            function clearStates(model, view) {\r\n                view.group.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    var textContent = el.getTextContent();\r\n                    var textGuide = el.getTextGuideLine();\r\n                    if (el.stateTransition) {\r\n                        el.stateTransition = null;\r\n                    }\r\n                    if (textContent && textContent.stateTransition) {\r\n                        textContent.stateTransition = null;\r\n                    }\r\n                    if (textGuide && textGuide.stateTransition) {\r\n                        textGuide.stateTransition = null;\r\n                    }\r\n                    if (el.hasState()) {\r\n                        el.prevStates = el.currentStates;\r\n                        el.clearStates();\r\n                    }\r\n                    else if (el.prevStates) {\r\n                        el.prevStates = null;\r\n                    }\r\n                });\r\n            }\r\n            function updateStates(model, view) {\r\n                var stateAnimationModel = model.getModel('stateAnimation');\r\n                var enableAnimation = model.isAnimationEnabled();\r\n                var duration = stateAnimationModel.get('duration');\r\n                var stateTransition = duration > 0 ? {\r\n                    duration: duration,\r\n                    delay: stateAnimationModel.get('delay'),\r\n                    easing: stateAnimationModel.get('easing')\r\n                } : null;\r\n                view.group.traverse(function (el) {\r\n                    if (el.states && el.states.emphasis) {\r\n                        if (isElementRemoved(el)) {\r\n                            return;\r\n                        }\r\n                        if (el instanceof Path) {\r\n                            savePathStates(el);\r\n                        }\r\n                        if (el.__dirty) {\r\n                            var prevStates = el.prevStates;\r\n                            if (prevStates) {\r\n                                el.useStates(prevStates);\r\n                            }\r\n                        }\r\n                        if (enableAnimation) {\r\n                            el.stateTransition = stateTransition;\r\n                            var textContent = el.getTextContent();\r\n                            var textGuide = el.getTextGuideLine();\r\n                            if (textContent) {\r\n                                textContent.stateTransition = stateTransition;\r\n                            }\r\n                            if (textGuide) {\r\n                                textGuide.stateTransition = stateTransition;\r\n                            }\r\n                        }\r\n                        if (el.__dirty) {\r\n                            applyElementStates(el);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            createExtensionAPI = function (ecIns) {\r\n                return new ((function (_super) {\r\n                    __extends(class_1, _super);\r\n                    function class_1() {\r\n                        return _super !== null && _super.apply(this, arguments) || this;\r\n                    }\r\n                    class_1.prototype.getCoordinateSystems = function () {\r\n                        return ecIns._coordSysMgr.getCoordinateSystems();\r\n                    };\r\n                    class_1.prototype.getComponentByElement = function (el) {\r\n                        while (el) {\r\n                            var modelInfo = el.__ecComponentInfo;\r\n                            if (modelInfo != null) {\r\n                                return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\r\n                            }\r\n                            el = el.parent;\r\n                        }\r\n                    };\r\n                    class_1.prototype.enterEmphasis = function (el, highlightDigit) {\r\n                        enterEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\r\n                        leaveEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterBlur = function (el) {\r\n                        enterBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveBlur = function (el) {\r\n                        leaveBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterSelect = function (el) {\r\n                        enterSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveSelect = function (el) {\r\n                        leaveSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.getModel = function () {\r\n                        return ecIns.getModel();\r\n                    };\r\n                    class_1.prototype.getViewOfComponentModel = function (componentModel) {\r\n                        return ecIns.getViewOfComponentModel(componentModel);\r\n                    };\r\n                    class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n                        return ecIns.getViewOfSeriesModel(seriesModel);\r\n                    };\r\n                    return class_1;\r\n                }(ExtensionAPI)))(ecIns);\r\n            };\r\n            enableConnect = function (chart) {\r\n                function updateConnectedChartsStatus(charts, status) {\r\n                    for (var i = 0; i < charts.length; i++) {\r\n                        var otherChart = charts[i];\r\n                        otherChart[CONNECT_STATUS_KEY] = status;\r\n                    }\r\n                }\r\n                each$3(eventActionMap, function (actionType, eventType) {\r\n                    chart._messageCenter.on(eventType, function (event) {\r\n                        if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\r\n                            if (event && event.escapeConnect) {\r\n                                return;\r\n                            }\r\n                            var action_1 = chart.makeActionFromEvent(event);\r\n                            var otherCharts_1 = [];\r\n                            each$3(instances$1, function (otherChart) {\r\n                                if (otherChart !== chart && otherChart.group === chart.group) {\r\n                                    otherCharts_1.push(otherChart);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\r\n                            each$3(otherCharts_1, function (otherChart) {\r\n                                if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\r\n                                    otherChart.dispatchAction(action_1);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n            setTransitionOpt = function (chart, transitionOpt) {\r\n                var ecModel = chart._model;\r\n                each(normalizeToArray(transitionOpt), function (transOpt) {\r\n                    var errMsg;\r\n                    var fromOpt = transOpt.from;\r\n                    var toOpt = transOpt.to;\r\n                    if (toOpt == null) {\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition.to` must be specified.';\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    var finderOpt = {\r\n                        includeMainTypes: ['series'],\r\n                        enableAll: false,\r\n                        enableNone: false\r\n                    };\r\n                    var fromResult = fromOpt ? parseFinder(ecModel, fromOpt, finderOpt) : null;\r\n                    var toResult = parseFinder(ecModel, toOpt, finderOpt);\r\n                    var toSeries = toResult.seriesModel;\r\n                    if (toSeries == null) {\r\n                        errMsg = '';\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition` is only supported on series.';\r\n                        }\r\n                    }\r\n                    if (fromResult && fromResult.seriesModel !== toSeries) {\r\n                        errMsg = '';\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition.from` and `transition.to` must be specified to the same series.';\r\n                        }\r\n                    }\r\n                    if (errMsg != null) {\r\n                        throwError(errMsg);\r\n                    }\r\n                    toSeries.__transientTransitionOpt = {\r\n                        from: fromOpt ? fromOpt.dimension : null,\r\n                        to: toOpt.dimension,\r\n                        dividingMethod: transOpt.dividingMethod\r\n                    };\r\n                });\r\n            };\r\n        })();\r\n        return ECharts;\r\n    }(Eventful));\r\n    var echartsProto = ECharts.prototype;\r\n    echartsProto.on = createRegisterEventWithLowercaseECharts('on');\r\n    echartsProto.off = createRegisterEventWithLowercaseECharts('off');\r\n    echartsProto.one = function (eventName, cb, ctx) {\r\n        var self = this;\r\n        deprecateLog('ECharts#one is deprecated.');\r\n        function wrapped() {\r\n            var args2 = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args2[_i] = arguments[_i];\r\n            }\r\n            cb && cb.apply && cb.apply(this, args2);\r\n            self.off(eventName, wrapped);\r\n        }\r\n        this.on.call(this, eventName, wrapped, ctx);\r\n    };\r\n    var MOUSE_EVENT_NAMES = [\r\n        'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove',\r\n        'mousedown', 'mouseup', 'globalout', 'contextmenu'\r\n    ];\r\n    function disposedWarning(id) {\r\n        if (__DEV__) {\r\n            console.warn('Instance ' + id + ' has been disposed');\r\n        }\r\n    }\r\n    var actions = {};\r\n    var eventActionMap = {};\r\n    var dataProcessorFuncs = [];\r\n    var optionPreprocessorFuncs = [];\r\n    var postInitFuncs = [];\r\n    var postUpdateFuncs = [];\r\n    var visualFuncs = [];\r\n    var themeStorage = {};\r\n    var loadingEffects = {};\r\n    var instances$1 = {};\r\n    var connectedGroups = {};\r\n    var idBase = +(new Date()) - 0;\r\n    var groupIdBase = +(new Date()) - 0;\r\n    var DOM_ATTRIBUTE_KEY = '_echarts_instance_';\r\n    function init$1(dom, theme, opts) {\r\n        if (__DEV__) {\r\n            if (!dom) {\r\n                throw new Error('Initialize failed: invalid dom.');\r\n            }\r\n        }\r\n        var existInstance = getInstanceByDom(dom);\r\n        if (existInstance) {\r\n            if (__DEV__) {\r\n                console.warn('There is a chart instance already initialized on the dom.');\r\n            }\r\n            return existInstance;\r\n        }\r\n        if (__DEV__) {\r\n            if (isDom(dom)\r\n                && dom.nodeName.toUpperCase() !== 'CANVAS'\r\n                && ((!dom.clientWidth && (!opts || opts.width == null))\r\n                    || (!dom.clientHeight && (!opts || opts.height == null)))) {\r\n                console.warn('Can\\'t get DOM width or height. Please check '\r\n                    + 'dom.clientWidth and dom.clientHeight. They should not be 0.'\r\n                    + 'For example, you may need to call this in the callback '\r\n                    + 'of window.onload.');\r\n            }\r\n        }\r\n        var chart = new ECharts(dom, theme, opts);\r\n        chart.id = 'ec_' + idBase++;\r\n        instances$1[chart.id] = chart;\r\n        setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\r\n        enableConnect(chart);\r\n        each$3(postInitFuncs, function (postInitFunc) {\r\n            postInitFunc(chart);\r\n        });\r\n        return chart;\r\n    }\r\n    function connect(groupId) {\r\n        if (isArray(groupId)) {\r\n            var charts = groupId;\r\n            groupId = null;\r\n            each$3(charts, function (chart) {\r\n                if (chart.group != null) {\r\n                    groupId = chart.group;\r\n                }\r\n            });\r\n            groupId = groupId || ('g_' + groupIdBase++);\r\n            each$3(charts, function (chart) {\r\n                chart.group = groupId;\r\n            });\r\n        }\r\n        connectedGroups[groupId] = true;\r\n        return groupId;\r\n    }\r\n    function disConnect(groupId) {\r\n        connectedGroups[groupId] = false;\r\n    }\r\n    var disconnect = disConnect;\r\n    function dispose$1(chart) {\r\n        if (typeof chart === 'string') {\r\n            chart = instances$1[chart];\r\n        }\r\n        else if (!(chart instanceof ECharts)) {\r\n            chart = getInstanceByDom(chart);\r\n        }\r\n        if ((chart instanceof ECharts) && !chart.isDisposed()) {\r\n            chart.dispose();\r\n        }\r\n    }\r\n    function getInstanceByDom(dom) {\r\n        return instances$1[getAttribute(dom, DOM_ATTRIBUTE_KEY)];\r\n    }\r\n    function getInstanceById(key) {\r\n        return instances$1[key];\r\n    }\r\n    function registerTheme(name, theme) {\r\n        themeStorage[name] = theme;\r\n    }\r\n    function registerPreprocessor(preprocessorFunc) {\r\n        optionPreprocessorFuncs.push(preprocessorFunc);\r\n    }\r\n    function registerProcessor(priority, processor) {\r\n        normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\r\n    }\r\n    function registerPostInit(postInitFunc) {\r\n        postInitFunc && postInitFuncs.push(postInitFunc);\r\n    }\r\n    function registerPostUpdate(postUpdateFunc) {\r\n        postUpdateFunc && postUpdateFuncs.push(postUpdateFunc);\r\n    }\r\n    function registerAction(actionInfo, eventName, action) {\r\n        if (typeof eventName === 'function') {\r\n            action = eventName;\r\n            eventName = '';\r\n        }\r\n        var actionType = isObject$2(actionInfo)\r\n            ? actionInfo.type\r\n            : ([actionInfo, actionInfo = {\r\n                    event: eventName\r\n                }][0]);\r\n        actionInfo.event = (actionInfo.event || actionType).toLowerCase();\r\n        eventName = actionInfo.event;\r\n        assert$1(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\r\n        if (!actions[actionType]) {\r\n            actions[actionType] = { action: action, actionInfo: actionInfo };\r\n        }\r\n        eventActionMap[eventName] = actionType;\r\n    }\r\n    function registerCoordinateSystem(type, coordSysCreator) {\r\n        CoordinateSystemManager.register(type, coordSysCreator);\r\n    }\r\n    function getCoordinateSystemDimensions(type) {\r\n        var coordSysCreator = CoordinateSystemManager.get(type);\r\n        if (coordSysCreator) {\r\n            return coordSysCreator.getDimensionsInfo\r\n                ? coordSysCreator.getDimensionsInfo()\r\n                : coordSysCreator.dimensions.slice();\r\n        }\r\n    }\r\n    function registerLayout(priority, layoutTask) {\r\n        normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\r\n    }\r\n    function registerVisual(priority, visualTask) {\r\n        normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\r\n    }\r\n    function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\r\n        if (isFunction$1(priority) || isObject$2(priority)) {\r\n            fn = priority;\r\n            priority = defaultPriority;\r\n        }\r\n        if (__DEV__) {\r\n            if (isNaN(priority) || priority == null) {\r\n                throw new Error('Illegal priority');\r\n            }\r\n            each$3(targetList, function (wrap) {\r\n                assert$1(wrap.__raw !== fn);\r\n            });\r\n        }\r\n        var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\r\n        stageHandler.__prio = priority;\r\n        stageHandler.__raw = fn;\r\n        targetList.push(stageHandler);\r\n    }\r\n    function registerLoading(name, loadingFx) {\r\n        loadingEffects[name] = loadingFx;\r\n    }\r\n    function extendComponentModel(proto) {\r\n        return ComponentModel.extend(proto);\r\n    }\r\n    function extendComponentView(proto) {\r\n        return ComponentView.extend(proto);\r\n    }\r\n    function extendSeriesModel(proto) {\r\n        return SeriesModel.extend(proto);\r\n    }\r\n    function extendChartView(proto) {\r\n        return ChartView.extend(proto);\r\n    }\r\n    function setCanvasCreator(creator) {\r\n        $override('createCanvas', creator);\r\n    }\r\n    function registerMap(mapName, geoJson, specialAreas) {\r\n        mapDataStorage.registerMap(mapName, geoJson, specialAreas);\r\n    }\r\n    function getMap(mapName) {\r\n        var records = mapDataStorage.retrieveMap(mapName);\r\n        return records && records[0] && {\r\n            geoJson: records[0].geoJSON,\r\n            specialAreas: records[0].specialAreas\r\n        };\r\n    }\r\n    var registerTransform = registerExternalTransform;\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_DECAL, decalVisual);\r\n    registerPreprocessor(globalBackwardCompat);\r\n    registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\r\n    registerLoading('default', defaultLoading);\r\n    registerAction({\r\n        type: HIGHLIGHT_ACTION_TYPE,\r\n        event: HIGHLIGHT_ACTION_TYPE,\r\n        update: HIGHLIGHT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: DOWNPLAY_ACTION_TYPE,\r\n        event: DOWNPLAY_ACTION_TYPE,\r\n        update: DOWNPLAY_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: SELECT_ACTION_TYPE,\r\n        event: SELECT_ACTION_TYPE,\r\n        update: SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: UNSELECT_ACTION_TYPE,\r\n        event: UNSELECT_ACTION_TYPE,\r\n        update: UNSELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: TOGGLE_SELECT_ACTION_TYPE,\r\n        event: TOGGLE_SELECT_ACTION_TYPE,\r\n        update: TOGGLE_SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerTheme('light', lightTheme);\r\n    registerTheme('dark', theme);\r\n    var dataTool = {};\n\n    function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\r\n        return valNumOrArrLengthMoreThan2 == null\r\n            ? 0\r\n            : (valNumOrArrLengthMoreThan2.length || 1);\r\n    }\r\n    function defaultKeyGetter(item) {\r\n        return item;\r\n    }\r\n    var DataDiffer = (function () {\r\n        function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) {\r\n            this._old = oldArr;\r\n            this._new = newArr;\r\n            this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\r\n            this._newKeyGetter = newKeyGetter || defaultKeyGetter;\r\n            this.context = context;\r\n            this._diffModeMultiple = diffMode === 'multiple';\r\n        }\r\n        DataDiffer.prototype.add = function (func) {\r\n            this._add = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.update = function (func) {\r\n            this._update = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.updateManyToOne = function (func) {\r\n            this._updateManyToOne = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.updateOneToMany = function (func) {\r\n            this._updateOneToMany = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.remove = function (func) {\r\n            this._remove = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.execute = function () {\r\n            this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']();\r\n        };\r\n        DataDiffer.prototype._executeOneToOne = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = new Array(oldArr.length);\r\n            var newDataKeyArr = new Array(newArr.length);\r\n            this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (var i = 0; i < oldArr.length; i++) {\r\n                var oldKey = oldDataKeyArr[i];\r\n                var newIdxMapVal = newDataIndexMap[oldKey];\r\n                var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (newIdxMapValLen > 1) {\r\n                    var newIdx = newIdxMapVal.shift();\r\n                    if (newIdxMapVal.length === 1) {\r\n                        newDataIndexMap[oldKey] = newIdxMapVal[0];\r\n                    }\r\n                    this._update && this._update(newIdx, i);\r\n                }\r\n                else if (newIdxMapValLen === 1) {\r\n                    newDataIndexMap[oldKey] = null;\r\n                    this._update && this._update(newIdxMapVal, i);\r\n                }\r\n                else {\r\n                    this._remove && this._remove(i);\r\n                }\r\n            }\r\n            this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n        };\r\n        DataDiffer.prototype._executeMultiple = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var oldDataIndexMap = {};\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = [];\r\n            var newDataKeyArr = [];\r\n            this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (var i = 0; i < oldDataKeyArr.length; i++) {\r\n                var oldKey = oldDataKeyArr[i];\r\n                var oldIdxMapVal = oldDataIndexMap[oldKey];\r\n                var newIdxMapVal = newDataIndexMap[oldKey];\r\n                var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);\r\n                var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {\r\n                    this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {\r\n                    this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {\r\n                    this._update && this._update(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen > 1) {\r\n                    for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {\r\n                        this._remove && this._remove(oldIdxMapVal[i_1]);\r\n                    }\r\n                }\r\n                else {\r\n                    this._remove && this._remove(oldIdxMapVal);\r\n                }\r\n            }\r\n            this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n        };\r\n        DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) {\r\n            for (var i = 0; i < newDataKeyArr.length; i++) {\r\n                var newKey = newDataKeyArr[i];\r\n                var newIdxMapVal = newDataIndexMap[newKey];\r\n                var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (idxMapValLen > 1) {\r\n                    for (var j = 0; j < idxMapValLen; j++) {\r\n                        this._add && this._add(newIdxMapVal[j]);\r\n                    }\r\n                }\r\n                else if (idxMapValLen === 1) {\r\n                    this._add && this._add(newIdxMapVal);\r\n                }\r\n                newDataIndexMap[newKey] = null;\r\n            }\r\n        };\r\n        DataDiffer.prototype._initIndexMap = function (arr, map, keyArr, keyGetterName) {\r\n            var cbModeMultiple = this._diffModeMultiple;\r\n            for (var i = 0; i < arr.length; i++) {\r\n                var key = '_ec_' + this[keyGetterName](arr[i], i);\r\n                if (!cbModeMultiple) {\r\n                    keyArr[i] = key;\r\n                }\r\n                if (!map) {\r\n                    continue;\r\n                }\r\n                var idxMapVal = map[key];\r\n                var idxMapValLen = dataIndexMapValueLength(idxMapVal);\r\n                if (idxMapValLen === 0) {\r\n                    map[key] = i;\r\n                    if (cbModeMultiple) {\r\n                        keyArr.push(key);\r\n                    }\r\n                }\r\n                else if (idxMapValLen === 1) {\r\n                    map[key] = [idxMapVal, i];\r\n                }\r\n                else {\r\n                    idxMapVal.push(i);\r\n                }\r\n            }\r\n        };\r\n        return DataDiffer;\r\n    }());\n\n    function summarizeDimensions(data) {\r\n        var summary = {};\r\n        var encode = summary.encode = {};\r\n        var notExtraCoordDimMap = createHashMap();\r\n        var defaultedLabel = [];\r\n        var defaultedTooltip = [];\r\n        var userOutput = summary.userOutput = {\r\n            dimensionNames: data.dimensions.slice(),\r\n            encode: {}\r\n        };\r\n        each(data.dimensions, function (dimName) {\r\n            var dimItem = data.getDimensionInfo(dimName);\r\n            var coordDim = dimItem.coordDim;\r\n            if (coordDim) {\r\n                if (__DEV__) {\r\n                    assert(VISUAL_DIMENSIONS.get(coordDim) == null);\r\n                }\r\n                var coordDimIndex = dimItem.coordDimIndex;\r\n                getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\r\n                if (!dimItem.isExtraCoord) {\r\n                    notExtraCoordDimMap.set(coordDim, 1);\r\n                    if (mayLabelDimType(dimItem.type)) {\r\n                        defaultedLabel[0] = dimName;\r\n                    }\r\n                    getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\r\n                }\r\n                if (dimItem.defaultTooltip) {\r\n                    defaultedTooltip.push(dimName);\r\n                }\r\n            }\r\n            VISUAL_DIMENSIONS.each(function (v, otherDim) {\r\n                var encodeArr = getOrCreateEncodeArr(encode, otherDim);\r\n                var dimIndex = dimItem.otherDims[otherDim];\r\n                if (dimIndex != null && dimIndex !== false) {\r\n                    encodeArr[dimIndex] = dimItem.name;\r\n                }\r\n            });\r\n        });\r\n        var dataDimsOnCoord = [];\r\n        var encodeFirstDimNotExtra = {};\r\n        notExtraCoordDimMap.each(function (v, coordDim) {\r\n            var dimArr = encode[coordDim];\r\n            encodeFirstDimNotExtra[coordDim] = dimArr[0];\r\n            dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\r\n        });\r\n        summary.dataDimsOnCoord = dataDimsOnCoord;\r\n        summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\r\n        var encodeLabel = encode.label;\r\n        if (encodeLabel && encodeLabel.length) {\r\n            defaultedLabel = encodeLabel.slice();\r\n        }\r\n        var encodeTooltip = encode.tooltip;\r\n        if (encodeTooltip && encodeTooltip.length) {\r\n            defaultedTooltip = encodeTooltip.slice();\r\n        }\r\n        else if (!defaultedTooltip.length) {\r\n            defaultedTooltip = defaultedLabel.slice();\r\n        }\r\n        encode.defaultedLabel = defaultedLabel;\r\n        encode.defaultedTooltip = defaultedTooltip;\r\n        return summary;\r\n    }\r\n    function getOrCreateEncodeArr(encode, dim) {\r\n        if (!encode.hasOwnProperty(dim)) {\r\n            encode[dim] = [];\r\n        }\r\n        return encode[dim];\r\n    }\r\n    function getDimensionTypeByAxis(axisType) {\r\n        return axisType === 'category'\r\n            ? 'ordinal'\r\n            : axisType === 'time'\r\n                ? 'time'\r\n                : 'float';\r\n    }\r\n    function mayLabelDimType(dimType) {\r\n        return !(dimType === 'ordinal' || dimType === 'time');\r\n    }\n\n    var DataDimensionInfo = (function () {\r\n        function DataDimensionInfo(opt) {\r\n            this.otherDims = {};\r\n            if (opt != null) {\r\n                extend(this, opt);\r\n            }\r\n        }\r\n        return DataDimensionInfo;\r\n    }());\n\n    var mathFloor = Math.floor;\r\n    var isObject$3 = isObject;\r\n    var map$1 = map;\r\n    var UNDEFINED = 'undefined';\r\n    var INDEX_NOT_FOUND = -1;\r\n    var ID_PREFIX = 'e\\0\\0';\r\n    var dataCtors = {\r\n        'float': typeof Float64Array === UNDEFINED\r\n            ? Array : Float64Array,\r\n        'int': typeof Int32Array === UNDEFINED\r\n            ? Array : Int32Array,\r\n        'ordinal': Array,\r\n        'number': Array,\r\n        'time': Array\r\n    };\r\n    var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\r\n    var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\r\n    var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\r\n    var TRANSFERABLE_PROPERTIES = [\r\n        'hasItemOption', '_nameList', '_idList', '_invertedIndicesMap',\r\n        '_rawData', '_dimValueGetter',\r\n        '_count', '_rawCount', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'\r\n    ];\r\n    var CLONE_PROPERTIES = [\r\n        '_extent', '_approximateExtent', '_rawExtent'\r\n    ];\r\n    var defaultDimValueGetters;\r\n    var prepareInvertedIndex;\r\n    var getIndicesCtor;\r\n    var prepareStorage;\r\n    var getRawIndexWithoutIndices;\r\n    var getRawIndexWithIndices;\r\n    var getId;\r\n    var getIdNameFromStore;\r\n    var makeIdFromName;\r\n    var normalizeDimensions;\r\n    var validateDimensions;\r\n    var cloneListForMapAndSample;\r\n    var getInitialExtent;\r\n    var setItemDataAndSeriesIndex;\r\n    var transferProperties;\r\n    var List = (function () {\r\n        function List(dimensions, hostModel) {\r\n            this.type = 'list';\r\n            this._count = 0;\r\n            this._rawCount = 0;\r\n            this._storage = {};\r\n            this._storageArr = [];\r\n            this._nameList = [];\r\n            this._idList = [];\r\n            this._visual = {};\r\n            this._layout = {};\r\n            this._itemVisuals = [];\r\n            this._itemLayouts = [];\r\n            this._graphicEls = [];\r\n            this._rawExtent = {};\r\n            this._extent = {};\r\n            this._approximateExtent = {};\r\n            this._calculationInfo = {};\r\n            this.hasItemOption = true;\r\n            this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map'];\r\n            this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\r\n            this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'];\r\n            this.getRawIndex = getRawIndexWithoutIndices;\r\n            dimensions = dimensions || ['x', 'y'];\r\n            var dimensionInfos = {};\r\n            var dimensionNames = [];\r\n            var invertedIndicesMap = {};\r\n            for (var i = 0; i < dimensions.length; i++) {\r\n                var dimInfoInput = dimensions[i];\r\n                var dimensionInfo = isString(dimInfoInput)\r\n                    ? new DataDimensionInfo({ name: dimInfoInput })\r\n                    : !(dimInfoInput instanceof DataDimensionInfo)\r\n                        ? new DataDimensionInfo(dimInfoInput)\r\n                        : dimInfoInput;\r\n                var dimensionName = dimensionInfo.name;\r\n                dimensionInfo.type = dimensionInfo.type || 'float';\r\n                if (!dimensionInfo.coordDim) {\r\n                    dimensionInfo.coordDim = dimensionName;\r\n                    dimensionInfo.coordDimIndex = 0;\r\n                }\r\n                var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};\r\n                dimensionNames.push(dimensionName);\r\n                dimensionInfos[dimensionName] = dimensionInfo;\r\n                dimensionInfo.index = i;\r\n                if (dimensionInfo.createInvertedIndices) {\r\n                    invertedIndicesMap[dimensionName] = [];\r\n                }\r\n                if (otherDims.itemName === 0) {\r\n                    this._nameDimIdx = i;\r\n                    this._nameOrdinalMeta = dimensionInfo.ordinalMeta;\r\n                }\r\n                if (otherDims.itemId === 0) {\r\n                    this._idDimIdx = i;\r\n                    this._idOrdinalMeta = dimensionInfo.ordinalMeta;\r\n                }\r\n            }\r\n            this.dimensions = dimensionNames;\r\n            this._dimensionInfos = dimensionInfos;\r\n            this.hostModel = hostModel;\r\n            this._dimensionsSummary = summarizeDimensions(this);\r\n            this._invertedIndicesMap = invertedIndicesMap;\r\n            this.userOutput = this._dimensionsSummary.userOutput;\r\n        }\r\n        List.prototype.getDimension = function (dim) {\r\n            if (typeof dim === 'number'\r\n                || (!isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim))) {\r\n                dim = this.dimensions[dim];\r\n            }\r\n            return dim;\r\n        };\r\n        List.prototype.getDimensionInfo = function (dim) {\r\n            return this._dimensionInfos[this.getDimension(dim)];\r\n        };\r\n        List.prototype.getDimensionsOnCoord = function () {\r\n            return this._dimensionsSummary.dataDimsOnCoord.slice();\r\n        };\r\n        List.prototype.mapDimension = function (coordDim, idx) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            if (idx == null) {\r\n                return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\r\n            }\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return dims ? dims[idx] : null;\r\n        };\r\n        List.prototype.mapDimensionsAll = function (coordDim) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return (dims || []).slice();\r\n        };\r\n        List.prototype.initData = function (data, nameList, dimValueGetter) {\r\n            var notProvider = isSourceInstance(data) || isArrayLike(data);\r\n            var provider = notProvider\r\n                ? new DefaultDataProvider(data, this.dimensions.length)\r\n                : data;\r\n            if (__DEV__) {\r\n                assert(notProvider || (isFunction(provider.getItem)\r\n                    && isFunction(provider.count)), 'Inavlid data provider.');\r\n            }\r\n            this._rawData = provider;\r\n            var sourceFormat = provider.getSource().sourceFormat;\r\n            this._storage = {};\r\n            this._indices = null;\r\n            this._dontMakeIdFromName =\r\n                this._idDimIdx != null\r\n                    || sourceFormat === SOURCE_FORMAT_TYPED_ARRAY\r\n                    || !!provider.fillStorage;\r\n            this._nameList = (nameList || []).slice();\r\n            this._idList = [];\r\n            this._nameRepeatCount = {};\r\n            if (!dimValueGetter) {\r\n                this.hasItemOption = false;\r\n            }\r\n            this.defaultDimValueGetter = defaultDimValueGetters[sourceFormat];\r\n            this._dimValueGetter = dimValueGetter = dimValueGetter\r\n                || this.defaultDimValueGetter;\r\n            this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows;\r\n            this._rawExtent = {};\r\n            this._initDataFromProvider(0, provider.count());\r\n            if (provider.pure) {\r\n                this.hasItemOption = false;\r\n            }\r\n        };\r\n        List.prototype.getProvider = function () {\r\n            return this._rawData;\r\n        };\r\n        List.prototype.appendData = function (data) {\r\n            if (__DEV__) {\r\n                assert(!this._indices, 'appendData can only be called on raw data.');\r\n            }\r\n            var rawData = this._rawData;\r\n            var start = this.count();\r\n            rawData.appendData(data);\r\n            var end = rawData.count();\r\n            if (!rawData.persistent) {\r\n                end += start;\r\n            }\r\n            this._initDataFromProvider(start, end, true);\r\n        };\r\n        List.prototype.appendValues = function (values, names) {\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var rawExtent = this._rawExtent;\r\n            var start = this.count();\r\n            var end = start + Math.max(values.length, names ? names.length : 0);\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                prepareStorage(storage, this._dimensionInfos[dim], end, true);\r\n            }\r\n            var rawExtentArr = map$1(dimensions, function (dim) {\r\n                return rawExtent[dim];\r\n            });\r\n            var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n                return storage[dim];\r\n            });\r\n            var emptyDataItem = [];\r\n            for (var idx = start; idx < end; idx++) {\r\n                var sourceIdx = idx - start;\r\n                for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n                    var dim = dimensions[dimIdx];\r\n                    var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, dimIdx);\r\n                    storageArr[dimIdx][idx] = val;\r\n                    var dimRawExtent = rawExtentArr[dimIdx];\r\n                    val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                    val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                }\r\n                if (names) {\r\n                    this._nameList[idx] = names[sourceIdx];\r\n                    if (!this._dontMakeIdFromName) {\r\n                        makeIdFromName(this, idx);\r\n                    }\r\n                }\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype._initDataFromProvider = function (start, end, append) {\r\n            if (start >= end) {\r\n                return;\r\n            }\r\n            var rawData = this._rawData;\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var dimensionInfoMap = this._dimensionInfos;\r\n            var nameList = this._nameList;\r\n            var idList = this._idList;\r\n            var rawExtent = this._rawExtent;\r\n            var sourceFormat = rawData.getSource().sourceFormat;\r\n            var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL;\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                prepareStorage(storage, dimensionInfoMap[dim], end, append);\r\n            }\r\n            var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n                return storage[dim];\r\n            });\r\n            var rawExtentArr = map$1(dimensions, function (dim) {\r\n                return rawExtent[dim];\r\n            });\r\n            if (rawData.fillStorage) {\r\n                rawData.fillStorage(start, end, storageArr, rawExtentArr);\r\n            }\r\n            else {\r\n                var dataItem = [];\r\n                for (var idx = start; idx < end; idx++) {\r\n                    dataItem = rawData.getItem(idx, dataItem);\r\n                    for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n                        var dim = dimensions[dimIdx];\r\n                        var dimStorage = storageArr[dimIdx];\r\n                        var val = this._dimValueGetter(dataItem, dim, idx, dimIdx);\r\n                        dimStorage[idx] = val;\r\n                        var dimRawExtent = rawExtentArr[dimIdx];\r\n                        val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                        val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                    }\r\n                    if (isFormatOriginal && !rawData.pure && dataItem) {\r\n                        var itemName = dataItem.name;\r\n                        if (nameList[idx] == null && itemName != null) {\r\n                            nameList[idx] = convertOptionIdName(itemName, null);\r\n                        }\r\n                        var itemId = dataItem.id;\r\n                        if (idList[idx] == null && itemId != null) {\r\n                            idList[idx] = convertOptionIdName(itemId, null);\r\n                        }\r\n                    }\r\n                    if (!this._dontMakeIdFromName) {\r\n                        makeIdFromName(this, idx);\r\n                    }\r\n                }\r\n            }\r\n            if (!rawData.persistent && rawData.clean) {\r\n                rawData.clean();\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype.count = function () {\r\n            return this._count;\r\n        };\r\n        List.prototype.getIndices = function () {\r\n            var newIndices;\r\n            var indices = this._indices;\r\n            if (indices) {\r\n                var Ctor = indices.constructor;\r\n                var thisCount = this._count;\r\n                if (Ctor === Array) {\r\n                    newIndices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        newIndices[i] = indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    newIndices = new Ctor(indices.buffer, 0, thisCount);\r\n                }\r\n            }\r\n            else {\r\n                var Ctor = getIndicesCtor(this);\r\n                newIndices = new Ctor(this.count());\r\n                for (var i = 0; i < newIndices.length; i++) {\r\n                    newIndices[i] = i;\r\n                }\r\n            }\r\n            return newIndices;\r\n        };\r\n        List.prototype.getByDimIdx = function (dimIdx, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storageArr[dimIdx];\r\n            return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n        };\r\n        List.prototype.get = function (dim, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n        };\r\n        List.prototype.getByRawIndex = function (dim, rawIdx) {\r\n            if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            return dimStore ? dimStore[rawIdx] : NaN;\r\n        };\r\n        List.prototype.getValues = function (dimensions, idx) {\r\n            var values = [];\r\n            if (!isArray(dimensions)) {\r\n                idx = dimensions;\r\n                dimensions = this.dimensions;\r\n            }\r\n            for (var i = 0, len = dimensions.length; i < len; i++) {\r\n                values.push(this.get(dimensions[i], idx));\r\n            }\r\n            return values;\r\n        };\r\n        List.prototype.hasValue = function (idx) {\r\n            var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\r\n            for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\r\n                if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        List.prototype.getDataExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            var dimData = this._storage[dim];\r\n            var initialExtent = getInitialExtent();\r\n            if (!dimData) {\r\n                return initialExtent;\r\n            }\r\n            var currEnd = this.count();\r\n            var useRaw = !this._indices;\r\n            var dimExtent;\r\n            if (useRaw) {\r\n                return this._rawExtent[dim].slice();\r\n            }\r\n            dimExtent = this._extent[dim];\r\n            if (dimExtent) {\r\n                return dimExtent.slice();\r\n            }\r\n            dimExtent = initialExtent;\r\n            var min = dimExtent[0];\r\n            var max = dimExtent[1];\r\n            for (var i = 0; i < currEnd; i++) {\r\n                var rawIdx = this.getRawIndex(i);\r\n                var value = dimData[rawIdx];\r\n                value < min && (min = value);\r\n                value > max && (max = value);\r\n            }\r\n            dimExtent = [min, max];\r\n            this._extent[dim] = dimExtent;\r\n            return dimExtent;\r\n        };\r\n        List.prototype.getApproximateExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            return this._approximateExtent[dim] || this.getDataExtent(dim);\r\n        };\r\n        List.prototype.setApproximateExtent = function (extent, dim) {\r\n            dim = this.getDimension(dim);\r\n            this._approximateExtent[dim] = extent.slice();\r\n        };\r\n        List.prototype.getCalculationInfo = function (key) {\r\n            return this._calculationInfo[key];\r\n        };\r\n        List.prototype.setCalculationInfo = function (key, value) {\r\n            isObject$3(key)\r\n                ? extend(this._calculationInfo, key)\r\n                : (this._calculationInfo[key] = value);\r\n        };\r\n        List.prototype.getSum = function (dim) {\r\n            var dimData = this._storage[dim];\r\n            var sum = 0;\r\n            if (dimData) {\r\n                for (var i = 0, len = this.count(); i < len; i++) {\r\n                    var value = this.get(dim, i);\r\n                    if (!isNaN(value)) {\r\n                        sum += value;\r\n                    }\r\n                }\r\n            }\r\n            return sum;\r\n        };\r\n        List.prototype.getMedian = function (dim) {\r\n            var dimDataArray = [];\r\n            this.each(dim, function (val) {\r\n                if (!isNaN(val)) {\r\n                    dimDataArray.push(val);\r\n                }\r\n            });\r\n            var sortedDimDataArray = dimDataArray.sort(function (a, b) {\r\n                return a - b;\r\n            });\r\n            var len = this.count();\r\n            return len === 0\r\n                ? 0\r\n                : len % 2 === 1\r\n                    ? sortedDimDataArray[(len - 1) / 2]\r\n                    : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\r\n        };\r\n        List.prototype.rawIndexOf = function (dim, value) {\r\n            var invertedIndices = dim && this._invertedIndicesMap[dim];\r\n            if (__DEV__) {\r\n                if (!invertedIndices) {\r\n                    throw new Error('Do not supported yet');\r\n                }\r\n            }\r\n            var rawIndex = invertedIndices[value];\r\n            if (rawIndex == null || isNaN(rawIndex)) {\r\n                return INDEX_NOT_FOUND;\r\n            }\r\n            return rawIndex;\r\n        };\r\n        List.prototype.indexOfName = function (name) {\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                if (this.getName(i) === name) {\r\n                    return i;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indexOfRawIndex = function (rawIndex) {\r\n            if (rawIndex >= this._rawCount || rawIndex < 0) {\r\n                return -1;\r\n            }\r\n            if (!this._indices) {\r\n                return rawIndex;\r\n            }\r\n            var indices = this._indices;\r\n            var rawDataIndex = indices[rawIndex];\r\n            if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\r\n                return rawIndex;\r\n            }\r\n            var left = 0;\r\n            var right = this._count - 1;\r\n            while (left <= right) {\r\n                var mid = (left + right) / 2 | 0;\r\n                if (indices[mid] < rawIndex) {\r\n                    left = mid + 1;\r\n                }\r\n                else if (indices[mid] > rawIndex) {\r\n                    right = mid - 1;\r\n                }\r\n                else {\r\n                    return mid;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indicesOfNearest = function (dim, value, maxDistance) {\r\n            var storage = this._storage;\r\n            var dimData = storage[dim];\r\n            var nearestIndices = [];\r\n            if (!dimData) {\r\n                return nearestIndices;\r\n            }\r\n            if (maxDistance == null) {\r\n                maxDistance = Infinity;\r\n            }\r\n            var minDist = Infinity;\r\n            var minDiff = -1;\r\n            var nearestIndicesLen = 0;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var dataIndex = this.getRawIndex(i);\r\n                var diff = value - dimData[dataIndex];\r\n                var dist = Math.abs(diff);\r\n                if (dist <= maxDistance) {\r\n                    if (dist < minDist\r\n                        || (dist === minDist && diff >= 0 && minDiff < 0)) {\r\n                        minDist = dist;\r\n                        minDiff = diff;\r\n                        nearestIndicesLen = 0;\r\n                    }\r\n                    if (diff === minDiff) {\r\n                        nearestIndices[nearestIndicesLen++] = i;\r\n                    }\r\n                }\r\n            }\r\n            nearestIndices.length = nearestIndicesLen;\r\n            return nearestIndices;\r\n        };\r\n        List.prototype.getRawDataItem = function (idx) {\r\n            if (!this._rawData.persistent) {\r\n                var val = [];\r\n                for (var i = 0; i < this.dimensions.length; i++) {\r\n                    var dim = this.dimensions[i];\r\n                    val.push(this.get(dim, idx));\r\n                }\r\n                return val;\r\n            }\r\n            else {\r\n                return this._rawData.getItem(this.getRawIndex(idx));\r\n            }\r\n        };\r\n        List.prototype.getName = function (idx) {\r\n            var rawIndex = this.getRawIndex(idx);\r\n            var name = this._nameList[rawIndex];\r\n            if (name == null && this._nameDimIdx != null) {\r\n                name = getIdNameFromStore(this, this._nameDimIdx, this._nameOrdinalMeta, rawIndex);\r\n            }\r\n            if (name == null) {\r\n                name = '';\r\n            }\r\n            return name;\r\n        };\r\n        List.prototype.getId = function (idx) {\r\n            return getId(this, this.getRawIndex(idx));\r\n        };\r\n        List.prototype.each = function (dims, cb, ctx, ctxCompat) {\r\n            var _this = this;\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var dimSize = dimNames.length;\r\n            var dimIndices = map$1(dimNames, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var storageArr = this._storageArr;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var rawIdx = this.getRawIndex(i);\r\n                switch (dimSize) {\r\n                    case 0:\r\n                        cb.call(fCtx, i);\r\n                        break;\r\n                    case 1:\r\n                        cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], i);\r\n                        break;\r\n                    case 2:\r\n                        cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], storageArr[dimIndices[1]][rawIdx], i);\r\n                        break;\r\n                    default:\r\n                        var k = 0;\r\n                        var value = [];\r\n                        for (; k < dimSize; k++) {\r\n                            value[k] = storageArr[dimIndices[k]][rawIdx];\r\n                        }\r\n                        value[k] = i;\r\n                        cb.apply(fCtx, value);\r\n                }\r\n            }\r\n        };\r\n        List.prototype.filterSelf = function (dims, cb, ctx, ctxCompat) {\r\n            var _this = this;\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var count = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(count);\r\n            var value = [];\r\n            var dimSize = dimNames.length;\r\n            var offset = 0;\r\n            var dimIndices = map$1(dimNames, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var dim0 = dimIndices[0];\r\n            var storageArr = this._storageArr;\r\n            for (var i = 0; i < count; i++) {\r\n                var keep = void 0;\r\n                var rawIdx = this.getRawIndex(i);\r\n                if (dimSize === 0) {\r\n                    keep = cb.call(fCtx, i);\r\n                }\r\n                else if (dimSize === 1) {\r\n                    var val = storageArr[dim0][rawIdx];\r\n                    keep = cb.call(fCtx, val, i);\r\n                }\r\n                else {\r\n                    var k = 0;\r\n                    for (; k < dimSize; k++) {\r\n                        value[k] = storageArr[dimIndices[k]][rawIdx];\r\n                    }\r\n                    value[k] = i;\r\n                    keep = cb.apply(fCtx, value);\r\n                }\r\n                if (keep) {\r\n                    newIndices[offset++] = rawIdx;\r\n                }\r\n            }\r\n            if (offset < count) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.selectRange = function (range) {\r\n            var _this = this;\r\n            var len = this._count;\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var dimensions = [];\r\n            for (var dim in range) {\r\n                if (range.hasOwnProperty(dim)) {\r\n                    dimensions.push(dim);\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimensions);\r\n            }\r\n            var dimSize = dimensions.length;\r\n            if (!dimSize) {\r\n                return;\r\n            }\r\n            var originalCount = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(originalCount);\r\n            var offset = 0;\r\n            var dim0 = dimensions[0];\r\n            var dimIndices = map$1(dimensions, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var min = range[dim0][0];\r\n            var max = range[dim0][1];\r\n            var storageArr = this._storageArr;\r\n            var quickFinished = false;\r\n            if (!this._indices) {\r\n                var idx = 0;\r\n                if (dimSize === 1) {\r\n                    var dimStorage = storageArr[dimIndices[0]];\r\n                    for (var i = 0; i < len; i++) {\r\n                        var val = dimStorage[i];\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = idx;\r\n                        }\r\n                        idx++;\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n                else if (dimSize === 2) {\r\n                    var dimStorage = storageArr[dimIndices[0]];\r\n                    var dimStorage2 = storageArr[dimIndices[1]];\r\n                    var min2 = range[dimensions[1]][0];\r\n                    var max2 = range[dimensions[1]][1];\r\n                    for (var i = 0; i < len; i++) {\r\n                        var val = dimStorage[i];\r\n                        var val2 = dimStorage2[i];\r\n                        if (((val >= min && val <= max) || isNaN(val))\r\n                            && ((val2 >= min2 && val2 <= max2) || isNaN(val2))) {\r\n                            newIndices[offset++] = idx;\r\n                        }\r\n                        idx++;\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n            }\r\n            if (!quickFinished) {\r\n                if (dimSize === 1) {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        var val = storageArr[dimIndices[0]][rawIndex];\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = rawIndex;\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var keep = true;\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        for (var k = 0; k < dimSize; k++) {\r\n                            var dimk = dimensions[k];\r\n                            var val = storageArr[dimIndices[k]][rawIndex];\r\n                            if (val < range[dimk][0] || val > range[dimk][1]) {\r\n                                keep = false;\r\n                            }\r\n                        }\r\n                        if (keep) {\r\n                            newIndices[offset++] = this.getRawIndex(i);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (offset < originalCount) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.mapArray = function (dims, cb, ctx, ctxCompat) {\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            ctx = (ctx || ctxCompat || this);\r\n            var result = [];\r\n            this.each(dims, function () {\r\n                result.push(cb && cb.apply(this, arguments));\r\n            }, ctx);\r\n            return result;\r\n        };\r\n        List.prototype.map = function (dims, cb, ctx, ctxCompat) {\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var list = cloneListForMapAndSample(this, dimNames);\r\n            var storage = list._storage;\r\n            list._indices = this._indices;\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            var tmpRetValue = [];\r\n            var dimSize = dimNames.length;\r\n            var dataCount = this.count();\r\n            var values = [];\r\n            var rawExtent = list._rawExtent;\r\n            for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\r\n                for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\r\n                    values[dimIndex] = this.get(dimNames[dimIndex], dataIndex);\r\n                }\r\n                values[dimSize] = dataIndex;\r\n                var retValue = cb && cb.apply(fCtx, values);\r\n                if (retValue != null) {\r\n                    if (typeof retValue !== 'object') {\r\n                        tmpRetValue[0] = retValue;\r\n                        retValue = tmpRetValue;\r\n                    }\r\n                    var rawIndex = this.getRawIndex(dataIndex);\r\n                    for (var i = 0; i < retValue.length; i++) {\r\n                        var dim = dimNames[i];\r\n                        var val = retValue[i];\r\n                        var rawExtentOnDim = rawExtent[dim];\r\n                        var dimStore = storage[dim];\r\n                        if (dimStore) {\r\n                            dimStore[rawIndex] = val;\r\n                        }\r\n                        if (val < rawExtentOnDim[0]) {\r\n                            rawExtentOnDim[0] = val;\r\n                        }\r\n                        if (val > rawExtentOnDim[1]) {\r\n                            rawExtentOnDim[1] = val;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return list;\r\n        };\r\n        List.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\r\n            var list = cloneListForMapAndSample(this, [dimension]);\r\n            var targetStorage = list._storage;\r\n            var frameValues = [];\r\n            var frameSize = mathFloor(1 / rate);\r\n            var dimStore = targetStorage[dimension];\r\n            var len = this.count();\r\n            var rawExtentOnDim = list._rawExtent[dimension];\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var offset = 0;\r\n            for (var i = 0; i < len; i += frameSize) {\r\n                if (frameSize > len - i) {\r\n                    frameSize = len - i;\r\n                    frameValues.length = frameSize;\r\n                }\r\n                for (var k = 0; k < frameSize; k++) {\r\n                    var dataIdx = this.getRawIndex(i + k);\r\n                    frameValues[k] = dimStore[dataIdx];\r\n                }\r\n                var value = sampleValue(frameValues);\r\n                var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\r\n                dimStore[sampleFrameIdx] = value;\r\n                if (value < rawExtentOnDim[0]) {\r\n                    rawExtentOnDim[0] = value;\r\n                }\r\n                if (value > rawExtentOnDim[1]) {\r\n                    rawExtentOnDim[1] = value;\r\n                }\r\n                newIndices[offset++] = sampleFrameIdx;\r\n            }\r\n            list._count = offset;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.lttbDownSample = function (valueDimension, rate) {\r\n            var list = cloneListForMapAndSample(this, []);\r\n            var targetStorage = list._storage;\r\n            var dimStore = targetStorage[valueDimension];\r\n            var len = this.count();\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var sampledIndex = 0;\r\n            var frameSize = mathFloor(1 / rate);\r\n            var currentRawIndex = this.getRawIndex(0);\r\n            var maxArea;\r\n            var area;\r\n            var nextRawIndex;\r\n            newIndices[sampledIndex++] = currentRawIndex;\r\n            for (var i = 1; i < len - 1; i += frameSize) {\r\n                var nextFrameStart = Math.min(i + frameSize, len - 1);\r\n                var nextFrameEnd = Math.min(i + frameSize * 2, len);\r\n                var avgX = (nextFrameEnd + nextFrameStart) / 2;\r\n                var avgY = 0;\r\n                for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {\r\n                    var rawIndex = this.getRawIndex(idx);\r\n                    var y = dimStore[rawIndex];\r\n                    if (isNaN(y)) {\r\n                        continue;\r\n                    }\r\n                    avgY += y;\r\n                }\r\n                avgY /= (nextFrameEnd - nextFrameStart);\r\n                var frameStart = i;\r\n                var frameEnd = Math.min(i + frameSize, len);\r\n                var pointAX = i - 1;\r\n                var pointAY = dimStore[currentRawIndex];\r\n                maxArea = -1;\r\n                nextRawIndex = frameStart;\r\n                for (var idx = frameStart; idx < frameEnd; idx++) {\r\n                    var rawIndex = this.getRawIndex(idx);\r\n                    var y = dimStore[rawIndex];\r\n                    if (isNaN(y)) {\r\n                        continue;\r\n                    }\r\n                    area = Math.abs((pointAX - avgX) * (y - pointAY)\r\n                        - (pointAX - idx) * (avgY - pointAY));\r\n                    if (area > maxArea) {\r\n                        maxArea = area;\r\n                        nextRawIndex = rawIndex;\r\n                    }\r\n                }\r\n                newIndices[sampledIndex++] = nextRawIndex;\r\n                currentRawIndex = nextRawIndex;\r\n            }\r\n            newIndices[sampledIndex++] = this.getRawIndex(len - 1);\r\n            list._count = sampledIndex;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.getItemModel = function (idx) {\r\n            var hostModel = this.hostModel;\r\n            var dataItem = this.getRawDataItem(idx);\r\n            return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\r\n        };\r\n        List.prototype.diff = function (otherList) {\r\n            var thisList = this;\r\n            return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\r\n                return getId(otherList, idx);\r\n            }, function (idx) {\r\n                return getId(thisList, idx);\r\n            });\r\n        };\r\n        List.prototype.getVisual = function (key) {\r\n            var visual = this._visual;\r\n            return visual && visual[key];\r\n        };\r\n        List.prototype.setVisual = function (kvObj, val) {\r\n            this._visual = this._visual || {};\r\n            if (isObject$3(kvObj)) {\r\n                extend(this._visual, kvObj);\r\n            }\r\n            else {\r\n                this._visual[kvObj] = val;\r\n            }\r\n        };\r\n        List.prototype.getItemVisual = function (idx, key) {\r\n            var itemVisual = this._itemVisuals[idx];\r\n            var val = itemVisual && itemVisual[key];\r\n            if (val == null) {\r\n                return this.getVisual(key);\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.hasItemVisual = function () {\r\n            return this._itemVisuals.length > 0;\r\n        };\r\n        List.prototype.ensureUniqueItemVisual = function (idx, key) {\r\n            var itemVisuals = this._itemVisuals;\r\n            var itemVisual = itemVisuals[idx];\r\n            if (!itemVisual) {\r\n                itemVisual = itemVisuals[idx] = {};\r\n            }\r\n            var val = itemVisual[key];\r\n            if (val == null) {\r\n                val = this.getVisual(key);\r\n                if (isArray(val)) {\r\n                    val = val.slice();\r\n                }\r\n                else if (isObject$3(val)) {\r\n                    val = extend({}, val);\r\n                }\r\n                itemVisual[key] = val;\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.setItemVisual = function (idx, key, value) {\r\n            var itemVisual = this._itemVisuals[idx] || {};\r\n            this._itemVisuals[idx] = itemVisual;\r\n            if (isObject$3(key)) {\r\n                extend(itemVisual, key);\r\n            }\r\n            else {\r\n                itemVisual[key] = value;\r\n            }\r\n        };\r\n        List.prototype.clearAllVisual = function () {\r\n            this._visual = {};\r\n            this._itemVisuals = [];\r\n        };\r\n        List.prototype.setLayout = function (key, val) {\r\n            if (isObject$3(key)) {\r\n                for (var name_1 in key) {\r\n                    if (key.hasOwnProperty(name_1)) {\r\n                        this.setLayout(name_1, key[name_1]);\r\n                    }\r\n                }\r\n                return;\r\n            }\r\n            this._layout[key] = val;\r\n        };\r\n        List.prototype.getLayout = function (key) {\r\n            return this._layout[key];\r\n        };\r\n        List.prototype.getItemLayout = function (idx) {\r\n            return this._itemLayouts[idx];\r\n        };\r\n        List.prototype.setItemLayout = function (idx, layout, merge) {\r\n            this._itemLayouts[idx] = merge\r\n                ? extend(this._itemLayouts[idx] || {}, layout)\r\n                : layout;\r\n        };\r\n        List.prototype.clearItemLayouts = function () {\r\n            this._itemLayouts.length = 0;\r\n        };\r\n        List.prototype.setItemGraphicEl = function (idx, el) {\r\n            var hostModel = this.hostModel;\r\n            if (el) {\r\n                var ecData = getECData(el);\r\n                ecData.dataIndex = idx;\r\n                ecData.dataType = this.dataType;\r\n                ecData.seriesIndex = hostModel && hostModel.seriesIndex;\r\n                if (el.type === 'group') {\r\n                    el.traverse(setItemDataAndSeriesIndex, el);\r\n                }\r\n            }\r\n            this._graphicEls[idx] = el;\r\n        };\r\n        List.prototype.getItemGraphicEl = function (idx) {\r\n            return this._graphicEls[idx];\r\n        };\r\n        List.prototype.eachItemGraphicEl = function (cb, context) {\r\n            each(this._graphicEls, function (el, idx) {\r\n                if (el) {\r\n                    cb && cb.call(context, el, idx);\r\n                }\r\n            });\r\n        };\r\n        List.prototype.cloneShallow = function (list) {\r\n            if (!list) {\r\n                var dimensionInfoList = map$1(this.dimensions, this.getDimensionInfo, this);\r\n                list = new List(dimensionInfoList, this.hostModel);\r\n            }\r\n            list._storage = this._storage;\r\n            list._storageArr = this._storageArr;\r\n            transferProperties(list, this);\r\n            if (this._indices) {\r\n                var Ctor = this._indices.constructor;\r\n                if (Ctor === Array) {\r\n                    var thisCount = this._indices.length;\r\n                    list._indices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        list._indices[i] = this._indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    list._indices = new Ctor(this._indices);\r\n                }\r\n            }\r\n            else {\r\n                list._indices = null;\r\n            }\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return list;\r\n        };\r\n        List.prototype.wrapMethod = function (methodName, injectFunction) {\r\n            var originalMethod = this[methodName];\r\n            if (typeof originalMethod !== 'function') {\r\n                return;\r\n            }\r\n            this.__wrappedMethods = this.__wrappedMethods || [];\r\n            this.__wrappedMethods.push(methodName);\r\n            this[methodName] = function () {\r\n                var res = originalMethod.apply(this, arguments);\r\n                return injectFunction.apply(this, [res].concat(slice(arguments)));\r\n            };\r\n        };\r\n        List.internalField = (function () {\r\n            defaultDimValueGetters = {\r\n                arrayRows: getDimValueSimply,\r\n                objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return parseDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\r\n                },\r\n                keyedColumns: getDimValueSimply,\r\n                original: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);\r\n                    if (!this._rawData.pure && isDataItemOption(dataItem)) {\r\n                        this.hasItemOption = true;\r\n                    }\r\n                    return parseDataValue((value instanceof Array)\r\n                        ? value[dimIndex]\r\n                        : value, this._dimensionInfos[dimName]);\r\n                },\r\n                typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return dataItem[dimIndex];\r\n                }\r\n            };\r\n            function getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\r\n                return parseDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\r\n            }\r\n            prepareInvertedIndex = function (list) {\r\n                var invertedIndicesMap = list._invertedIndicesMap;\r\n                each(invertedIndicesMap, function (invertedIndices, dim) {\r\n                    var dimInfo = list._dimensionInfos[dim];\r\n                    var ordinalMeta = dimInfo.ordinalMeta;\r\n                    if (ordinalMeta) {\r\n                        invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length);\r\n                        for (var i = 0; i < invertedIndices.length; i++) {\r\n                            invertedIndices[i] = INDEX_NOT_FOUND;\r\n                        }\r\n                        for (var i = 0; i < list._count; i++) {\r\n                            invertedIndices[list.get(dim, i)] = i;\r\n                        }\r\n                    }\r\n                });\r\n            };\r\n            getIdNameFromStore = function (list, dimIdx, ordinalMeta, rawIndex) {\r\n                var val;\r\n                var chunk = list._storageArr[dimIdx];\r\n                if (chunk) {\r\n                    val = chunk[rawIndex];\r\n                    if (ordinalMeta && ordinalMeta.categories.length) {\r\n                        val = ordinalMeta.categories[val];\r\n                    }\r\n                }\r\n                return convertOptionIdName(val, null);\r\n            };\r\n            getIndicesCtor = function (list) {\r\n                return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\r\n            };\r\n            prepareStorage = function (storage, dimInfo, end, append) {\r\n                var DataCtor = dataCtors[dimInfo.type];\r\n                var dim = dimInfo.name;\r\n                if (append) {\r\n                    var oldStore = storage[dim];\r\n                    var oldLen = oldStore && oldStore.length;\r\n                    if (!(oldLen === end)) {\r\n                        var newStore = new DataCtor(end);\r\n                        for (var j = 0; j < oldLen; j++) {\r\n                            newStore[j] = oldStore[j];\r\n                        }\r\n                        storage[dim] = newStore;\r\n                    }\r\n                }\r\n                else {\r\n                    storage[dim] = new DataCtor(end);\r\n                }\r\n            };\r\n            getRawIndexWithoutIndices = function (idx) {\r\n                return idx;\r\n            };\r\n            getRawIndexWithIndices = function (idx) {\r\n                if (idx < this._count && idx >= 0) {\r\n                    return this._indices[idx];\r\n                }\r\n                return -1;\r\n            };\r\n            getId = function (list, rawIndex) {\r\n                var id = list._idList[rawIndex];\r\n                if (id == null && list._idDimIdx != null) {\r\n                    id = getIdNameFromStore(list, list._idDimIdx, list._idOrdinalMeta, rawIndex);\r\n                }\r\n                if (id == null) {\r\n                    id = ID_PREFIX + rawIndex;\r\n                }\r\n                return id;\r\n            };\r\n            normalizeDimensions = function (dimensions) {\r\n                if (!isArray(dimensions)) {\r\n                    dimensions = dimensions != null ? [dimensions] : [];\r\n                }\r\n                return dimensions;\r\n            };\r\n            validateDimensions = function (list, dims) {\r\n                for (var i = 0; i < dims.length; i++) {\r\n                    if (!list._dimensionInfos[dims[i]]) {\r\n                        console.error('Unkown dimension ' + dims[i]);\r\n                    }\r\n                }\r\n            };\r\n            cloneListForMapAndSample = function (original, excludeDimensions) {\r\n                var allDimensions = original.dimensions;\r\n                var list = new List(map$1(allDimensions, original.getDimensionInfo, original), original.hostModel);\r\n                transferProperties(list, original);\r\n                var storage = list._storage = {};\r\n                var originalStorage = original._storage;\r\n                var storageArr = list._storageArr = [];\r\n                for (var i = 0; i < allDimensions.length; i++) {\r\n                    var dim = allDimensions[i];\r\n                    if (originalStorage[dim]) {\r\n                        if (indexOf(excludeDimensions, dim) >= 0) {\r\n                            storage[dim] = cloneChunk(originalStorage[dim]);\r\n                            list._rawExtent[dim] = getInitialExtent();\r\n                            list._extent[dim] = null;\r\n                        }\r\n                        else {\r\n                            storage[dim] = originalStorage[dim];\r\n                        }\r\n                        storageArr.push(storage[dim]);\r\n                    }\r\n                }\r\n                return list;\r\n            };\r\n            function cloneChunk(originalChunk) {\r\n                var Ctor = originalChunk.constructor;\r\n                return Ctor === Array\r\n                    ? originalChunk.slice()\r\n                    : new Ctor(originalChunk);\r\n            }\r\n            getInitialExtent = function () {\r\n                return [Infinity, -Infinity];\r\n            };\r\n            setItemDataAndSeriesIndex = function (child) {\r\n                var childECData = getECData(child);\r\n                var thisECData = getECData(this);\r\n                childECData.seriesIndex = thisECData.seriesIndex;\r\n                childECData.dataIndex = thisECData.dataIndex;\r\n                childECData.dataType = thisECData.dataType;\r\n            };\r\n            transferProperties = function (target, source) {\r\n                each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\r\n                    if (source.hasOwnProperty(propName)) {\r\n                        target[propName] = source[propName];\r\n                    }\r\n                });\r\n                target.__wrappedMethods = source.__wrappedMethods;\r\n                each(CLONE_PROPERTIES, function (propName) {\r\n                    target[propName] = clone(source[propName]);\r\n                });\r\n                target._calculationInfo = extend({}, source._calculationInfo);\r\n            };\r\n            makeIdFromName = function (list, idx) {\r\n                var nameList = list._nameList;\r\n                var idList = list._idList;\r\n                var nameDimIdx = list._nameDimIdx;\r\n                var idDimIdx = list._idDimIdx;\r\n                var name = nameList[idx];\r\n                var id = idList[idx];\r\n                if (name == null && nameDimIdx != null) {\r\n                    nameList[idx] = name = getIdNameFromStore(list, nameDimIdx, list._nameOrdinalMeta, idx);\r\n                }\r\n                if (id == null && idDimIdx != null) {\r\n                    idList[idx] = id = getIdNameFromStore(list, idDimIdx, list._idOrdinalMeta, idx);\r\n                }\r\n                if (id == null && name != null) {\r\n                    var nameRepeatCount = list._nameRepeatCount;\r\n                    var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;\r\n                    id = name;\r\n                    if (nmCnt > 1) {\r\n                        id += '__ec__' + nmCnt;\r\n                    }\r\n                    idList[idx] = id;\r\n                }\r\n            };\r\n        })();\r\n        return List;\r\n    }());\n\n    function completeDimensions(sysDims, source, opt) {\r\n        if (!isSourceInstance(source)) {\r\n            source = createSourceFromSeriesDataOption(source);\r\n        }\r\n        opt = opt || {};\r\n        sysDims = (sysDims || []).slice();\r\n        var dimsDef = (opt.dimsDef || []).slice();\r\n        var dataDimNameMap = createHashMap();\r\n        var coordDimNameMap = createHashMap();\r\n        var result = [];\r\n        var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount);\r\n        for (var i = 0; i < dimCount; i++) {\r\n            var dimDefItemRaw = dimsDef[i];\r\n            var dimDefItem = dimsDef[i] = extend({}, isObject(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw });\r\n            var userDimName = dimDefItem.name;\r\n            var resultItem = result[i] = new DataDimensionInfo();\r\n            if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\r\n                resultItem.name = resultItem.displayName = userDimName;\r\n                dataDimNameMap.set(userDimName, i);\r\n            }\r\n            dimDefItem.type != null && (resultItem.type = dimDefItem.type);\r\n            dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\r\n        }\r\n        var encodeDef = opt.encodeDef;\r\n        if (!encodeDef && opt.encodeDefaulter) {\r\n            encodeDef = opt.encodeDefaulter(source, dimCount);\r\n        }\r\n        var encodeDefMap = createHashMap(encodeDef);\r\n        encodeDefMap.each(function (dataDimsRaw, coordDim) {\r\n            var dataDims = normalizeToArray(dataDimsRaw).slice();\r\n            if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\r\n                encodeDefMap.set(coordDim, false);\r\n                return;\r\n            }\r\n            var validDataDims = encodeDefMap.set(coordDim, []);\r\n            each(dataDims, function (resultDimIdxOrName, idx) {\r\n                var resultDimIdx = isString(resultDimIdxOrName)\r\n                    ? dataDimNameMap.get(resultDimIdxOrName)\r\n                    : resultDimIdxOrName;\r\n                if (resultDimIdx != null && resultDimIdx < dimCount) {\r\n                    validDataDims[idx] = resultDimIdx;\r\n                    applyDim(result[resultDimIdx], coordDim, idx);\r\n                }\r\n            });\r\n        });\r\n        var availDimIdx = 0;\r\n        each(sysDims, function (sysDimItemRaw) {\r\n            var coordDim;\r\n            var sysDimItemDimsDef;\r\n            var sysDimItemOtherDims;\r\n            var sysDimItem;\r\n            if (isString(sysDimItemRaw)) {\r\n                coordDim = sysDimItemRaw;\r\n                sysDimItem = {};\r\n            }\r\n            else {\r\n                sysDimItem = sysDimItemRaw;\r\n                coordDim = sysDimItem.name;\r\n                var ordinalMeta = sysDimItem.ordinalMeta;\r\n                sysDimItem.ordinalMeta = null;\r\n                sysDimItem = clone(sysDimItem);\r\n                sysDimItem.ordinalMeta = ordinalMeta;\r\n                sysDimItemDimsDef = sysDimItem.dimsDef;\r\n                sysDimItemOtherDims = sysDimItem.otherDims;\r\n                sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex =\r\n                    sysDimItem.dimsDef = sysDimItem.otherDims = null;\r\n            }\r\n            var dataDims = encodeDefMap.get(coordDim);\r\n            if (dataDims === false) {\r\n                return;\r\n            }\r\n            dataDims = normalizeToArray(dataDims);\r\n            if (!dataDims.length) {\r\n                for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\r\n                    while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\r\n                        availDimIdx++;\r\n                    }\r\n                    availDimIdx < result.length && dataDims.push(availDimIdx++);\r\n                }\r\n            }\r\n            each(dataDims, function (resultDimIdx, coordDimIndex) {\r\n                var resultItem = result[resultDimIdx];\r\n                applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\r\n                if (resultItem.name == null && sysDimItemDimsDef) {\r\n                    var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\r\n                    !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { name: sysDimItemDimsDefItem });\r\n                    resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\r\n                    resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\r\n                }\r\n                sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\r\n            });\r\n        });\r\n        function applyDim(resultItem, coordDim, coordDimIndex) {\r\n            if (VISUAL_DIMENSIONS.get(coordDim) != null) {\r\n                resultItem.otherDims[coordDim] = coordDimIndex;\r\n            }\r\n            else {\r\n                resultItem.coordDim = coordDim;\r\n                resultItem.coordDimIndex = coordDimIndex;\r\n                coordDimNameMap.set(coordDim, true);\r\n            }\r\n        }\r\n        var generateCoord = opt.generateCoord;\r\n        var generateCoordCount = opt.generateCoordCount;\r\n        var fromZero = generateCoordCount != null;\r\n        generateCoordCount = generateCoord ? (generateCoordCount || 1) : 0;\r\n        var extra = generateCoord || 'value';\r\n        for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\r\n            var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\r\n            var coordDim = resultItem.coordDim;\r\n            if (coordDim == null) {\r\n                resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\r\n                resultItem.coordDimIndex = 0;\r\n                if (!generateCoord || generateCoordCount <= 0) {\r\n                    resultItem.isExtraCoord = true;\r\n                }\r\n                generateCoordCount--;\r\n            }\r\n            resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap, false));\r\n            if (resultItem.type == null\r\n                && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must\r\n                    || (resultItem.isExtraCoord\r\n                        && (resultItem.otherDims.itemName != null\r\n                            || resultItem.otherDims.seriesName != null)))) {\r\n                resultItem.type = 'ordinal';\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function getDimCount(source, sysDims, dimsDef, optDimCount) {\r\n        var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\r\n        each(sysDims, function (sysDimItem) {\r\n            var sysDimItemDimsDef;\r\n            if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\r\n                dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\r\n            }\r\n        });\r\n        return dimCount;\r\n    }\r\n    function genName(name, map, fromZero) {\r\n        if (fromZero || map.get(name) != null) {\r\n            var i = 0;\r\n            while (map.get(name + i) != null) {\r\n                i++;\r\n            }\r\n            name += i;\r\n        }\r\n        map.set(name, true);\r\n        return name;\r\n    }\n\n    function createDimensions(source, opt) {\r\n        opt = opt || {};\r\n        return completeDimensions(opt.coordDimensions || [], source, {\r\n            dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\r\n            encodeDef: opt.encodeDefine || source.encodeDefine,\r\n            dimCount: opt.dimensionsCount,\r\n            encodeDefaulter: opt.encodeDefaulter,\r\n            generateCoord: opt.generateCoord,\r\n            generateCoordCount: opt.generateCoordCount\r\n        });\r\n    }\n\n    var CoordSysInfo = (function () {\r\n        function CoordSysInfo(coordSysName) {\r\n            this.coordSysDims = [];\r\n            this.axisMap = createHashMap();\r\n            this.categoryAxisMap = createHashMap();\r\n            this.coordSysName = coordSysName;\r\n        }\r\n        return CoordSysInfo;\r\n    }());\r\n    function getCoordSysInfoBySeries(seriesModel) {\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var result = new CoordSysInfo(coordSysName);\r\n        var fetch = fetchers[coordSysName];\r\n        if (fetch) {\r\n            fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\r\n            return result;\r\n        }\r\n    }\r\n    var fetchers = {\r\n        cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\r\n            var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!xAxisModel) {\r\n                    throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\r\n                }\r\n                if (!yAxisModel) {\r\n                    throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['x', 'y'];\r\n            axisMap.set('x', xAxisModel);\r\n            axisMap.set('y', yAxisModel);\r\n            if (isCategory(xAxisModel)) {\r\n                categoryAxisMap.set('x', xAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(yAxisModel)) {\r\n                categoryAxisMap.set('y', yAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!singleAxisModel) {\r\n                    throw new Error('singleAxis should be specified.');\r\n                }\r\n            }\r\n            result.coordSysDims = ['single'];\r\n            axisMap.set('single', singleAxisModel);\r\n            if (isCategory(singleAxisModel)) {\r\n                categoryAxisMap.set('single', singleAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n        },\r\n        polar: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n            var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n            var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n            if (__DEV__) {\r\n                if (!angleAxisModel) {\r\n                    throw new Error('angleAxis option not found');\r\n                }\r\n                if (!radiusAxisModel) {\r\n                    throw new Error('radiusAxis option not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['radius', 'angle'];\r\n            axisMap.set('radius', radiusAxisModel);\r\n            axisMap.set('angle', angleAxisModel);\r\n            if (isCategory(radiusAxisModel)) {\r\n                categoryAxisMap.set('radius', radiusAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(angleAxisModel)) {\r\n                categoryAxisMap.set('angle', angleAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        geo: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            result.coordSysDims = ['lng', 'lat'];\r\n        },\r\n        parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var ecModel = seriesModel.ecModel;\r\n            var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n            var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\r\n            each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\r\n                var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n                var axisDim = coordSysDims[index];\r\n                axisMap.set(axisDim, axisModel);\r\n                if (isCategory(axisModel)) {\r\n                    categoryAxisMap.set(axisDim, axisModel);\r\n                    if (result.firstCategoryDimIndex == null) {\r\n                        result.firstCategoryDimIndex = index;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    };\r\n    function isCategory(axisModel) {\r\n        return axisModel.get('type') === 'category';\r\n    }\n\n    function enableDataStack(seriesModel, dimensionInfoList, opt) {\r\n        opt = opt || {};\r\n        var byIndex = opt.byIndex;\r\n        var stackedCoordDimension = opt.stackedCoordDimension;\r\n        var mayStack = !!(seriesModel && seriesModel.get('stack'));\r\n        var stackedByDimInfo;\r\n        var stackedDimInfo;\r\n        var stackResultDimension;\r\n        var stackedOverDimension;\r\n        each(dimensionInfoList, function (dimensionInfo, index) {\r\n            if (isString(dimensionInfo)) {\r\n                dimensionInfoList[index] = dimensionInfo = {\r\n                    name: dimensionInfo\r\n                };\r\n            }\r\n            if (mayStack && !dimensionInfo.isExtraCoord) {\r\n                if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\r\n                    stackedByDimInfo = dimensionInfo;\r\n                }\r\n                if (!stackedDimInfo\r\n                    && dimensionInfo.type !== 'ordinal'\r\n                    && dimensionInfo.type !== 'time'\r\n                    && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\r\n                    stackedDimInfo = dimensionInfo;\r\n                }\r\n            }\r\n        });\r\n        if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\r\n            byIndex = true;\r\n        }\r\n        if (stackedDimInfo) {\r\n            stackResultDimension = '__\\0ecstackresult';\r\n            stackedOverDimension = '__\\0ecstackedover';\r\n            if (stackedByDimInfo) {\r\n                stackedByDimInfo.createInvertedIndices = true;\r\n            }\r\n            var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\r\n            var stackedDimType = stackedDimInfo.type;\r\n            var stackedDimCoordIndex_1 = 0;\r\n            each(dimensionInfoList, function (dimensionInfo) {\r\n                if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\r\n                    stackedDimCoordIndex_1++;\r\n                }\r\n            });\r\n            dimensionInfoList.push({\r\n                name: stackResultDimension,\r\n                coordDim: stackedDimCoordDim_1,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n            stackedDimCoordIndex_1++;\r\n            dimensionInfoList.push({\r\n                name: stackedOverDimension,\r\n                coordDim: stackedOverDimension,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n        }\r\n        return {\r\n            stackedDimension: stackedDimInfo && stackedDimInfo.name,\r\n            stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\r\n            isStackedByIndex: byIndex,\r\n            stackedOverDimension: stackedOverDimension,\r\n            stackResultDimension: stackResultDimension\r\n        };\r\n    }\r\n    function isDimensionStacked(data, stackedDim) {\r\n        return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\r\n    }\r\n    function getStackedDimension(data, targetDim) {\r\n        return isDimensionStacked(data, targetDim)\r\n            ? data.getCalculationInfo('stackResultDimension')\r\n            : targetDim;\r\n    }\n\n    function createListFromArray(source, seriesModel, opt) {\r\n        opt = opt || {};\r\n        if (!isSourceInstance(source)) {\r\n            source = createSourceFromSeriesDataOption(source);\r\n        }\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var registeredCoordSys = CoordinateSystemManager.get(coordSysName);\r\n        var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\r\n        var coordSysDimDefs;\r\n        if (coordSysInfo && coordSysInfo.coordSysDims) {\r\n            coordSysDimDefs = map(coordSysInfo.coordSysDims, function (dim) {\r\n                var dimInfo = {\r\n                    name: dim\r\n                };\r\n                var axisModel = coordSysInfo.axisMap.get(dim);\r\n                if (axisModel) {\r\n                    var axisType = axisModel.get('type');\r\n                    dimInfo.type = getDimensionTypeByAxis(axisType);\r\n                }\r\n                return dimInfo;\r\n            });\r\n        }\r\n        if (!coordSysDimDefs) {\r\n            coordSysDimDefs = (registeredCoordSys && (registeredCoordSys.getDimensionsInfo\r\n                ? registeredCoordSys.getDimensionsInfo()\r\n                : registeredCoordSys.dimensions.slice())) || ['x', 'y'];\r\n        }\r\n        var useEncodeDefaulter = opt.useEncodeDefaulter;\r\n        var dimInfoList = createDimensions(source, {\r\n            coordDimensions: coordSysDimDefs,\r\n            generateCoord: opt.generateCoord,\r\n            encodeDefaulter: isFunction(useEncodeDefaulter)\r\n                ? useEncodeDefaulter\r\n                : useEncodeDefaulter\r\n                    ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel)\r\n                    : null\r\n        });\r\n        var firstCategoryDimIndex;\r\n        var hasNameEncode;\r\n        coordSysInfo && each(dimInfoList, function (dimInfo, dimIndex) {\r\n            var coordDim = dimInfo.coordDim;\r\n            var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\r\n            if (categoryAxisModel) {\r\n                if (firstCategoryDimIndex == null) {\r\n                    firstCategoryDimIndex = dimIndex;\r\n                }\r\n                dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\r\n            }\r\n            if (dimInfo.otherDims.itemName != null) {\r\n                hasNameEncode = true;\r\n            }\r\n        });\r\n        if (!hasNameEncode && firstCategoryDimIndex != null) {\r\n            dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\r\n        }\r\n        var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\r\n        var list = new List(dimInfoList, seriesModel);\r\n        list.setCalculationInfo(stackCalculationInfo);\r\n        var dimValueGetter = (firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source))\r\n            ? function (itemOpt, dimName, dataIndex, dimIndex) {\r\n                return dimIndex === firstCategoryDimIndex\r\n                    ? dataIndex\r\n                    : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\r\n            }\r\n            : null;\r\n        list.hasItemOption = false;\r\n        list.initData(source, null, dimValueGetter);\r\n        return list;\r\n    }\r\n    function isNeedCompleteOrdinalData(source) {\r\n        if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var sampleItem = firstDataNotNull(source.data || []);\r\n            return sampleItem != null\r\n                && !isArray(getDataItemValue(sampleItem));\r\n        }\r\n    }\r\n    function firstDataNotNull(data) {\r\n        var i = 0;\r\n        while (i < data.length && data[i] == null) {\r\n            i++;\r\n        }\r\n        return data[i];\r\n    }\n\n    var Scale = (function () {\r\n        function Scale(setting) {\r\n            this._setting = setting || {};\r\n            this._extent = [Infinity, -Infinity];\r\n        }\r\n        Scale.prototype.getSetting = function (name) {\r\n            return this._setting[name];\r\n        };\r\n        Scale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n        };\r\n        Scale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        Scale.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Scale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = start;\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = end;\r\n            }\r\n        };\r\n        Scale.prototype.isInExtentRange = function (value) {\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        Scale.prototype.isBlank = function () {\r\n            return this._isBlank;\r\n        };\r\n        Scale.prototype.setBlank = function (isBlank) {\r\n            this._isBlank = isBlank;\r\n        };\r\n        return Scale;\r\n    }());\r\n    enableClassManagement(Scale, {\r\n        registerWhenExtend: true\r\n    });\n\n    var OrdinalMeta = (function () {\r\n        function OrdinalMeta(opt) {\r\n            this.categories = opt.categories || [];\r\n            this._needCollect = opt.needCollect;\r\n            this._deduplication = opt.deduplication;\r\n        }\r\n        OrdinalMeta.createByAxisModel = function (axisModel) {\r\n            var option = axisModel.option;\r\n            var data = option.data;\r\n            var categories = data && map(data, getName);\r\n            return new OrdinalMeta({\r\n                categories: categories,\r\n                needCollect: !categories,\r\n                deduplication: option.dedplication !== false\r\n            });\r\n        };\r\n        OrdinalMeta.prototype.getOrdinal = function (category) {\r\n            return this._getOrCreateMap().get(category);\r\n        };\r\n        OrdinalMeta.prototype.parseAndCollect = function (category) {\r\n            var index;\r\n            var needCollect = this._needCollect;\r\n            if (typeof category !== 'string' && !needCollect) {\r\n                return category;\r\n            }\r\n            if (needCollect && !this._deduplication) {\r\n                index = this.categories.length;\r\n                this.categories[index] = category;\r\n                return index;\r\n            }\r\n            var map = this._getOrCreateMap();\r\n            index = map.get(category);\r\n            if (index == null) {\r\n                if (needCollect) {\r\n                    index = this.categories.length;\r\n                    this.categories[index] = category;\r\n                    map.set(category, index);\r\n                }\r\n                else {\r\n                    index = NaN;\r\n                }\r\n            }\r\n            return index;\r\n        };\r\n        OrdinalMeta.prototype._getOrCreateMap = function () {\r\n            return this._map || (this._map = createHashMap(this.categories));\r\n        };\r\n        return OrdinalMeta;\r\n    }());\r\n    function getName(obj) {\r\n        if (isObject(obj) && obj.value != null) {\r\n            return obj.value;\r\n        }\r\n        else {\r\n            return obj + '';\r\n        }\r\n    }\n\n    var roundNumber = round$1;\r\n    function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\r\n        var result = {};\r\n        var span = extent[1] - extent[0];\r\n        var interval = result.interval = nice(span / splitNumber, true);\r\n        if (minInterval != null && interval < minInterval) {\r\n            interval = result.interval = minInterval;\r\n        }\r\n        if (maxInterval != null && interval > maxInterval) {\r\n            interval = result.interval = maxInterval;\r\n        }\r\n        var precision = result.intervalPrecision = getIntervalPrecision(interval);\r\n        var niceTickExtent = result.niceTickExtent = [\r\n            roundNumber(Math.ceil(extent[0] / interval) * interval, precision),\r\n            roundNumber(Math.floor(extent[1] / interval) * interval, precision)\r\n        ];\r\n        fixExtent(niceTickExtent, extent);\r\n        return result;\r\n    }\r\n    function getIntervalPrecision(interval) {\r\n        return getPrecisionSafe(interval) + 2;\r\n    }\r\n    function clamp(niceTickExtent, idx, extent) {\r\n        niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\r\n    }\r\n    function fixExtent(niceTickExtent, extent) {\r\n        !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\r\n        !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\r\n        clamp(niceTickExtent, 0, extent);\r\n        clamp(niceTickExtent, 1, extent);\r\n        if (niceTickExtent[0] > niceTickExtent[1]) {\r\n            niceTickExtent[0] = niceTickExtent[1];\r\n        }\r\n    }\r\n    function contain$1(val, extent) {\r\n        return val >= extent[0] && val <= extent[1];\r\n    }\r\n    function normalize$1(val, extent) {\r\n        if (extent[1] === extent[0]) {\r\n            return 0.5;\r\n        }\r\n        return (val - extent[0]) / (extent[1] - extent[0]);\r\n    }\r\n    function scale$2(val, extent) {\r\n        return val * (extent[1] - extent[0]) + extent[0];\r\n    }\n\n    var OrdinalScale = (function (_super) {\r\n        __extends(OrdinalScale, _super);\r\n        function OrdinalScale(setting) {\r\n            var _this = _super.call(this, setting) || this;\r\n            _this.type = 'ordinal';\r\n            var ordinalMeta = _this.getSetting('ordinalMeta');\r\n            if (!ordinalMeta) {\r\n                ordinalMeta = new OrdinalMeta({});\r\n            }\r\n            if (isArray(ordinalMeta)) {\r\n                ordinalMeta = new OrdinalMeta({\r\n                    categories: map(ordinalMeta, function (item) { return (isObject(item) ? item.value : item); })\r\n                });\r\n            }\r\n            _this._ordinalMeta = ordinalMeta;\r\n            _this._categorySortInfo = [];\r\n            _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\r\n            return _this;\r\n        }\r\n        OrdinalScale.prototype.parse = function (val) {\r\n            return typeof val === 'string'\r\n                ? this._ordinalMeta.getOrdinal(val)\r\n                : Math.round(val);\r\n        };\r\n        OrdinalScale.prototype.contain = function (rank) {\r\n            rank = this.parse(rank);\r\n            return contain$1(rank, this._extent)\r\n                && this._ordinalMeta.categories[rank] != null;\r\n        };\r\n        OrdinalScale.prototype.normalize = function (val) {\r\n            val = this.getCategoryIndex(this.parse(val));\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        OrdinalScale.prototype.scale = function (val) {\r\n            val = this.getCategoryIndex(val);\r\n            return Math.round(scale$2(val, this._extent));\r\n        };\r\n        OrdinalScale.prototype.getTicks = function () {\r\n            var ticks = [];\r\n            var extent = this._extent;\r\n            var rank = extent[0];\r\n            while (rank <= extent[1]) {\r\n                ticks.push({\r\n                    value: this.getCategoryIndex(rank)\r\n                });\r\n                rank++;\r\n            }\r\n            return ticks;\r\n        };\r\n        OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            return;\r\n        };\r\n        OrdinalScale.prototype.setCategorySortInfo = function (info) {\r\n            this._categorySortInfo = info;\r\n        };\r\n        OrdinalScale.prototype.getCategorySortInfo = function () {\r\n            return this._categorySortInfo;\r\n        };\r\n        OrdinalScale.prototype.getCategoryIndex = function (n) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[n].beforeSortIndex;\r\n            }\r\n            else {\r\n                return n;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getRawIndex = function (displayIndex) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[displayIndex].ordinalNumber;\r\n            }\r\n            else {\r\n                return displayIndex;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getLabel = function (tick) {\r\n            if (!this.isBlank()) {\r\n                var rawIndex = this.getRawIndex(tick.value);\r\n                var cateogry = this._ordinalMeta.categories[rawIndex];\r\n                return cateogry == null ? '' : cateogry + '';\r\n            }\r\n        };\r\n        OrdinalScale.prototype.count = function () {\r\n            return this._extent[1] - this._extent[0] + 1;\r\n        };\r\n        OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        OrdinalScale.prototype.isInExtentRange = function (value) {\r\n            value = this.getCategoryIndex(value);\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        OrdinalScale.prototype.getOrdinalMeta = function () {\r\n            return this._ordinalMeta;\r\n        };\r\n        OrdinalScale.prototype.niceTicks = function () { };\r\n        OrdinalScale.prototype.niceExtent = function () { };\r\n        OrdinalScale.type = 'ordinal';\r\n        return OrdinalScale;\r\n    }(Scale));\r\n    Scale.registerClass(OrdinalScale);\n\n    var roundNumber$1 = round$1;\r\n    var IntervalScale = (function (_super) {\r\n        __extends(IntervalScale, _super);\r\n        function IntervalScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'interval';\r\n            _this._interval = 0;\r\n            _this._intervalPrecision = 2;\r\n            return _this;\r\n        }\r\n        IntervalScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        IntervalScale.prototype.contain = function (val) {\r\n            return contain$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.normalize = function (val) {\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = parseFloat(start);\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = parseFloat(end);\r\n            }\r\n        };\r\n        IntervalScale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n            this.setExtent(extent[0], extent[1]);\r\n        };\r\n        IntervalScale.prototype.getInterval = function () {\r\n            return this._interval;\r\n        };\r\n        IntervalScale.prototype.setInterval = function (interval) {\r\n            this._interval = interval;\r\n            this._niceExtent = this._extent.slice();\r\n            this._intervalPrecision = getIntervalPrecision(interval);\r\n        };\r\n        IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var niceTickExtent = this._niceExtent;\r\n            var intervalPrecision = this._intervalPrecision;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            var safeLimit = 10000;\r\n            if (extent[0] < niceTickExtent[0]) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(niceTickExtent[0] - interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[0]\r\n                    });\r\n                }\r\n            }\r\n            var tick = niceTickExtent[0];\r\n            while (tick <= niceTickExtent[1]) {\r\n                ticks.push({\r\n                    value: tick\r\n                });\r\n                tick = roundNumber$1(tick + interval, intervalPrecision);\r\n                if (tick === ticks[ticks.length - 1].value) {\r\n                    break;\r\n                }\r\n                if (ticks.length > safeLimit) {\r\n                    return [];\r\n                }\r\n            }\r\n            var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\r\n            if (extent[1] > lastNiceTick) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(lastNiceTick + interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[1]\r\n                    });\r\n                }\r\n            }\r\n            return ticks;\r\n        };\r\n        IntervalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            var ticks = this.getTicks(true);\r\n            var minorTicks = [];\r\n            var extent = this.getExtent();\r\n            for (var i = 1; i < ticks.length; i++) {\r\n                var nextTick = ticks[i];\r\n                var prevTick = ticks[i - 1];\r\n                var count = 0;\r\n                var minorTicksGroup = [];\r\n                var interval = nextTick.value - prevTick.value;\r\n                var minorInterval = interval / splitNumber;\r\n                while (count < splitNumber - 1) {\r\n                    var minorTick = roundNumber$1(prevTick.value + (count + 1) * minorInterval);\r\n                    if (minorTick > extent[0] && minorTick < extent[1]) {\r\n                        minorTicksGroup.push(minorTick);\r\n                    }\r\n                    count++;\r\n                }\r\n                minorTicks.push(minorTicksGroup);\r\n            }\r\n            return minorTicks;\r\n        };\r\n        IntervalScale.prototype.getLabel = function (data, opt) {\r\n            if (data == null) {\r\n                return '';\r\n            }\r\n            var precision = opt && opt.precision;\r\n            if (precision == null) {\r\n                precision = getPrecisionSafe(data.value) || 0;\r\n            }\r\n            else if (precision === 'auto') {\r\n                precision = this._intervalPrecision;\r\n            }\r\n            var dataNum = roundNumber$1(data.value, precision, true);\r\n            return addCommas(dataNum);\r\n        };\r\n        IntervalScale.prototype.niceTicks = function (splitNumber, minInterval, maxInterval) {\r\n            splitNumber = splitNumber || 5;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                return;\r\n            }\r\n            if (span < 0) {\r\n                span = -span;\r\n                extent.reverse();\r\n            }\r\n            var result = intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\r\n            this._intervalPrecision = result.intervalPrecision;\r\n            this._interval = result.interval;\r\n            this._niceExtent = result.niceTickExtent;\r\n        };\r\n        IntervalScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                if (extent[0] !== 0) {\r\n                    var expandSize = extent[0];\r\n                    if (!opt.fixMax) {\r\n                        extent[1] += expandSize / 2;\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                    else {\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                }\r\n                else {\r\n                    extent[1] = 1;\r\n                }\r\n            }\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                extent[0] = 0;\r\n                extent[1] = 1;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n            var interval = this._interval;\r\n            if (!opt.fixMin) {\r\n                extent[0] = roundNumber$1(Math.floor(extent[0] / interval) * interval);\r\n            }\r\n            if (!opt.fixMax) {\r\n                extent[1] = roundNumber$1(Math.ceil(extent[1] / interval) * interval);\r\n            }\r\n        };\r\n        IntervalScale.type = 'interval';\r\n        return IntervalScale;\r\n    }(Scale));\r\n    Scale.registerClass(IntervalScale);\n\n    var STACK_PREFIX = '__ec_stack_';\r\n    var LARGE_BAR_MIN_WIDTH = 0.5;\r\n    var LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\n    function getSeriesStackId(seriesModel) {\r\n        return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\r\n    }\r\n    function getAxisKey(axis) {\r\n        return axis.dim + axis.index;\r\n    }\r\n    function getLayoutOnAxis(opt) {\r\n        var params = [];\r\n        var baseAxis = opt.axis;\r\n        var axisKey = 'axis0';\r\n        if (baseAxis.type !== 'category') {\r\n            return;\r\n        }\r\n        var bandWidth = baseAxis.getBandWidth();\r\n        for (var i = 0; i < opt.count || 0; i++) {\r\n            params.push(defaults({\r\n                bandWidth: bandWidth,\r\n                axisKey: axisKey,\r\n                stackId: STACK_PREFIX + i\r\n            }, opt));\r\n        }\r\n        var widthAndOffsets = doCalBarWidthAndOffset(params);\r\n        var result = [];\r\n        for (var i = 0; i < opt.count; i++) {\r\n            var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\r\n            item.offsetCenter = item.offset + item.width / 2;\r\n            result.push(item);\r\n        }\r\n        return result;\r\n    }\r\n    function prepareLayoutBarSeries(seriesType, ecModel) {\r\n        var seriesModels = [];\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\r\n                seriesModels.push(seriesModel);\r\n            }\r\n        });\r\n        return seriesModels;\r\n    }\r\n    function getValueAxesMinGaps(barSeries) {\r\n        var axisValues = {};\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var key = baseAxis.dim + '_' + baseAxis.index;\r\n            var dim = data.mapDimension(baseAxis.dim);\r\n            for (var i = 0, cnt = data.count(); i < cnt; ++i) {\r\n                var value = data.get(dim, i);\r\n                if (!axisValues[key]) {\r\n                    axisValues[key] = [value];\r\n                }\r\n                else {\r\n                    axisValues[key].push(value);\r\n                }\r\n            }\r\n        });\r\n        var axisMinGaps = {};\r\n        for (var key in axisValues) {\r\n            if (axisValues.hasOwnProperty(key)) {\r\n                var valuesInAxis = axisValues[key];\r\n                if (valuesInAxis) {\r\n                    valuesInAxis.sort(function (a, b) {\r\n                        return a - b;\r\n                    });\r\n                    var min = null;\r\n                    for (var j = 1; j < valuesInAxis.length; ++j) {\r\n                        var delta = valuesInAxis[j] - valuesInAxis[j - 1];\r\n                        if (delta > 0) {\r\n                            min = min === null ? delta : Math.min(min, delta);\r\n                        }\r\n                    }\r\n                    axisMinGaps[key] = min;\r\n                }\r\n            }\r\n        }\r\n        return axisMinGaps;\r\n    }\r\n    function makeColumnLayout(barSeries) {\r\n        var axisMinGaps = getValueAxesMinGaps(barSeries);\r\n        var seriesInfoList = [];\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var axisExtent = baseAxis.getExtent();\r\n            var bandWidth;\r\n            if (baseAxis.type === 'category') {\r\n                bandWidth = baseAxis.getBandWidth();\r\n            }\r\n            else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\r\n                var key = baseAxis.dim + '_' + baseAxis.index;\r\n                var minGap = axisMinGaps[key];\r\n                var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\r\n                var scale = baseAxis.scale.getExtent();\r\n                var scaleSpan = Math.abs(scale[1] - scale[0]);\r\n                bandWidth = minGap\r\n                    ? extentSpan / scaleSpan * minGap\r\n                    : extentSpan;\r\n            }\r\n            else {\r\n                var data = seriesModel.getData();\r\n                bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\r\n            }\r\n            var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n            var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n            var barMinWidth = parsePercent$2(seriesModel.get('barMinWidth') || 1, bandWidth);\r\n            var barGap = seriesModel.get('barGap');\r\n            var barCategoryGap = seriesModel.get('barCategoryGap');\r\n            seriesInfoList.push({\r\n                bandWidth: bandWidth,\r\n                barWidth: barWidth,\r\n                barMaxWidth: barMaxWidth,\r\n                barMinWidth: barMinWidth,\r\n                barGap: barGap,\r\n                barCategoryGap: barCategoryGap,\r\n                axisKey: getAxisKey(baseAxis),\r\n                stackId: getSeriesStackId(seriesModel)\r\n            });\r\n        });\r\n        return doCalBarWidthAndOffset(seriesInfoList);\r\n    }\r\n    function doCalBarWidthAndOffset(seriesInfoList) {\r\n        var columnsMap = {};\r\n        each(seriesInfoList, function (seriesInfo, idx) {\r\n            var axisKey = seriesInfo.axisKey;\r\n            var bandWidth = seriesInfo.bandWidth;\r\n            var columnsOnAxis = columnsMap[axisKey] || {\r\n                bandWidth: bandWidth,\r\n                remainedWidth: bandWidth,\r\n                autoWidthCount: 0,\r\n                categoryGap: null,\r\n                gap: '20%',\r\n                stacks: {}\r\n            };\r\n            var stacks = columnsOnAxis.stacks;\r\n            columnsMap[axisKey] = columnsOnAxis;\r\n            var stackId = seriesInfo.stackId;\r\n            if (!stacks[stackId]) {\r\n                columnsOnAxis.autoWidthCount++;\r\n            }\r\n            stacks[stackId] = stacks[stackId] || {\r\n                width: 0,\r\n                maxWidth: 0\r\n            };\r\n            var barWidth = seriesInfo.barWidth;\r\n            if (barWidth && !stacks[stackId].width) {\r\n                stacks[stackId].width = barWidth;\r\n                barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n                columnsOnAxis.remainedWidth -= barWidth;\r\n            }\r\n            var barMaxWidth = seriesInfo.barMaxWidth;\r\n            barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n            var barMinWidth = seriesInfo.barMinWidth;\r\n            barMinWidth && (stacks[stackId].minWidth = barMinWidth);\r\n            var barGap = seriesInfo.barGap;\r\n            (barGap != null) && (columnsOnAxis.gap = barGap);\r\n            var barCategoryGap = seriesInfo.barCategoryGap;\r\n            (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n        });\r\n        var result = {};\r\n        each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n            result[coordSysName] = {};\r\n            var stacks = columnsOnAxis.stacks;\r\n            var bandWidth = columnsOnAxis.bandWidth;\r\n            var categoryGapPercent = columnsOnAxis.categoryGap;\r\n            if (categoryGapPercent == null) {\r\n                var columnCount = keys(stacks).length;\r\n                categoryGapPercent = Math.max((35 - columnCount * 4), 15) + '%';\r\n            }\r\n            var categoryGap = parsePercent$2(categoryGapPercent, bandWidth);\r\n            var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n            var remainedWidth = columnsOnAxis.remainedWidth;\r\n            var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n            var autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            each(stacks, function (column) {\r\n                var maxWidth = column.maxWidth;\r\n                var minWidth = column.minWidth;\r\n                if (!column.width) {\r\n                    var finalWidth = autoWidth;\r\n                    if (maxWidth && maxWidth < finalWidth) {\r\n                        finalWidth = Math.min(maxWidth, remainedWidth);\r\n                    }\r\n                    if (minWidth && minWidth > finalWidth) {\r\n                        finalWidth = minWidth;\r\n                    }\r\n                    if (finalWidth !== autoWidth) {\r\n                        column.width = finalWidth;\r\n                        remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                        autoWidthCount--;\r\n                    }\r\n                }\r\n                else {\r\n                    var finalWidth = column.width;\r\n                    if (maxWidth) {\r\n                        finalWidth = Math.min(finalWidth, maxWidth);\r\n                    }\r\n                    if (minWidth) {\r\n                        finalWidth = Math.max(finalWidth, minWidth);\r\n                    }\r\n                    column.width = finalWidth;\r\n                    remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                    autoWidthCount--;\r\n                }\r\n            });\r\n            autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            var widthSum = 0;\r\n            var lastColumn;\r\n            each(stacks, function (column, idx) {\r\n                if (!column.width) {\r\n                    column.width = autoWidth;\r\n                }\r\n                lastColumn = column;\r\n                widthSum += column.width * (1 + barGapPercent);\r\n            });\r\n            if (lastColumn) {\r\n                widthSum -= lastColumn.width * barGapPercent;\r\n            }\r\n            var offset = -widthSum / 2;\r\n            each(stacks, function (column, stackId) {\r\n                result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n                    bandWidth: bandWidth,\r\n                    offset: offset,\r\n                    width: column.width\r\n                };\r\n                offset += column.width * (1 + barGapPercent);\r\n            });\r\n        });\r\n        return result;\r\n    }\r\n    function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\r\n        if (barWidthAndOffset && axis) {\r\n            var result = barWidthAndOffset[getAxisKey(axis)];\r\n            if (result != null && seriesModel != null) {\r\n                return result[getSeriesStackId(seriesModel)];\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function layout(seriesType, ecModel) {\r\n        var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\r\n        var barWidthAndOffset = makeColumnLayout(seriesModels);\r\n        var lastStackCoords = {};\r\n        each(seriesModels, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var stackId = getSeriesStackId(seriesModel);\r\n            var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\r\n            var columnOffset = columnLayoutInfo.offset;\r\n            var columnWidth = columnLayoutInfo.width;\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n            lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n            data.setLayout({\r\n                bandWidth: columnLayoutInfo.bandWidth,\r\n                offset: columnOffset,\r\n                size: columnWidth\r\n            });\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var stacked = isDimensionStacked(data, valueDim);\r\n            var isValueAxisH = valueAxis.isHorizontal();\r\n            var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\r\n            for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n                var value = data.get(valueDim, idx);\r\n                var baseValue = data.get(baseDim, idx);\r\n                var sign = value >= 0 ? 'p' : 'n';\r\n                var baseCoord = valueAxisStart;\r\n                if (stacked) {\r\n                    if (!lastStackCoords[stackId][baseValue]) {\r\n                        lastStackCoords[stackId][baseValue] = {\r\n                            p: valueAxisStart,\r\n                            n: valueAxisStart\r\n                        };\r\n                    }\r\n                    baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n                }\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var width = void 0;\r\n                var height = void 0;\r\n                if (isValueAxisH) {\r\n                    var coord = cartesian.dataToPoint([value, baseValue]);\r\n                    x = baseCoord;\r\n                    y = coord[1] + columnOffset;\r\n                    width = coord[0] - valueAxisStart;\r\n                    height = columnWidth;\r\n                    if (Math.abs(width) < barMinHeight) {\r\n                        width = (width < 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(width)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += width);\r\n                    }\r\n                }\r\n                else {\r\n                    var coord = cartesian.dataToPoint([baseValue, value]);\r\n                    x = coord[0] + columnOffset;\r\n                    y = baseCoord;\r\n                    width = columnWidth;\r\n                    height = coord[1] - valueAxisStart;\r\n                    if (Math.abs(height) < barMinHeight) {\r\n                        height = (height <= 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(height)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += height);\r\n                    }\r\n                }\r\n                data.setItemLayout(idx, {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                });\r\n            }\r\n        });\r\n    }\r\n    var largeLayout = {\r\n        seriesType: 'bar',\r\n        plan: createRenderPlanner(),\r\n        reset: function (seriesModel) {\r\n            if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var coordLayout = cartesian.master.getRect();\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var valueAxisHorizontal = valueAxis.isHorizontal();\r\n            var valueDimIdx = valueAxisHorizontal ? 0 : 1;\r\n            var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\r\n            if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\r\n                barWidth = LARGE_BAR_MIN_WIDTH;\r\n            }\r\n            return {\r\n                progress: function (params, data) {\r\n                    var count = params.count;\r\n                    var largePoints = new LargeArr(count * 2);\r\n                    var largeBackgroundPoints = new LargeArr(count * 2);\r\n                    var largeDataIndices = new LargeArr(count);\r\n                    var dataIndex;\r\n                    var coord = [];\r\n                    var valuePair = [];\r\n                    var pointsOffset = 0;\r\n                    var idxOffset = 0;\r\n                    while ((dataIndex = params.next()) != null) {\r\n                        valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\r\n                        valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\r\n                        coord = cartesian.dataToPoint(valuePair, null, coord);\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\r\n                        largePoints[pointsOffset++] = coord[0];\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\r\n                        largePoints[pointsOffset++] = coord[1];\r\n                        largeDataIndices[idxOffset++] = dataIndex;\r\n                    }\r\n                    data.setLayout({\r\n                        largePoints: largePoints,\r\n                        largeDataIndices: largeDataIndices,\r\n                        largeBackgroundPoints: largeBackgroundPoints,\r\n                        barWidth: barWidth,\r\n                        valueAxisStart: getValueAxisStart(baseAxis, valueAxis),\r\n                        backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\r\n                        valueAxisHorizontal: valueAxisHorizontal\r\n                    });\r\n                }\r\n            };\r\n        }\r\n    };\r\n    function isOnCartesian(seriesModel) {\r\n        return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\r\n    }\r\n    function isInLargeMode(seriesModel) {\r\n        return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\r\n    }\r\n    function getValueAxisStart(baseAxis, valueAxis, stacked) {\r\n        return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\r\n    }\n\n    var bisect = function (a, x, lo, hi) {\r\n        while (lo < hi) {\r\n            var mid = lo + hi >>> 1;\r\n            if (a[mid][1] < x) {\r\n                lo = mid + 1;\r\n            }\r\n            else {\r\n                hi = mid;\r\n            }\r\n        }\r\n        return lo;\r\n    };\r\n    var TimeScale = (function (_super) {\r\n        __extends(TimeScale, _super);\r\n        function TimeScale(settings) {\r\n            var _this = _super.call(this, settings) || this;\r\n            _this.type = 'time';\r\n            return _this;\r\n        }\r\n        TimeScale.prototype.getLabel = function (tick) {\r\n            var useUTC = this.getSetting('useUTC');\r\n            return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\r\n        };\r\n        TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\r\n            var isUTC = this.getSetting('useUTC');\r\n            var lang = this.getSetting('locale');\r\n            return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\r\n        };\r\n        TimeScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            ticks.push({\r\n                value: extent[0],\r\n                level: 0\r\n            });\r\n            var useUTC = this.getSetting('useUTC');\r\n            var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\r\n            ticks = ticks.concat(innerTicks);\r\n            ticks.push({\r\n                value: extent[1],\r\n                level: 0\r\n            });\r\n            return ticks;\r\n        };\r\n        TimeScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                extent[0] -= ONE_DAY;\r\n                extent[1] += ONE_DAY;\r\n            }\r\n            if (extent[1] === -Infinity && extent[0] === Infinity) {\r\n                var d = new Date();\r\n                extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n                extent[0] = extent[1] - ONE_DAY;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n        };\r\n        TimeScale.prototype.niceTicks = function (approxTickNum, minInterval, maxInterval) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            this._approxInterval = span / approxTickNum;\r\n            if (minInterval != null && this._approxInterval < minInterval) {\r\n                this._approxInterval = minInterval;\r\n            }\r\n            if (maxInterval != null && this._approxInterval > maxInterval) {\r\n                this._approxInterval = maxInterval;\r\n            }\r\n            var scaleIntervalsLen = scaleIntervals.length;\r\n            var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);\r\n            this._interval = scaleIntervals[idx][1];\r\n            this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\r\n        };\r\n        TimeScale.prototype.parse = function (val) {\r\n            return typeof val === 'number' ? val : +parseDate(val);\r\n        };\r\n        TimeScale.prototype.contain = function (val) {\r\n            return contain$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.normalize = function (val) {\r\n            return normalize$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        TimeScale.type = 'time';\r\n        return TimeScale;\r\n    }(IntervalScale));\r\n    var scaleIntervals = [\r\n        ['second', ONE_SECOND],\r\n        ['minute', ONE_MINUTE],\r\n        ['hour', ONE_HOUR],\r\n        ['quarter-day', ONE_HOUR * 6],\r\n        ['half-day', ONE_HOUR * 12],\r\n        ['day', ONE_DAY * 1.2],\r\n        ['half-week', ONE_DAY * 3.5],\r\n        ['week', ONE_DAY * 7],\r\n        ['month', ONE_DAY * 31],\r\n        ['quarter', ONE_DAY * 95],\r\n        ['half-year', ONE_YEAR / 2],\r\n        ['year', ONE_YEAR]\r\n    ];\r\n    function isUnitValueSame(unit, valueA, valueB, isUTC) {\r\n        var dateA = parseDate(valueA);\r\n        var dateB = parseDate(valueB);\r\n        var isSame = function (unit) {\r\n            return getUnitValue(dateA, unit, isUTC)\r\n                === getUnitValue(dateB, unit, isUTC);\r\n        };\r\n        var isSameYear = function () { return isSame('year'); };\r\n        var isSameMonth = function () { return isSameYear() && isSame('month'); };\r\n        var isSameDay = function () { return isSameMonth() && isSame('day'); };\r\n        var isSameHour = function () { return isSameDay() && isSame('hour'); };\r\n        var isSameMinute = function () { return isSameHour() && isSame('minute'); };\r\n        var isSameSecond = function () { return isSameMinute() && isSame('second'); };\r\n        var isSameMilliSecond = function () { return isSameSecond() && isSame('millisecond'); };\r\n        switch (unit) {\r\n            case 'year':\r\n                return isSameYear();\r\n            case 'month':\r\n                return isSameMonth();\r\n            case 'day':\r\n                return isSameDay();\r\n            case 'hour':\r\n                return isSameHour();\r\n            case 'minute':\r\n                return isSameMinute();\r\n            case 'second':\r\n                return isSameSecond();\r\n            case 'millisecond':\r\n                return isSameMilliSecond();\r\n        }\r\n    }\r\n    function getDateInterval(approxInterval, daysInMonth) {\r\n        approxInterval /= ONE_DAY;\r\n        return approxInterval > 16 ? 16\r\n            : approxInterval > 7.5 ? 7\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 1.5 ? 2 : 1;\r\n    }\r\n    function getMonthInterval(approxInterval) {\r\n        var APPROX_ONE_MONTH = 30 * ONE_DAY;\r\n        approxInterval /= APPROX_ONE_MONTH;\r\n        return approxInterval > 6 ? 6\r\n            : approxInterval > 3 ? 3\r\n                : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getHourInterval(approxInterval) {\r\n        approxInterval /= ONE_HOUR;\r\n        return approxInterval > 12 ? 12\r\n            : approxInterval > 6 ? 6\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMinutesAndSecondsInterval(approxInterval, isMinutes) {\r\n        approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\r\n        return approxInterval > 30 ? 30\r\n            : approxInterval > 20 ? 20\r\n                : approxInterval > 15 ? 15\r\n                    : approxInterval > 10 ? 10\r\n                        : approxInterval > 5 ? 5\r\n                            : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMillisecondsInterval(approxInterval) {\r\n        return nice(approxInterval, true);\r\n    }\r\n    function getFirstTimestampOfUnit(date, unitName, isUTC) {\r\n        var outDate = new Date(date);\r\n        switch (getPrimaryTimeUnit(unitName)) {\r\n            case 'year':\r\n            case 'month':\r\n                outDate[monthSetterName(isUTC)](0);\r\n            case 'day':\r\n                outDate[dateSetterName(isUTC)](1);\r\n            case 'hour':\r\n                outDate[hoursSetterName(isUTC)](0);\r\n            case 'minute':\r\n                outDate[minutesSetterName(isUTC)](0);\r\n            case 'second':\r\n                outDate[secondsSetterName(isUTC)](0);\r\n                outDate[millisecondsSetterName(isUTC)](0);\r\n        }\r\n        return outDate.getTime();\r\n    }\r\n    function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\r\n        var safeLimit = 10000;\r\n        var unitNames = timeUnits;\r\n        var iter = 0;\r\n        function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\r\n            var date = new Date(minTimestamp);\r\n            var dateTime = minTimestamp;\r\n            var d = date[getMethodName]();\r\n            while (dateTime < maxTimestamp && dateTime <= extent[1]) {\r\n                out.push({\r\n                    value: dateTime\r\n                });\r\n                d += interval;\r\n                date[setMethodName](d);\r\n                dateTime = date.getTime();\r\n            }\r\n            out.push({\r\n                value: dateTime,\r\n                notAdd: true\r\n            });\r\n        }\r\n        function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\r\n            var newAddedTicks = [];\r\n            var isFirstLevel = !lastLevelTicks.length;\r\n            if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\r\n                return;\r\n            }\r\n            if (isFirstLevel) {\r\n                lastLevelTicks = [{\r\n                        value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\r\n                    }, {\r\n                        value: extent[1]\r\n                    }];\r\n            }\r\n            for (var i = 0; i < lastLevelTicks.length - 1; i++) {\r\n                var startTick = lastLevelTicks[i].value;\r\n                var endTick = lastLevelTicks[i + 1].value;\r\n                if (startTick === endTick) {\r\n                    continue;\r\n                }\r\n                var interval = void 0;\r\n                var getterName = void 0;\r\n                var setterName = void 0;\r\n                var isDate = false;\r\n                switch (unitName) {\r\n                    case 'year':\r\n                        interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\r\n                        getterName = fullYearGetterName(isUTC);\r\n                        setterName = fullYearSetterName(isUTC);\r\n                        break;\r\n                    case 'half-year':\r\n                    case 'quarter':\r\n                    case 'month':\r\n                        interval = getMonthInterval(approxInterval);\r\n                        getterName = monthGetterName(isUTC);\r\n                        setterName = monthSetterName(isUTC);\r\n                        break;\r\n                    case 'week':\r\n                    case 'half-week':\r\n                    case 'day':\r\n                        interval = getDateInterval(approxInterval);\r\n                        getterName = dateGetterName(isUTC);\r\n                        setterName = dateSetterName(isUTC);\r\n                        isDate = true;\r\n                        break;\r\n                    case 'half-day':\r\n                    case 'quarter-day':\r\n                    case 'hour':\r\n                        interval = getHourInterval(approxInterval);\r\n                        getterName = hoursGetterName(isUTC);\r\n                        setterName = hoursSetterName(isUTC);\r\n                        break;\r\n                    case 'minute':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, true);\r\n                        getterName = minutesGetterName(isUTC);\r\n                        setterName = minutesSetterName(isUTC);\r\n                        break;\r\n                    case 'second':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, false);\r\n                        getterName = secondsGetterName(isUTC);\r\n                        setterName = secondsSetterName(isUTC);\r\n                        break;\r\n                    case 'millisecond':\r\n                        interval = getMillisecondsInterval(approxInterval);\r\n                        getterName = millisecondsGetterName(isUTC);\r\n                        setterName = millisecondsSetterName(isUTC);\r\n                        break;\r\n                }\r\n                addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\r\n                if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\r\n                    levelTicks.unshift({\r\n                        value: levelTicks[0].value - interval\r\n                    });\r\n                }\r\n            }\r\n            for (var i = 0; i < newAddedTicks.length; i++) {\r\n                levelTicks.push(newAddedTicks[i]);\r\n            }\r\n            return newAddedTicks;\r\n        }\r\n        var levelsTicks = [];\r\n        var currentLevelTicks = [];\r\n        var tickCount = 0;\r\n        var lastLevelTickCount = 0;\r\n        for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\r\n            var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\r\n            if (!isPrimaryTimeUnit(unitNames[i])) {\r\n                continue;\r\n            }\r\n            addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\r\n            var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\r\n            if (primaryTimeUnit !== nextPrimaryTimeUnit) {\r\n                if (currentLevelTicks.length) {\r\n                    lastLevelTickCount = tickCount;\r\n                    currentLevelTicks.sort(function (a, b) { return a.value - b.value; });\r\n                    var levelTicksRemoveDuplicated = [];\r\n                    for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\r\n                        var tickValue = currentLevelTicks[i_1].value;\r\n                        if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\r\n                            levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\r\n                            if (tickValue >= extent[0] && tickValue <= extent[1]) {\r\n                                tickCount++;\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetTickNum = (extent[1] - extent[0]) / approxInterval;\r\n                    if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\r\n                        break;\r\n                    }\r\n                    levelsTicks.push(levelTicksRemoveDuplicated);\r\n                    if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\r\n                        break;\r\n                    }\r\n                }\r\n                currentLevelTicks = [];\r\n            }\r\n        }\r\n        if (__DEV__) {\r\n            if (iter >= safeLimit) {\r\n                warn('Exceed safe limit.');\r\n            }\r\n        }\r\n        var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\r\n            return filter(levelTicks, function (tick) { return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd; });\r\n        }), function (levelTicks) { return levelTicks.length > 0; });\r\n        var ticks = [];\r\n        var maxLevel = levelsTicksInExtent.length - 1;\r\n        for (var i = 0; i < levelsTicksInExtent.length; ++i) {\r\n            var levelTicks = levelsTicksInExtent[i];\r\n            for (var k = 0; k < levelTicks.length; ++k) {\r\n                ticks.push({\r\n                    value: levelTicks[k].value,\r\n                    level: maxLevel - i\r\n                });\r\n            }\r\n        }\r\n        ticks.sort(function (a, b) { return a.value - b.value; });\r\n        var result = [];\r\n        for (var i = 0; i < ticks.length; ++i) {\r\n            if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\r\n                result.push(ticks[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    Scale.registerClass(TimeScale);\n\n    var scaleProto = Scale.prototype;\r\n    var intervalScaleProto = IntervalScale.prototype;\r\n    var getPrecisionSafe$1 = getPrecisionSafe;\r\n    var roundingErrorFix = round$1;\r\n    var mathFloor$1 = Math.floor;\r\n    var mathCeil = Math.ceil;\r\n    var mathPow$1 = Math.pow;\r\n    var mathLog = Math.log;\r\n    var LogScale = (function (_super) {\r\n        __extends(LogScale, _super);\r\n        function LogScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'log';\r\n            _this.base = 10;\r\n            _this._originalScale = new IntervalScale();\r\n            _this._interval = 0;\r\n            return _this;\r\n        }\r\n        LogScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var originalScale = this._originalScale;\r\n            var extent = this._extent;\r\n            var originalExtent = originalScale.getExtent();\r\n            var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\r\n            return map(ticks, function (tick) {\r\n                var val = tick.value;\r\n                var powVal = round$1(mathPow$1(this.base, val));\r\n                powVal = (val === extent[0] && this._fixMin)\r\n                    ? fixRoundingError(powVal, originalExtent[0])\r\n                    : powVal;\r\n                powVal = (val === extent[1] && this._fixMax)\r\n                    ? fixRoundingError(powVal, originalExtent[1])\r\n                    : powVal;\r\n                return {\r\n                    value: powVal\r\n                };\r\n            }, this);\r\n        };\r\n        LogScale.prototype.setExtent = function (start, end) {\r\n            var base = this.base;\r\n            start = mathLog(start) / mathLog(base);\r\n            end = mathLog(end) / mathLog(base);\r\n            intervalScaleProto.setExtent.call(this, start, end);\r\n        };\r\n        LogScale.prototype.getExtent = function () {\r\n            var base = this.base;\r\n            var extent = scaleProto.getExtent.call(this);\r\n            extent[0] = mathPow$1(base, extent[0]);\r\n            extent[1] = mathPow$1(base, extent[1]);\r\n            var originalScale = this._originalScale;\r\n            var originalExtent = originalScale.getExtent();\r\n            this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\r\n            this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\r\n            return extent;\r\n        };\r\n        LogScale.prototype.unionExtent = function (extent) {\r\n            this._originalScale.unionExtent(extent);\r\n            var base = this.base;\r\n            extent[0] = mathLog(extent[0]) / mathLog(base);\r\n            extent[1] = mathLog(extent[1]) / mathLog(base);\r\n            scaleProto.unionExtent.call(this, extent);\r\n        };\r\n        LogScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        LogScale.prototype.niceTicks = function (approxTickNum) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (span === Infinity || span <= 0) {\r\n                return;\r\n            }\r\n            var interval = quantity(span);\r\n            var err = approxTickNum / span * interval;\r\n            if (err <= 0.5) {\r\n                interval *= 10;\r\n            }\r\n            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\r\n                interval *= 10;\r\n            }\r\n            var niceExtent = [\r\n                round$1(mathCeil(extent[0] / interval) * interval),\r\n                round$1(mathFloor$1(extent[1] / interval) * interval)\r\n            ];\r\n            this._interval = interval;\r\n            this._niceExtent = niceExtent;\r\n        };\r\n        LogScale.prototype.niceExtent = function (opt) {\r\n            intervalScaleProto.niceExtent.call(this, opt);\r\n            this._fixMin = opt.fixMin;\r\n            this._fixMax = opt.fixMax;\r\n        };\r\n        LogScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        LogScale.prototype.contain = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return contain$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.normalize = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.scale = function (val) {\r\n            val = scale$2(val, this._extent);\r\n            return mathPow$1(this.base, val);\r\n        };\r\n        LogScale.type = 'log';\r\n        return LogScale;\r\n    }(Scale));\r\n    var proto = LogScale.prototype;\r\n    proto.getMinorTicks = intervalScaleProto.getMinorTicks;\r\n    proto.getLabel = intervalScaleProto.getLabel;\r\n    function fixRoundingError(val, originalVal) {\r\n        return roundingErrorFix(val, getPrecisionSafe$1(originalVal));\r\n    }\r\n    Scale.registerClass(LogScale);\n\n    var ScaleRawExtentInfo = (function () {\r\n        function ScaleRawExtentInfo(scale, model, originalExtent) {\r\n            this._prepareParams(scale, model, originalExtent);\r\n        }\r\n        ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, dataExtent) {\r\n            if (dataExtent[1] < dataExtent[0]) {\r\n                dataExtent = [NaN, NaN];\r\n            }\r\n            this._dataMin = dataExtent[0];\r\n            this._dataMax = dataExtent[1];\r\n            var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\r\n            this._needCrossZero = model.getNeedCrossZero && model.getNeedCrossZero();\r\n            var modelMinRaw = this._modelMinRaw = model.get('min', true);\r\n            if (isFunction(modelMinRaw)) {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMinRaw !== 'dataMin') {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\r\n            }\r\n            var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\r\n            if (isFunction(modelMaxRaw)) {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMaxRaw !== 'dataMax') {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\r\n            }\r\n            if (isOrdinal) {\r\n                this._axisDataLen = model.getCategories().length;\r\n            }\r\n            else {\r\n                var boundaryGap = model.get('boundaryGap');\r\n                var boundaryGapArr = isArray(boundaryGap)\r\n                    ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\r\n                if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\r\n                    if (__DEV__) {\r\n                        console.warn('Boolean type for boundaryGap is only '\r\n                            + 'allowed for ordinal axis. Please use string in '\r\n                            + 'percentage instead, e.g., \"20%\". Currently, '\r\n                            + 'boundaryGap is set to be 0.');\r\n                    }\r\n                    this._boundaryGapInner = [0, 0];\r\n                }\r\n                else {\r\n                    this._boundaryGapInner = [\r\n                        parsePercent(boundaryGapArr[0], 1),\r\n                        parsePercent(boundaryGapArr[1], 1)\r\n                    ];\r\n                }\r\n            }\r\n        };\r\n        ScaleRawExtentInfo.prototype.calculate = function () {\r\n            var isOrdinal = this._isOrdinal;\r\n            var dataMin = this._dataMin;\r\n            var dataMax = this._dataMax;\r\n            var axisDataLen = this._axisDataLen;\r\n            var boundaryGapInner = this._boundaryGapInner;\r\n            var span = !isOrdinal\r\n                ? ((dataMax - dataMin) || Math.abs(dataMin))\r\n                : null;\r\n            var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\r\n            var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum;\r\n            var minFixed = min != null;\r\n            var maxFixed = max != null;\r\n            if (min == null) {\r\n                min = isOrdinal\r\n                    ? (axisDataLen ? 0 : NaN)\r\n                    : dataMin - boundaryGapInner[0] * span;\r\n            }\r\n            if (max == null) {\r\n                max = isOrdinal\r\n                    ? (axisDataLen ? axisDataLen - 1 : NaN)\r\n                    : dataMax + boundaryGapInner[1] * span;\r\n            }\r\n            (min == null || !isFinite(min)) && (min = NaN);\r\n            (max == null || !isFinite(max)) && (max = NaN);\r\n            if (min > max) {\r\n                min = NaN;\r\n                max = NaN;\r\n            }\r\n            var isBlank = eqNaN(min)\r\n                || eqNaN(max)\r\n                || (isOrdinal && !axisDataLen);\r\n            if (this._needCrossZero) {\r\n                if (min > 0 && max > 0 && !minFixed) {\r\n                    min = 0;\r\n                }\r\n                if (min < 0 && max < 0 && !maxFixed) {\r\n                    max = 0;\r\n                }\r\n            }\r\n            var determinedMin = this._determinedMin;\r\n            var determinedMax = this._determinedMax;\r\n            if (determinedMin != null) {\r\n                min = determinedMin;\r\n                minFixed = true;\r\n            }\r\n            if (determinedMax != null) {\r\n                max = determinedMax;\r\n                maxFixed = true;\r\n            }\r\n            return {\r\n                min: min,\r\n                max: max,\r\n                minFixed: minFixed,\r\n                maxFixed: maxFixed,\r\n                isBlank: isBlank\r\n            };\r\n        };\r\n        ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\r\n            if (__DEV__) {\r\n                assert(!this.frozen);\r\n            }\r\n            this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\r\n            var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\r\n            if (__DEV__) {\r\n                assert(!this.frozen\r\n                    && (this[attr] == null));\r\n            }\r\n            this[attr] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.freeze = function () {\r\n            this.frozen = true;\r\n        };\r\n        return ScaleRawExtentInfo;\r\n    }());\r\n    var DETERMINED_MIN_MAX_ATTR = { min: '_determinedMin', max: '_determinedMax' };\r\n    var DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' };\r\n    function ensureScaleRawExtentInfo(scale, model, originalExtent) {\r\n        var rawExtentInfo = scale.rawExtentInfo;\r\n        if (rawExtentInfo) {\r\n            return rawExtentInfo;\r\n        }\r\n        rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);\r\n        scale.rawExtentInfo = rawExtentInfo;\r\n        return rawExtentInfo;\r\n    }\r\n    function parseAxisModelMinMax(scale, minMax) {\r\n        return minMax == null ? null\r\n            : eqNaN(minMax) ? NaN\r\n                : scale.parse(minMax);\r\n    }\n\n    function getScaleExtent(scale, model) {\r\n        var scaleType = scale.type;\r\n        var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\r\n        scale.setBlank(rawExtentResult.isBlank);\r\n        var min = rawExtentResult.min;\r\n        var max = rawExtentResult.max;\r\n        var ecModel = model.ecModel;\r\n        if (ecModel && (scaleType === 'time')) {\r\n            var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\r\n            var isBaseAxisAndHasBarSeries_1 = false;\r\n            each(barSeriesModels, function (seriesModel) {\r\n                isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\r\n            });\r\n            if (isBaseAxisAndHasBarSeries_1) {\r\n                var barWidthAndOffset = makeColumnLayout(barSeriesModels);\r\n                var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\r\n                min = adjustedScale.min;\r\n                max = adjustedScale.max;\r\n            }\r\n        }\r\n        return {\r\n            extent: [min, max],\r\n            fixMin: rawExtentResult.minFixed,\r\n            fixMax: rawExtentResult.maxFixed\r\n        };\r\n    }\r\n    function adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\r\n        var axisExtent = model.axis.getExtent();\r\n        var axisLength = axisExtent[1] - axisExtent[0];\r\n        var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\r\n        if (barsOnCurrentAxis === undefined) {\r\n            return { min: min, max: max };\r\n        }\r\n        var minOverflow = Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            minOverflow = Math.min(item.offset, minOverflow);\r\n        });\r\n        var maxOverflow = -Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            maxOverflow = Math.max(item.offset + item.width, maxOverflow);\r\n        });\r\n        minOverflow = Math.abs(minOverflow);\r\n        maxOverflow = Math.abs(maxOverflow);\r\n        var totalOverFlow = minOverflow + maxOverflow;\r\n        var oldRange = max - min;\r\n        var oldRangePercentOfNew = (1 - (minOverflow + maxOverflow) / axisLength);\r\n        var overflowBuffer = ((oldRange / oldRangePercentOfNew) - oldRange);\r\n        max += overflowBuffer * (maxOverflow / totalOverFlow);\r\n        min -= overflowBuffer * (minOverflow / totalOverFlow);\r\n        return { min: min, max: max };\r\n    }\r\n    function niceScaleExtent(scale, model) {\r\n        var extentInfo = getScaleExtent(scale, model);\r\n        var extent = extentInfo.extent;\r\n        var splitNumber = model.get('splitNumber');\r\n        if (scale instanceof LogScale) {\r\n            scale.base = model.get('logBase');\r\n        }\r\n        var scaleType = scale.type;\r\n        scale.setExtent(extent[0], extent[1]);\r\n        scale.niceExtent({\r\n            splitNumber: splitNumber,\r\n            fixMin: extentInfo.fixMin,\r\n            fixMax: extentInfo.fixMax,\r\n            minInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('minInterval') : null,\r\n            maxInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('maxInterval') : null\r\n        });\r\n        var interval = model.get('interval');\r\n        if (interval != null) {\r\n            scale.setInterval && scale.setInterval(interval);\r\n        }\r\n    }\r\n    function createScaleByModel(model, axisType) {\r\n        axisType = axisType || model.get('type');\r\n        if (axisType) {\r\n            switch (axisType) {\r\n                case 'category':\r\n                    return new OrdinalScale({\r\n                        ordinalMeta: model.getOrdinalMeta\r\n                            ? model.getOrdinalMeta()\r\n                            : model.getCategories(),\r\n                        extent: [Infinity, -Infinity]\r\n                    });\r\n                case 'time':\r\n                    return new TimeScale({\r\n                        locale: model.ecModel.getLocaleModel(),\r\n                        useUTC: model.ecModel.get('useUTC')\r\n                    });\r\n                default:\r\n                    return new (Scale.getClass(axisType) || IntervalScale)();\r\n            }\r\n        }\r\n    }\r\n    function ifAxisCrossZero(axis) {\r\n        var dataExtent = axis.scale.getExtent();\r\n        var min = dataExtent[0];\r\n        var max = dataExtent[1];\r\n        return !((min > 0 && max > 0) || (min < 0 && max < 0));\r\n    }\r\n    function makeLabelFormatter(axis) {\r\n        var labelFormatter = axis.getLabelModel().get('formatter');\r\n        var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\r\n        if (axis.scale.type === 'time') {\r\n            return (function (tpl) {\r\n                return function (tick, idx) {\r\n                    return axis.scale.getFormattedLabel(tick, idx, tpl);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'string') {\r\n            return (function (tpl) {\r\n                return function (tick) {\r\n                    var label = axis.scale.getLabel(tick);\r\n                    var text = tpl.replace('{value}', label != null ? label : '');\r\n                    return text;\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'function') {\r\n            return (function (cb) {\r\n                return function (tick, idx) {\r\n                    if (categoryTickStart != null) {\r\n                        idx = tick.value - categoryTickStart;\r\n                    }\r\n                    return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\r\n                        level: tick.level\r\n                    } : null);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else {\r\n            return function (tick) {\r\n                return axis.scale.getLabel(tick);\r\n            };\r\n        }\r\n    }\r\n    function getAxisRawValue(axis, tick) {\r\n        return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\r\n    }\r\n    function estimateLabelUnionRect(axis) {\r\n        var axisModel = axis.model;\r\n        var scale = axis.scale;\r\n        if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\r\n            return;\r\n        }\r\n        var realNumberScaleTicks;\r\n        var tickCount;\r\n        var categoryScaleExtent = scale.getExtent();\r\n        if (scale instanceof OrdinalScale) {\r\n            tickCount = scale.count();\r\n        }\r\n        else {\r\n            realNumberScaleTicks = scale.getTicks();\r\n            tickCount = realNumberScaleTicks.length;\r\n        }\r\n        var axisLabelModel = axis.getLabelModel();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rect;\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.ceil(tickCount / 40);\r\n        }\r\n        for (var i = 0; i < tickCount; i += step) {\r\n            var tick = realNumberScaleTicks\r\n                ? realNumberScaleTicks[i]\r\n                : {\r\n                    value: categoryScaleExtent[0] + i\r\n                };\r\n            var label = labelFormatter(tick, i);\r\n            var unrotatedSingleRect = axisLabelModel.getTextRect(label);\r\n            var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\r\n            rect ? rect.union(singleRect) : (rect = singleRect);\r\n        }\r\n        return rect;\r\n    }\r\n    function rotateTextRect(textRect, rotate) {\r\n        var rotateRadians = rotate * Math.PI / 180;\r\n        var beforeWidth = textRect.width;\r\n        var beforeHeight = textRect.height;\r\n        var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians))\r\n            + Math.abs(beforeHeight * Math.sin(rotateRadians));\r\n        var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians))\r\n            + Math.abs(beforeHeight * Math.cos(rotateRadians));\r\n        var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\r\n        return rotatedRect;\r\n    }\r\n    function getOptionCategoryInterval(model) {\r\n        var interval = model.get('interval');\r\n        return interval == null ? 'auto' : interval;\r\n    }\r\n    function shouldShowAllLabels(axis) {\r\n        return axis.type === 'category'\r\n            && getOptionCategoryInterval(axis.getLabelModel()) === 0;\r\n    }\r\n    function getDataDimensionsOnAxis(data, axisDim) {\r\n        var dataDimMap = {};\r\n        each(data.mapDimensionsAll(axisDim), function (dataDim) {\r\n            dataDimMap[getStackedDimension(data, dataDim)] = true;\r\n        });\r\n        return keys(dataDimMap);\r\n    }\r\n    function unionAxisExtentFromData(dataExtent, data, axisDim) {\r\n        if (data) {\r\n            each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\r\n                var seriesExtent = data.getApproximateExtent(dim);\r\n                seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\r\n                seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\r\n            });\r\n        }\r\n    }\n\n    var AxisModelCommonMixin = (function () {\r\n        function AxisModelCommonMixin() {\r\n        }\r\n        AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\r\n            var option = this.option;\r\n            return !option.scale;\r\n        };\r\n        AxisModelCommonMixin.prototype.getCoordSysModel = function () {\r\n            return;\r\n        };\r\n        return AxisModelCommonMixin;\r\n    }());\n\n    function createList(seriesModel) {\r\n        return createListFromArray(seriesModel.getSource(), seriesModel);\r\n    }\r\n    var dataStack$1 = {\r\n        isDimensionStacked: isDimensionStacked,\r\n        enableDataStack: enableDataStack,\r\n        getStackedDimension: getStackedDimension\r\n    };\r\n    function createScale(dataExtent, option) {\r\n        var axisModel = option;\r\n        if (!(option instanceof Model)) {\r\n            axisModel = new Model(option);\r\n        }\r\n        var scale = createScaleByModel(axisModel);\r\n        scale.setExtent(dataExtent[0], dataExtent[1]);\r\n        niceScaleExtent(scale, axisModel);\r\n        return scale;\r\n    }\r\n    function mixinAxisModelCommonMethods(Model) {\r\n        mixin(Model, AxisModelCommonMixin);\r\n    }\n\n    var helper = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        createList: createList,\n        getLayoutRect: getLayoutRect,\n        dataStack: dataStack$1,\n        createScale: createScale,\n        mixinAxisModelCommonMethods: mixinAxisModelCommonMethods,\n        getECData: getECData,\n        createDimensions: createDimensions,\n        createSymbol: createSymbol\n    });\n\n    var EPSILON$3 = 1e-8;\r\n    function isAroundEqual$1(a, b) {\r\n        return Math.abs(a - b) < EPSILON$3;\r\n    }\r\n    function contain$2(points, x, y) {\r\n        var w = 0;\r\n        var p = points[0];\r\n        if (!p) {\r\n            return false;\r\n        }\r\n        for (var i = 1; i < points.length; i++) {\r\n            var p2 = points[i];\r\n            w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\r\n            p = p2;\r\n        }\r\n        var p0 = points[0];\r\n        if (!isAroundEqual$1(p[0], p0[0]) || !isAroundEqual$1(p[1], p0[1])) {\r\n            w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\r\n        }\r\n        return w !== 0;\r\n    }\n\n    var Region = (function () {\r\n        function Region(name, geometries, cp) {\r\n            this.name = name;\r\n            this.geometries = geometries;\r\n            if (!cp) {\r\n                var rect = this.getBoundingRect();\r\n                cp = [\r\n                    rect.x + rect.width / 2,\r\n                    rect.y + rect.height / 2\r\n                ];\r\n            }\r\n            else {\r\n                cp = [cp[0], cp[1]];\r\n            }\r\n            this.center = cp;\r\n        }\r\n        Region.prototype.getBoundingRect = function () {\r\n            var rect = this._rect;\r\n            if (rect) {\r\n                return rect;\r\n            }\r\n            var MAX_NUMBER = Number.MAX_VALUE;\r\n            var min$1 = [MAX_NUMBER, MAX_NUMBER];\r\n            var max$1 = [-MAX_NUMBER, -MAX_NUMBER];\r\n            var min2 = [];\r\n            var max2 = [];\r\n            var geometries = this.geometries;\r\n            var i = 0;\r\n            for (; i < geometries.length; i++) {\r\n                if (geometries[i].type !== 'polygon') {\r\n                    continue;\r\n                }\r\n                var exterior = geometries[i].exterior;\r\n                fromPoints(exterior, min2, max2);\r\n                min(min$1, min$1, min2);\r\n                max(max$1, max$1, max2);\r\n            }\r\n            if (i === 0) {\r\n                min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n            }\r\n            return (this._rect = new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]));\r\n        };\r\n        Region.prototype.contain = function (coord) {\r\n            var rect = this.getBoundingRect();\r\n            var geometries = this.geometries;\r\n            if (!rect.contain(coord[0], coord[1])) {\r\n                return false;\r\n            }\r\n            loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\r\n                if (geometries[i].type !== 'polygon') {\r\n                    continue;\r\n                }\r\n                var exterior = geometries[i].exterior;\r\n                var interiors = geometries[i].interiors;\r\n                if (contain$2(exterior, coord[0], coord[1])) {\r\n                    for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\r\n                        if (contain$2(interiors[k], coord[0], coord[1])) {\r\n                            continue loopGeo;\r\n                        }\r\n                    }\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Region.prototype.transformTo = function (x, y, width, height) {\r\n            var rect = this.getBoundingRect();\r\n            var aspect = rect.width / rect.height;\r\n            if (!width) {\r\n                width = aspect * height;\r\n            }\r\n            else if (!height) {\r\n                height = width / aspect;\r\n            }\r\n            var target = new BoundingRect(x, y, width, height);\r\n            var transform = rect.calculateTransform(target);\r\n            var geometries = this.geometries;\r\n            for (var i = 0; i < geometries.length; i++) {\r\n                if (geometries[i].type !== 'polygon') {\r\n                    continue;\r\n                }\r\n                var exterior = geometries[i].exterior;\r\n                var interiors = geometries[i].interiors;\r\n                for (var p = 0; p < exterior.length; p++) {\r\n                    applyTransform(exterior[p], exterior[p], transform);\r\n                }\r\n                for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\r\n                    for (var p = 0; p < interiors[h].length; p++) {\r\n                        applyTransform(interiors[h][p], interiors[h][p], transform);\r\n                    }\r\n                }\r\n            }\r\n            rect = this._rect;\r\n            rect.copy(target);\r\n            this.center = [\r\n                rect.x + rect.width / 2,\r\n                rect.y + rect.height / 2\r\n            ];\r\n        };\r\n        Region.prototype.cloneShallow = function (name) {\r\n            name == null && (name = this.name);\r\n            var newRegion = new Region(name, this.geometries, this.center);\r\n            newRegion._rect = this._rect;\r\n            newRegion.transformTo = null;\r\n            return newRegion;\r\n        };\r\n        return Region;\r\n    }());\n\n    function decode(json) {\r\n        if (!json.UTF8Encoding) {\r\n            return json;\r\n        }\r\n        var jsonCompressed = json;\r\n        var encodeScale = jsonCompressed.UTF8Scale;\r\n        if (encodeScale == null) {\r\n            encodeScale = 1024;\r\n        }\r\n        var features = jsonCompressed.features;\r\n        for (var f = 0; f < features.length; f++) {\r\n            var feature = features[f];\r\n            var geometry = feature.geometry;\r\n            if (geometry.type === 'Polygon') {\r\n                var coordinates = geometry.coordinates;\r\n                for (var c = 0; c < coordinates.length; c++) {\r\n                    coordinates[c] = decodePolygon(coordinates[c], geometry.encodeOffsets[c], encodeScale);\r\n                }\r\n            }\r\n            else if (geometry.type === 'MultiPolygon') {\r\n                var coordinates = geometry.coordinates;\r\n                for (var c = 0; c < coordinates.length; c++) {\r\n                    var coordinate = coordinates[c];\r\n                    for (var c2 = 0; c2 < coordinate.length; c2++) {\r\n                        coordinate[c2] = decodePolygon(coordinate[c2], geometry.encodeOffsets[c][c2], encodeScale);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        jsonCompressed.UTF8Encoding = false;\r\n        return jsonCompressed;\r\n    }\r\n    function decodePolygon(coordinate, encodeOffsets, encodeScale) {\r\n        var result = [];\r\n        var prevX = encodeOffsets[0];\r\n        var prevY = encodeOffsets[1];\r\n        for (var i = 0; i < coordinate.length; i += 2) {\r\n            var x = coordinate.charCodeAt(i) - 64;\r\n            var y = coordinate.charCodeAt(i + 1) - 64;\r\n            x = (x >> 1) ^ (-(x & 1));\r\n            y = (y >> 1) ^ (-(y & 1));\r\n            x += prevX;\r\n            y += prevY;\r\n            prevX = x;\r\n            prevY = y;\r\n            result.push([x / encodeScale, y / encodeScale]);\r\n        }\r\n        return result;\r\n    }\r\n    function parseGeoJSON(geoJson, nameProperty) {\r\n        geoJson = decode(geoJson);\r\n        return map(filter(geoJson.features, function (featureObj) {\r\n            return featureObj.geometry\r\n                && featureObj.properties\r\n                && featureObj.geometry.coordinates.length > 0;\r\n        }), function (featureObj) {\r\n            var properties = featureObj.properties;\r\n            var geo = featureObj.geometry;\r\n            var geometries = [];\r\n            if (geo.type === 'Polygon') {\r\n                var coordinates = geo.coordinates;\r\n                geometries.push({\r\n                    type: 'polygon',\r\n                    exterior: coordinates[0],\r\n                    interiors: coordinates.slice(1)\r\n                });\r\n            }\r\n            if (geo.type === 'MultiPolygon') {\r\n                var coordinates = geo.coordinates;\r\n                each(coordinates, function (item) {\r\n                    if (item[0]) {\r\n                        geometries.push({\r\n                            type: 'polygon',\r\n                            exterior: item[0],\r\n                            interiors: item.slice(1)\r\n                        });\r\n                    }\r\n                });\r\n            }\r\n            var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\r\n            region.properties = properties;\r\n            return region;\r\n        });\r\n    }\n\n    var inner$4 = makeInner();\r\n    function createAxisLabels(axis) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryLabels(axis)\r\n            : makeRealNumberLabels(axis);\r\n    }\r\n    function createAxisTicks(axis, tickModel) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryTicks(axis, tickModel)\r\n            : { ticks: map(axis.scale.getTicks(), function (tick) { return tick.value; }) };\r\n    }\r\n    function makeCategoryLabels(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        var result = makeCategoryLabelsActually(axis, labelModel);\r\n        return (!labelModel.get('show') || axis.scale.isBlank())\r\n            ? { labels: [], labelCategoryInterval: result.labelCategoryInterval }\r\n            : result;\r\n    }\r\n    function makeCategoryLabelsActually(axis, labelModel) {\r\n        var labelsCache = getListCache(axis, 'labels');\r\n        var optionLabelInterval = getOptionCategoryInterval(labelModel);\r\n        var result = listCacheGet(labelsCache, optionLabelInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var labels;\r\n        var numericLabelInterval;\r\n        if (isFunction(optionLabelInterval)) {\r\n            labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\r\n        }\r\n        else {\r\n            numericLabelInterval = optionLabelInterval === 'auto'\r\n                ? makeAutoCategoryInterval(axis) : optionLabelInterval;\r\n            labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\r\n        }\r\n        return listCacheSet(labelsCache, optionLabelInterval, {\r\n            labels: labels, labelCategoryInterval: numericLabelInterval\r\n        });\r\n    }\r\n    function makeCategoryTicks(axis, tickModel) {\r\n        var ticksCache = getListCache(axis, 'ticks');\r\n        var optionTickInterval = getOptionCategoryInterval(tickModel);\r\n        var result = listCacheGet(ticksCache, optionTickInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var ticks;\r\n        var tickCategoryInterval;\r\n        if (!tickModel.get('show') || axis.scale.isBlank()) {\r\n            ticks = [];\r\n        }\r\n        if (isFunction(optionTickInterval)) {\r\n            ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\r\n        }\r\n        else if (optionTickInterval === 'auto') {\r\n            var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\r\n            tickCategoryInterval = labelsResult.labelCategoryInterval;\r\n            ticks = map(labelsResult.labels, function (labelItem) {\r\n                return labelItem.tickValue;\r\n            });\r\n        }\r\n        else {\r\n            tickCategoryInterval = optionTickInterval;\r\n            ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\r\n        }\r\n        return listCacheSet(ticksCache, optionTickInterval, {\r\n            ticks: ticks, tickCategoryInterval: tickCategoryInterval\r\n        });\r\n    }\r\n    function makeRealNumberLabels(axis) {\r\n        var ticks = axis.scale.getTicks();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        return {\r\n            labels: map(ticks, function (tick, idx) {\r\n                return {\r\n                    formattedLabel: labelFormatter(tick, idx),\r\n                    rawLabel: axis.scale.getLabel(tick),\r\n                    tickValue: tick.value\r\n                };\r\n            })\r\n        };\r\n    }\r\n    function getListCache(axis, prop) {\r\n        return inner$4(axis)[prop] || (inner$4(axis)[prop] = []);\r\n    }\r\n    function listCacheGet(cache, key) {\r\n        for (var i = 0; i < cache.length; i++) {\r\n            if (cache[i].key === key) {\r\n                return cache[i].value;\r\n            }\r\n        }\r\n    }\r\n    function listCacheSet(cache, key, value) {\r\n        cache.push({ key: key, value: value });\r\n        return value;\r\n    }\r\n    function makeAutoCategoryInterval(axis) {\r\n        var result = inner$4(axis).autoInterval;\r\n        return result != null\r\n            ? result\r\n            : (inner$4(axis).autoInterval = axis.calculateCategoryInterval());\r\n    }\r\n    function calculateCategoryInterval(axis) {\r\n        var params = fetchAutoCategoryIntervalCalculationParams(axis);\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var tickCount = ordinalScale.count();\r\n        if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n            return 0;\r\n        }\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.max(1, Math.floor(tickCount / 40));\r\n        }\r\n        var tickValue = ordinalExtent[0];\r\n        var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n        var unitW = Math.abs(unitSpan * Math.cos(rotation));\r\n        var unitH = Math.abs(unitSpan * Math.sin(rotation));\r\n        var maxW = 0;\r\n        var maxH = 0;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            var width = 0;\r\n            var height = 0;\r\n            var rect = getBoundingRect(labelFormatter({ value: tickValue }), params.font, 'center', 'top');\r\n            width = rect.width * 1.3;\r\n            height = rect.height * 1.3;\r\n            maxW = Math.max(maxW, width, 7);\r\n            maxH = Math.max(maxH, height, 7);\r\n        }\r\n        var dw = maxW / unitW;\r\n        var dh = maxH / unitH;\r\n        isNaN(dw) && (dw = Infinity);\r\n        isNaN(dh) && (dh = Infinity);\r\n        var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\r\n        var cache = inner$4(axis.model);\r\n        var axisExtent = axis.getExtent();\r\n        var lastAutoInterval = cache.lastAutoInterval;\r\n        var lastTickCount = cache.lastTickCount;\r\n        if (lastAutoInterval != null\r\n            && lastTickCount != null\r\n            && Math.abs(lastAutoInterval - interval) <= 1\r\n            && Math.abs(lastTickCount - tickCount) <= 1\r\n            && lastAutoInterval > interval\r\n            && cache.axisExtent0 === axisExtent[0]\r\n            && cache.axisExtent1 === axisExtent[1]) {\r\n            interval = lastAutoInterval;\r\n        }\r\n        else {\r\n            cache.lastTickCount = tickCount;\r\n            cache.lastAutoInterval = interval;\r\n            cache.axisExtent0 = axisExtent[0];\r\n            cache.axisExtent1 = axisExtent[1];\r\n        }\r\n        return interval;\r\n    }\r\n    function fetchAutoCategoryIntervalCalculationParams(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        return {\r\n            axisRotate: axis.getRotate\r\n                ? axis.getRotate()\r\n                : (axis.isHorizontal && !axis.isHorizontal())\r\n                    ? 90\r\n                    : 0,\r\n            labelRotate: labelModel.get('rotate') || 0,\r\n            font: labelModel.getFont()\r\n        };\r\n    }\r\n    function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var labelModel = axis.getLabelModel();\r\n        var result = [];\r\n        var step = Math.max((categoryInterval || 0) + 1, 1);\r\n        var startTick = ordinalExtent[0];\r\n        var tickCount = ordinalScale.count();\r\n        if (startTick !== 0 && step > 1 && tickCount / step > 2) {\r\n            startTick = Math.round(Math.ceil(startTick / step) * step);\r\n        }\r\n        var showAllLabel = shouldShowAllLabels(axis);\r\n        var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\r\n        var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\r\n        if (includeMinLabel && startTick !== ordinalExtent[0]) {\r\n            addItem(ordinalExtent[0]);\r\n        }\r\n        var tickValue = startTick;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            addItem(tickValue);\r\n        }\r\n        if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\r\n            addItem(ordinalExtent[1]);\r\n        }\r\n        function addItem(tickValue) {\r\n            var tickObj = { value: tickValue };\r\n            result.push(onlyTick\r\n                ? tickValue\r\n                : {\r\n                    formattedLabel: labelFormatter(tickObj),\r\n                    rawLabel: ordinalScale.getLabel(tickObj),\r\n                    tickValue: tickValue\r\n                });\r\n        }\r\n        return result;\r\n    }\r\n    function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var ordinalScale = axis.scale;\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var result = [];\r\n        each(ordinalScale.getTicks(), function (tick) {\r\n            var rawLabel = ordinalScale.getLabel(tick);\r\n            var tickValue = tick.value;\r\n            if (categoryInterval(tick.value, rawLabel)) {\r\n                result.push(onlyTick\r\n                    ? tickValue\r\n                    : {\r\n                        formattedLabel: labelFormatter(tick),\r\n                        rawLabel: rawLabel,\r\n                        tickValue: tickValue\r\n                    });\r\n            }\r\n        });\r\n        return result;\r\n    }\n\n    var NORMALIZED_EXTENT = [0, 1];\r\n    var Axis = (function () {\r\n        function Axis(dim, scale, extent) {\r\n            this.onBand = false;\r\n            this.inverse = false;\r\n            this.dim = dim;\r\n            this.scale = scale;\r\n            this._extent = extent || [0, 0];\r\n        }\r\n        Axis.prototype.contain = function (coord) {\r\n            var extent = this._extent;\r\n            var min = Math.min(extent[0], extent[1]);\r\n            var max = Math.max(extent[0], extent[1]);\r\n            return coord >= min && coord <= max;\r\n        };\r\n        Axis.prototype.containData = function (data) {\r\n            return this.scale.contain(data);\r\n        };\r\n        Axis.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Axis.prototype.getPixelPrecision = function (dataExtent) {\r\n            return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\r\n        };\r\n        Axis.prototype.setExtent = function (start, end) {\r\n            var extent = this._extent;\r\n            extent[0] = start;\r\n            extent[1] = end;\r\n        };\r\n        Axis.prototype.dataToCoord = function (data, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            data = scale.normalize(data);\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\r\n        };\r\n        Axis.prototype.coordToData = function (coord, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\r\n            return this.scale.scale(t);\r\n        };\r\n        Axis.prototype.pointToData = function (point, clamp) {\r\n            return;\r\n        };\r\n        Axis.prototype.getTicksCoords = function (opt) {\r\n            opt = opt || {};\r\n            var tickModel = opt.tickModel || this.getTickModel();\r\n            var result = createAxisTicks(this, tickModel);\r\n            var ticks = result.ticks;\r\n            var ticksCoords = map(ticks, function (tickVal) {\r\n                return {\r\n                    coord: this.dataToCoord(this.scale.type === 'ordinal'\r\n                        ? this.scale.getRawIndex(tickVal)\r\n                        : tickVal),\r\n                    tickValue: tickVal\r\n                };\r\n            }, this);\r\n            var alignWithLabel = tickModel.get('alignWithLabel');\r\n            fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\r\n            return ticksCoords;\r\n        };\r\n        Axis.prototype.getMinorTicksCoords = function () {\r\n            if (this.scale.type === 'ordinal') {\r\n                return [];\r\n            }\r\n            var minorTickModel = this.model.getModel('minorTick');\r\n            var splitNumber = minorTickModel.get('splitNumber');\r\n            if (!(splitNumber > 0 && splitNumber < 100)) {\r\n                splitNumber = 5;\r\n            }\r\n            var minorTicks = this.scale.getMinorTicks(splitNumber);\r\n            var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\r\n                return map(minorTicksGroup, function (minorTick) {\r\n                    return {\r\n                        coord: this.dataToCoord(minorTick),\r\n                        tickValue: minorTick\r\n                    };\r\n                }, this);\r\n            }, this);\r\n            return minorTicksCoords;\r\n        };\r\n        Axis.prototype.getViewLabels = function () {\r\n            return createAxisLabels(this).labels;\r\n        };\r\n        Axis.prototype.getLabelModel = function () {\r\n            return this.model.getModel('axisLabel');\r\n        };\r\n        Axis.prototype.getTickModel = function () {\r\n            return this.model.getModel('axisTick');\r\n        };\r\n        Axis.prototype.getBandWidth = function () {\r\n            var axisExtent = this._extent;\r\n            var dataExtent = this.scale.getExtent();\r\n            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);\r\n            len === 0 && (len = 1);\r\n            var size = Math.abs(axisExtent[1] - axisExtent[0]);\r\n            return Math.abs(size) / len;\r\n        };\r\n        Axis.prototype.calculateCategoryInterval = function () {\r\n            return calculateCategoryInterval(this);\r\n        };\r\n        return Axis;\r\n    }());\r\n    function fixExtentWithBands(extent, nTick) {\r\n        var size = extent[1] - extent[0];\r\n        var len = nTick;\r\n        var margin = size / len / 2;\r\n        extent[0] += margin;\r\n        extent[1] -= margin;\r\n    }\r\n    function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\r\n        var ticksLen = ticksCoords.length;\r\n        if (!axis.onBand || alignWithLabel || !ticksLen) {\r\n            return;\r\n        }\r\n        var axisExtent = axis.getExtent();\r\n        var last;\r\n        var diffSize;\r\n        if (ticksLen === 1) {\r\n            ticksCoords[0].coord = axisExtent[0];\r\n            last = ticksCoords[1] = { coord: axisExtent[0] };\r\n        }\r\n        else {\r\n            var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\r\n            var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\r\n            each(ticksCoords, function (ticksItem) {\r\n                ticksItem.coord -= shift_1 / 2;\r\n            });\r\n            var dataExtent = axis.scale.getExtent();\r\n            diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\r\n            last = { coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize };\r\n            ticksCoords.push(last);\r\n        }\r\n        var inverse = axisExtent[0] > axisExtent[1];\r\n        if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\r\n            clamp ? (ticksCoords[0].coord = axisExtent[0]) : ticksCoords.shift();\r\n        }\r\n        if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\r\n            ticksCoords.unshift({ coord: axisExtent[0] });\r\n        }\r\n        if (littleThan(axisExtent[1], last.coord)) {\r\n            clamp ? (last.coord = axisExtent[1]) : ticksCoords.pop();\r\n        }\r\n        if (clamp && littleThan(last.coord, axisExtent[1])) {\r\n            ticksCoords.push({ coord: axisExtent[1] });\r\n        }\r\n        function littleThan(a, b) {\r\n            a = round$1(a);\r\n            b = round$1(b);\r\n            return inverse ? a > b : a < b;\r\n        }\r\n    }\n\n    var parseGeoJson = parseGeoJSON;\r\n    var number = {};\r\n    each([\r\n        'linearMap',\r\n        'round',\r\n        'asc',\r\n        'getPrecision',\r\n        'getPrecisionSafe',\r\n        'getPixelPrecision',\r\n        'getPercentWithPrecision',\r\n        'MAX_SAFE_INTEGER',\r\n        'remRadian',\r\n        'isRadianAroundZero',\r\n        'parseDate',\r\n        'quantity',\r\n        'quantityExponent',\r\n        'nice',\r\n        'quantile',\r\n        'reformIntervals',\r\n        'isNumeric',\r\n        'numericToNumber'\r\n    ], function (name) {\r\n        number[name] = numberUtil[name];\r\n    });\r\n    var format$1 = {};\r\n    each([\r\n        'addCommas',\r\n        'toCamelCase',\r\n        'normalizeCssArray',\r\n        'encodeHTML',\r\n        'formatTpl',\r\n        'getTooltipMarker',\r\n        'formatTime',\r\n        'capitalFirst',\r\n        'truncateText',\r\n        'getTextRect'\r\n    ], function (name) {\r\n        format$1[name] = formatUtil[name];\r\n    });\r\n    var time = {\r\n        parse: parseDate,\r\n        format: format\r\n    };\r\n    var ecUtil = {};\r\n    each([\r\n        'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter',\r\n        'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction',\r\n        'extend', 'defaults', 'clone', 'merge'\r\n    ], function (name) {\r\n        ecUtil[name] = zrUtil[name];\r\n    });\r\n    var GRAPHIC_KEYS = [\r\n        'extendShape', 'extendPath', 'makePath', 'makeImage',\r\n        'mergePath', 'resizePath', 'createIcon',\r\n        'updateProps', 'initProps', 'getTransform',\r\n        'clipPointsByRect', 'clipRectByRect',\r\n        'registerShape', 'getShapeClass',\r\n        'Group',\r\n        'Image',\r\n        'Text',\r\n        'Circle',\r\n        'Ellipse',\r\n        'Sector',\r\n        'Ring',\r\n        'Polygon',\r\n        'Polyline',\r\n        'Rect',\r\n        'Line',\r\n        'BezierCurve',\r\n        'Arc',\r\n        'IncrementalDisplayable',\r\n        'CompoundPath',\r\n        'LinearGradient',\r\n        'RadialGradient',\r\n        'BoundingRect'\r\n    ];\r\n    var graphic$1 = {};\r\n    each(GRAPHIC_KEYS, function (name) {\r\n        graphic$1[name] = graphic[name];\r\n    });\n\n    var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {\r\n        value: 'eq',\r\n        '<': 'lt',\r\n        '<=': 'lte',\r\n        '>': 'gt',\r\n        '>=': 'gte',\r\n        '=': 'eq',\r\n        '!=': 'ne',\r\n        '<>': 'ne'\r\n    };\r\n    var RegExpEvaluator = (function () {\r\n        function RegExpEvaluator(rVal) {\r\n            var condValue = this._condVal = isString(rVal) ? new RegExp(rVal)\r\n                : isRegExp(rVal) ? rVal\r\n                    : null;\r\n            if (condValue == null) {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = makePrintable('Illegal regexp', rVal, 'in');\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n        }\r\n        RegExpEvaluator.prototype.evaluate = function (lVal) {\r\n            var type = typeof lVal;\r\n            return type === 'string' ? this._condVal.test(lVal)\r\n                : type === 'number' ? this._condVal.test(lVal + '')\r\n                    : false;\r\n        };\r\n        return RegExpEvaluator;\r\n    }());\r\n    var ConstConditionInternal = (function () {\r\n        function ConstConditionInternal() {\r\n        }\r\n        ConstConditionInternal.prototype.evaluate = function () {\r\n            return this.value;\r\n        };\r\n        return ConstConditionInternal;\r\n    }());\r\n    var AndConditionInternal = (function () {\r\n        function AndConditionInternal() {\r\n        }\r\n        AndConditionInternal.prototype.evaluate = function () {\r\n            var children = this.children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                if (!children[i].evaluate()) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        return AndConditionInternal;\r\n    }());\r\n    var OrConditionInternal = (function () {\r\n        function OrConditionInternal() {\r\n        }\r\n        OrConditionInternal.prototype.evaluate = function () {\r\n            var children = this.children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                if (children[i].evaluate()) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        return OrConditionInternal;\r\n    }());\r\n    var NotConditionInternal = (function () {\r\n        function NotConditionInternal() {\r\n        }\r\n        NotConditionInternal.prototype.evaluate = function () {\r\n            return !this.child.evaluate();\r\n        };\r\n        return NotConditionInternal;\r\n    }());\r\n    var RelationalConditionInternal = (function () {\r\n        function RelationalConditionInternal() {\r\n        }\r\n        RelationalConditionInternal.prototype.evaluate = function () {\r\n            var needParse = !!this.valueParser;\r\n            var getValue = this.getValue;\r\n            var tarValRaw = getValue(this.valueGetterParam);\r\n            var tarValParsed = needParse ? this.valueParser(tarValRaw) : null;\r\n            for (var i = 0; i < this.subCondList.length; i++) {\r\n                if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        return RelationalConditionInternal;\r\n    }());\r\n    function parseOption(exprOption, getters) {\r\n        if (exprOption === true || exprOption === false) {\r\n            var cond = new ConstConditionInternal();\r\n            cond.value = exprOption;\r\n            return cond;\r\n        }\r\n        var errMsg = '';\r\n        if (!isObjectNotArray(exprOption)) {\r\n            if (__DEV__) {\r\n                errMsg = makePrintable('Illegal config. Expect a plain object but actually', exprOption);\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        if (exprOption.and) {\r\n            return parseAndOrOption('and', exprOption, getters);\r\n        }\r\n        else if (exprOption.or) {\r\n            return parseAndOrOption('or', exprOption, getters);\r\n        }\r\n        else if (exprOption.not) {\r\n            return parseNotOption(exprOption, getters);\r\n        }\r\n        return parseRelationalOption(exprOption, getters);\r\n    }\r\n    function parseAndOrOption(op, exprOption, getters) {\r\n        var subOptionArr = exprOption[op];\r\n        var errMsg = '';\r\n        if (__DEV__) {\r\n            errMsg = makePrintable('\"and\"/\"or\" condition should only be `' + op + ': [...]` and must not be empty array.', 'Illegal condition:', exprOption);\r\n        }\r\n        if (!isArray(subOptionArr)) {\r\n            throwError(errMsg);\r\n        }\r\n        if (!subOptionArr.length) {\r\n            throwError(errMsg);\r\n        }\r\n        var cond = op === 'and' ? new AndConditionInternal() : new OrConditionInternal();\r\n        cond.children = map(subOptionArr, function (subOption) { return parseOption(subOption, getters); });\r\n        if (!cond.children.length) {\r\n            throwError(errMsg);\r\n        }\r\n        return cond;\r\n    }\r\n    function parseNotOption(exprOption, getters) {\r\n        var subOption = exprOption.not;\r\n        var errMsg = '';\r\n        if (__DEV__) {\r\n            errMsg = makePrintable('\"not\" condition should only be `not: {}`.', 'Illegal condition:', exprOption);\r\n        }\r\n        if (!isObjectNotArray(subOption)) {\r\n            throwError(errMsg);\r\n        }\r\n        var cond = new NotConditionInternal();\r\n        cond.child = parseOption(subOption, getters);\r\n        if (!cond.child) {\r\n            throwError(errMsg);\r\n        }\r\n        return cond;\r\n    }\r\n    function parseRelationalOption(exprOption, getters) {\r\n        var errMsg = '';\r\n        var valueGetterParam = getters.prepareGetValue(exprOption);\r\n        var subCondList = [];\r\n        var exprKeys = keys(exprOption);\r\n        var parserName = exprOption.parser;\r\n        var valueParser = parserName ? getRawValueParser(parserName) : null;\r\n        for (var i = 0; i < exprKeys.length; i++) {\r\n            var keyRaw = exprKeys[i];\r\n            if (keyRaw === 'parser' || getters.valueGetterAttrMap.get(keyRaw)) {\r\n                continue;\r\n            }\r\n            var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw)\r\n                ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw]\r\n                : keyRaw;\r\n            var condValueRaw = exprOption[keyRaw];\r\n            var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw;\r\n            var evaluator = createFilterComparator(op, condValueParsed)\r\n                || (op === 'reg' && new RegExpEvaluator(condValueParsed));\r\n            if (!evaluator) {\r\n                if (__DEV__) {\r\n                    errMsg = makePrintable('Illegal relational operation: \"' + keyRaw + '\" in condition:', exprOption);\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            subCondList.push(evaluator);\r\n        }\r\n        if (!subCondList.length) {\r\n            if (__DEV__) {\r\n                errMsg = makePrintable('Relational condition must have at least one operator.', 'Illegal condition:', exprOption);\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var cond = new RelationalConditionInternal();\r\n        cond.valueGetterParam = valueGetterParam;\r\n        cond.valueParser = valueParser;\r\n        cond.getValue = getters.getValue;\r\n        cond.subCondList = subCondList;\r\n        return cond;\r\n    }\r\n    function isObjectNotArray(val) {\r\n        return isObject(val) && !isArrayLike(val);\r\n    }\r\n    var ConditionalExpressionParsed = (function () {\r\n        function ConditionalExpressionParsed(exprOption, getters) {\r\n            this._cond = parseOption(exprOption, getters);\r\n        }\r\n        ConditionalExpressionParsed.prototype.evaluate = function () {\r\n            return this._cond.evaluate();\r\n        };\r\n        return ConditionalExpressionParsed;\r\n    }());\r\n    function parseConditionalExpression(exprOption, getters) {\r\n        return new ConditionalExpressionParsed(exprOption, getters);\r\n    }\n\n    var filterTransform = {\r\n        type: 'echarts:filter',\r\n        transform: function (params) {\r\n            var upstream = params.upstream;\r\n            var rawItem;\r\n            var condition = parseConditionalExpression(params.config, {\r\n                valueGetterAttrMap: createHashMap({ dimension: true }),\r\n                prepareGetValue: function (exprOption) {\r\n                    var errMsg = '';\r\n                    var dimLoose = exprOption.dimension;\r\n                    if (!hasOwn(exprOption, 'dimension')) {\r\n                        if (__DEV__) {\r\n                            errMsg = makePrintable('Relation condition must has prop \"dimension\" specified.', 'Illegal condition:', exprOption);\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    var dimInfo = upstream.getDimensionInfo(dimLoose);\r\n                    if (!dimInfo) {\r\n                        if (__DEV__) {\r\n                            errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\\n', 'Illegal condition:', exprOption, '.\\n');\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    return { dimIdx: dimInfo.index };\r\n                },\r\n                getValue: function (param) {\r\n                    return upstream.retrieveValueFromItem(rawItem, param.dimIdx);\r\n                }\r\n            });\r\n            var resultData = [];\r\n            for (var i = 0, len = upstream.count(); i < len; i++) {\r\n                rawItem = upstream.getRawDataItem(i);\r\n                if (condition.evaluate()) {\r\n                    resultData.push(rawItem);\r\n                }\r\n            }\r\n            return {\r\n                data: resultData\r\n            };\r\n        }\r\n    };\n\n    var sampleLog = '';\r\n    if (__DEV__) {\r\n        sampleLog = [\r\n            'Valid config is like:',\r\n            '{ dimension: \"age\", order: \"asc\" }',\r\n            'or [{ dimension: \"age\", order: \"asc\"], { dimension: \"date\", order: \"desc\" }]'\r\n        ].join(' ');\r\n    }\r\n    var sortTransform = {\r\n        type: 'echarts:sort',\r\n        transform: function (params) {\r\n            var upstream = params.upstream;\r\n            var config = params.config;\r\n            var errMsg = '';\r\n            var orderExprList = normalizeToArray(config);\r\n            if (!orderExprList.length) {\r\n                if (__DEV__) {\r\n                    errMsg = 'Empty `config` in sort transform.';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            var orderDefList = [];\r\n            each(orderExprList, function (orderExpr) {\r\n                var dimLoose = orderExpr.dimension;\r\n                var order = orderExpr.order;\r\n                var parserName = orderExpr.parser;\r\n                var incomparable = orderExpr.incomparable;\r\n                if (dimLoose == null) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Sort transform config must has \"dimension\" specified.' + sampleLog;\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n                if (order !== 'asc' && order !== 'desc') {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Sort transform config must has \"order\" specified.' + sampleLog;\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n                if (incomparable && (incomparable !== 'min' && incomparable !== 'max')) {\r\n                    var errMsg_1 = '';\r\n                    if (__DEV__) {\r\n                        errMsg_1 = 'incomparable must be \"min\" or \"max\" rather than \"' + incomparable + '\".';\r\n                    }\r\n                    throwError(errMsg_1);\r\n                }\r\n                if (order !== 'asc' && order !== 'desc') {\r\n                    var errMsg_2 = '';\r\n                    if (__DEV__) {\r\n                        errMsg_2 = 'order must be \"asc\" or \"desc\" rather than \"' + order + '\".';\r\n                    }\r\n                    throwError(errMsg_2);\r\n                }\r\n                var dimInfo = upstream.getDimensionInfo(dimLoose);\r\n                if (!dimInfo) {\r\n                    if (__DEV__) {\r\n                        errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\\n', 'Illegal config:', orderExpr, '.\\n');\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n                var parser = parserName ? getRawValueParser(parserName) : null;\r\n                if (parserName && !parser) {\r\n                    if (__DEV__) {\r\n                        errMsg = makePrintable('Invalid parser name ' + parserName + '.\\n', 'Illegal config:', orderExpr, '.\\n');\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n                orderDefList.push({\r\n                    dimIdx: dimInfo.index,\r\n                    parser: parser,\r\n                    comparator: new SortOrderComparator(order, incomparable)\r\n                });\r\n            });\r\n            var sourceFormat = upstream.sourceFormat;\r\n            if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS\r\n                && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\r\n                if (__DEV__) {\r\n                    errMsg = 'sourceFormat \"' + sourceFormat + '\" is not supported yet';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            var resultData = [];\r\n            for (var i = 0, len = upstream.count(); i < len; i++) {\r\n                resultData.push(upstream.getRawDataItem(i));\r\n            }\r\n            resultData.sort(function (item0, item1) {\r\n                for (var i = 0; i < orderDefList.length; i++) {\r\n                    var orderDef = orderDefList[i];\r\n                    var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx);\r\n                    var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx);\r\n                    if (orderDef.parser) {\r\n                        val0 = orderDef.parser(val0);\r\n                        val1 = orderDef.parser(val1);\r\n                    }\r\n                    var result = orderDef.comparator.evaluate(val0, val1);\r\n                    if (result !== 0) {\r\n                        return result;\r\n                    }\r\n                }\r\n                return 0;\r\n            });\r\n            return {\r\n                data: resultData\r\n            };\r\n        }\r\n    };\n\n    registerTransform(filterTransform);\r\n    registerTransform(sortTransform);\n\n    var LineSeriesModel = (function (_super) {\r\n        __extends(LineSeriesModel, _super);\r\n        function LineSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LineSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            _this.legendSymbol = 'line';\r\n            return _this;\r\n        }\r\n        LineSeriesModel.prototype.getInitialData = function (option) {\r\n            if (__DEV__) {\r\n                var coordSys = option.coordinateSystem;\r\n                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\r\n                    throw new Error('Line not support coordinateSystem besides cartesian and polar');\r\n                }\r\n            }\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: true\r\n            });\r\n        };\r\n        LineSeriesModel.type = 'series.line';\r\n        LineSeriesModel.dependencies = ['grid', 'polar'];\r\n        LineSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 3,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            clip: true,\r\n            label: {\r\n                position: 'top'\r\n            },\r\n            endLabel: {\r\n                show: false,\r\n                valueAnimation: true,\r\n                distance: 8\r\n            },\r\n            lineStyle: {\r\n                width: 2,\r\n                type: 'solid'\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                lineStyle: {\r\n                    width: 'bolder'\r\n                }\r\n            },\r\n            step: false,\r\n            smooth: false,\r\n            smoothMonotone: null,\r\n            symbol: 'emptyCircle',\r\n            symbolSize: 4,\r\n            symbolRotate: null,\r\n            showSymbol: true,\r\n            showAllSymbol: 'auto',\r\n            connectNulls: false,\r\n            sampling: 'none',\r\n            animationEasing: 'linear',\r\n            progressive: 0,\r\n            hoverLayerThreshold: Infinity\r\n        };\r\n        return LineSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(LineSeriesModel);\n\n    function getDefaultLabel(data, dataIndex) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        var len = labelDims.length;\r\n        if (len === 1) {\r\n            return retrieveRawValue(data, dataIndex, labelDims[0]);\r\n        }\r\n        else if (len) {\r\n            var vals = [];\r\n            for (var i = 0; i < labelDims.length; i++) {\r\n                vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\r\n            }\r\n            return vals.join(' ');\r\n        }\r\n    }\r\n    function getDefaultInterpolatedLabel(data, interpolatedValue) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        if (!isArray(interpolatedValue)) {\r\n            return interpolatedValue + '';\r\n        }\r\n        var vals = [];\r\n        for (var i = 0; i < labelDims.length; i++) {\r\n            var dimInfo = data.getDimensionInfo(labelDims[i]);\r\n            if (dimInfo) {\r\n                vals.push(interpolatedValue[dimInfo.index]);\r\n            }\r\n        }\r\n        return vals.join(' ');\r\n    }\n\n    var Symbol = (function (_super) {\r\n        __extends(Symbol, _super);\r\n        function Symbol(data, idx, seriesScope, opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.updateData(data, idx, seriesScope, opts);\r\n            return _this;\r\n        }\r\n        Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\r\n            this.removeAll();\r\n            var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\r\n            symbolPath.attr({\r\n                z2: 100,\r\n                culling: true,\r\n                scaleX: symbolSize[0] / 2,\r\n                scaleY: symbolSize[1] / 2\r\n            });\r\n            symbolPath.drift = driftSymbol;\r\n            this._symbolType = symbolType;\r\n            this.add(symbolPath);\r\n        };\r\n        Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\r\n            this.childAt(0).stopAnimation(null, toLastFrame);\r\n        };\r\n        Symbol.prototype.getSymbolPath = function () {\r\n            return this.childAt(0);\r\n        };\r\n        Symbol.prototype.highlight = function () {\r\n            enterEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.downplay = function () {\r\n            leaveEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.setZ = function (zlevel, z) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.zlevel = zlevel;\r\n            symbolPath.z = z;\r\n        };\r\n        Symbol.prototype.setDraggable = function (draggable) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.draggable = draggable;\r\n            symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\r\n        };\r\n        Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\r\n            this.silent = false;\r\n            var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n            var seriesModel = data.hostModel;\r\n            var symbolSize = Symbol.getSymbolSize(data, idx);\r\n            var isInit = symbolType !== this._symbolType;\r\n            var disableAnimation = opts && opts.disableAnimation;\r\n            if (isInit) {\r\n                var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\r\n                this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\r\n            }\r\n            else {\r\n                var symbolPath = this.childAt(0);\r\n                symbolPath.silent = false;\r\n                var target = {\r\n                    scaleX: symbolSize[0] / 2,\r\n                    scaleY: symbolSize[1] / 2\r\n                };\r\n                disableAnimation ? symbolPath.attr(target)\r\n                    : updateProps(symbolPath, target, seriesModel, idx);\r\n            }\r\n            this._updateCommon(data, idx, symbolSize, seriesScope, opts);\r\n            if (isInit) {\r\n                var symbolPath = this.childAt(0);\r\n                if (!disableAnimation) {\r\n                    var target = {\r\n                        scaleX: this._sizeX,\r\n                        scaleY: this._sizeY,\r\n                        style: {\r\n                            opacity: symbolPath.style.opacity\r\n                        }\r\n                    };\r\n                    symbolPath.scaleX = symbolPath.scaleY = 0;\r\n                    symbolPath.style.opacity = 0;\r\n                    initProps(symbolPath, target, seriesModel, idx);\r\n                }\r\n            }\r\n            if (disableAnimation) {\r\n                this.childAt(0).stopAnimation('remove');\r\n            }\r\n            this._seriesModel = seriesModel;\r\n        };\r\n        Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = data.hostModel;\r\n            var emphasisItemStyle;\r\n            var blurItemStyle;\r\n            var selectItemStyle;\r\n            var focus;\r\n            var blurScope;\r\n            var symbolOffset;\r\n            var labelStatesModels;\r\n            var hoverScale;\r\n            var cursorStyle;\r\n            if (seriesScope) {\r\n                emphasisItemStyle = seriesScope.emphasisItemStyle;\r\n                blurItemStyle = seriesScope.blurItemStyle;\r\n                selectItemStyle = seriesScope.selectItemStyle;\r\n                focus = seriesScope.focus;\r\n                blurScope = seriesScope.blurScope;\r\n                symbolOffset = seriesScope.symbolOffset;\r\n                labelStatesModels = seriesScope.labelStatesModels;\r\n                hoverScale = seriesScope.hoverScale;\r\n                cursorStyle = seriesScope.cursorStyle;\r\n            }\r\n            if (!seriesScope || data.hasItemOption) {\r\n                var itemModel = (seriesScope && seriesScope.itemModel)\r\n                    ? seriesScope.itemModel : data.getItemModel(idx);\r\n                var emphasisModel = itemModel.getModel('emphasis');\r\n                emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n                selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n                blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n                focus = emphasisModel.get('focus');\r\n                blurScope = emphasisModel.get('blurScope');\r\n                symbolOffset = itemModel.getShallow('symbolOffset');\r\n                labelStatesModels = getLabelStatesModels(itemModel);\r\n                hoverScale = emphasisModel.getShallow('scale');\r\n                cursorStyle = itemModel.getShallow('cursor');\r\n            }\r\n            var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n            symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\r\n            if (symbolOffset) {\r\n                symbolPath.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n                symbolPath.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n            }\r\n            cursorStyle && symbolPath.attr('cursor', cursorStyle);\r\n            var symbolStyle = data.getItemVisual(idx, 'style');\r\n            var visualColor = symbolStyle.fill;\r\n            if (symbolPath instanceof ZRImage) {\r\n                var pathStyle = symbolPath.style;\r\n                symbolPath.useStyle(extend({\r\n                    image: pathStyle.image,\r\n                    x: pathStyle.x, y: pathStyle.y,\r\n                    width: pathStyle.width, height: pathStyle.height\r\n                }, symbolStyle));\r\n            }\r\n            else {\r\n                if (symbolPath.__isEmptyBrush) {\r\n                    symbolPath.useStyle(extend({}, symbolStyle));\r\n                }\r\n                else {\r\n                    symbolPath.useStyle(symbolStyle);\r\n                }\r\n                symbolPath.style.decal = null;\r\n                symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\r\n                symbolPath.style.strokeNoScale = true;\r\n            }\r\n            var liftZ = data.getItemVisual(idx, 'liftZ');\r\n            var z2Origin = this._z2;\r\n            if (liftZ != null) {\r\n                if (z2Origin == null) {\r\n                    this._z2 = symbolPath.z2;\r\n                    symbolPath.z2 += liftZ;\r\n                }\r\n            }\r\n            else if (z2Origin != null) {\r\n                symbolPath.z2 = z2Origin;\r\n                this._z2 = null;\r\n            }\r\n            var useNameLabel = opts && opts.useNameLabel;\r\n            setLabelStyle(symbolPath, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: idx,\r\n                defaultText: getLabelDefaultText,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: symbolStyle.opacity\r\n            });\r\n            function getLabelDefaultText(idx) {\r\n                return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\r\n            }\r\n            this._sizeX = symbolSize[0] / 2;\r\n            this._sizeY = symbolSize[1] / 2;\r\n            var emphasisState = symbolPath.ensureState('emphasis');\r\n            emphasisState.style = emphasisItemStyle;\r\n            symbolPath.ensureState('select').style = selectItemStyle;\r\n            symbolPath.ensureState('blur').style = blurItemStyle;\r\n            if (hoverScale) {\r\n                var scaleRatio = Math.max(1.1, 3 / this._sizeY);\r\n                emphasisState.scaleX = this._sizeX * scaleRatio;\r\n                emphasisState.scaleY = this._sizeY * scaleRatio;\r\n            }\r\n            this.setSymbolScale(1);\r\n            enableHoverEmphasis(this, focus, blurScope);\r\n        };\r\n        Symbol.prototype.setSymbolScale = function (scale) {\r\n            this.scaleX = this.scaleY = scale;\r\n        };\r\n        Symbol.prototype.fadeOut = function (cb, opt) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = this._seriesModel;\r\n            var dataIndex = getECData(this).dataIndex;\r\n            var animationOpt = opt && opt.animation;\r\n            this.silent = symbolPath.silent = true;\r\n            if (opt && opt.fadeLabel) {\r\n                var textContent = symbolPath.getTextContent();\r\n                if (textContent) {\r\n                    removeElement(textContent, {\r\n                        style: {\r\n                            opacity: 0\r\n                        }\r\n                    }, seriesModel, {\r\n                        dataIndex: dataIndex,\r\n                        removeOpt: animationOpt,\r\n                        cb: function () {\r\n                            symbolPath.removeTextContent();\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            else {\r\n                symbolPath.removeTextContent();\r\n            }\r\n            removeElement(symbolPath, {\r\n                style: {\r\n                    opacity: 0\r\n                },\r\n                scaleX: 0,\r\n                scaleY: 0\r\n            }, seriesModel, { dataIndex: dataIndex, cb: cb, removeOpt: animationOpt });\r\n        };\r\n        Symbol.getSymbolSize = function (data, idx) {\r\n            var symbolSize = data.getItemVisual(idx, 'symbolSize');\r\n            return symbolSize instanceof Array\r\n                ? symbolSize.slice()\r\n                : [+symbolSize, +symbolSize];\r\n        };\r\n        return Symbol;\r\n    }(Group));\r\n    function driftSymbol(dx, dy) {\r\n        this.parent.drift(dx, dy);\r\n    }\n\n    function symbolNeedsDraw(data, point, idx, opt) {\r\n        return point && !isNaN(point[0]) && !isNaN(point[1])\r\n            && !(opt.isIgnore && opt.isIgnore(idx))\r\n            && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1]))\r\n            && data.getItemVisual(idx, 'symbol') !== 'none';\r\n    }\r\n    function normalizeUpdateOpt(opt) {\r\n        if (opt != null && !isObject(opt)) {\r\n            opt = { isIgnore: opt };\r\n        }\r\n        return opt || {};\r\n    }\r\n    function makeSeriesScope(data) {\r\n        var seriesModel = data.hostModel;\r\n        var emphasisModel = seriesModel.getModel('emphasis');\r\n        return {\r\n            emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\r\n            blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\r\n            selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\r\n            focus: emphasisModel.get('focus'),\r\n            blurScope: emphasisModel.get('blurScope'),\r\n            symbolRotate: seriesModel.get('symbolRotate'),\r\n            symbolOffset: seriesModel.get('symbolOffset'),\r\n            hoverScale: emphasisModel.get('scale'),\r\n            labelStatesModels: getLabelStatesModels(seriesModel),\r\n            cursorStyle: seriesModel.get('cursor')\r\n        };\r\n    }\r\n    var SymbolDraw = (function () {\r\n        function SymbolDraw(SymbolCtor) {\r\n            this.group = new Group();\r\n            this._SymbolCtor = SymbolCtor || Symbol;\r\n        }\r\n        SymbolDraw.prototype.updateData = function (data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            var group = this.group;\r\n            var seriesModel = data.hostModel;\r\n            var oldData = this._data;\r\n            var SymbolCtor = this._SymbolCtor;\r\n            var disableAnimation = opt.disableAnimation;\r\n            var seriesScope = makeSeriesScope(data);\r\n            var symbolUpdateOpt = { disableAnimation: disableAnimation };\r\n            var getSymbolPoint = opt.getSymbolPoint || function (idx) {\r\n                return data.getItemLayout(idx);\r\n            };\r\n            if (!oldData) {\r\n                group.removeAll();\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                var point = getSymbolPoint(newIdx);\r\n                if (symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\r\n                    symbolEl.setPosition(point);\r\n                    data.setItemGraphicEl(newIdx, symbolEl);\r\n                    group.add(symbolEl);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                var point = getSymbolPoint(newIdx);\r\n                if (!symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    group.remove(symbolEl);\r\n                    return;\r\n                }\r\n                if (!symbolEl) {\r\n                    symbolEl = new SymbolCtor(data, newIdx);\r\n                    symbolEl.setPosition(point);\r\n                }\r\n                else {\r\n                    symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\r\n                    var target = {\r\n                        x: point[0],\r\n                        y: point[1]\r\n                    };\r\n                    disableAnimation\r\n                        ? symbolEl.attr(target)\r\n                        : updateProps(symbolEl, target, seriesModel);\r\n                }\r\n                group.add(symbolEl);\r\n                data.setItemGraphicEl(newIdx, symbolEl);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                el && el.fadeOut(function () {\r\n                    group.remove(el);\r\n                });\r\n            })\r\n                .execute();\r\n            this._getSymbolPoint = getSymbolPoint;\r\n            this._data = data;\r\n        };\r\n        SymbolDraw.prototype.isPersistent = function () {\r\n            return true;\r\n        };\r\n        SymbolDraw.prototype.updateLayout = function () {\r\n            var _this = this;\r\n            var data = this._data;\r\n            if (data) {\r\n                data.eachItemGraphicEl(function (el, idx) {\r\n                    var point = _this._getSymbolPoint(idx);\r\n                    el.setPosition(point);\r\n                    el.markRedraw();\r\n                });\r\n            }\r\n        };\r\n        SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this._seriesScope = makeSeriesScope(data);\r\n            this._data = null;\r\n            this.group.removeAll();\r\n        };\r\n        SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            function updateIncrementalAndHover(el) {\r\n                if (!el.isGroup) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n                var point = data.getItemLayout(idx);\r\n                if (symbolNeedsDraw(data, point, idx, opt)) {\r\n                    var el = new this._SymbolCtor(data, idx, this._seriesScope);\r\n                    el.traverse(updateIncrementalAndHover);\r\n                    el.setPosition(point);\r\n                    this.group.add(el);\r\n                    data.setItemGraphicEl(idx, el);\r\n                }\r\n            }\r\n        };\r\n        SymbolDraw.prototype.remove = function (enableAnimation) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (data && enableAnimation) {\r\n                data.eachItemGraphicEl(function (el) {\r\n                    el.fadeOut(function () {\r\n                        group.remove(el);\r\n                    });\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n        };\r\n        return SymbolDraw;\r\n    }());\n\n    function prepareDataCoordInfo(coordSys, data, valueOrigin) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n        var valueStart = getValueStart(valueAxis, valueOrigin);\r\n        var baseAxisDim = baseAxis.dim;\r\n        var valueAxisDim = valueAxis.dim;\r\n        var valueDim = data.mapDimension(valueAxisDim);\r\n        var baseDim = data.mapDimension(baseAxisDim);\r\n        var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n        var dims = map(coordSys.dimensions, function (coordDim) {\r\n            return data.mapDimension(coordDim);\r\n        });\r\n        var stacked = false;\r\n        var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n        if (isDimensionStacked(data, dims[0])) {\r\n            stacked = true;\r\n            dims[0] = stackResultDim;\r\n        }\r\n        if (isDimensionStacked(data, dims[1])) {\r\n            stacked = true;\r\n            dims[1] = stackResultDim;\r\n        }\r\n        return {\r\n            dataDimsForPoint: dims,\r\n            valueStart: valueStart,\r\n            valueAxisDim: valueAxisDim,\r\n            baseAxisDim: baseAxisDim,\r\n            stacked: !!stacked,\r\n            valueDim: valueDim,\r\n            baseDim: baseDim,\r\n            baseDataOffset: baseDataOffset,\r\n            stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\r\n        };\r\n    }\r\n    function getValueStart(valueAxis, valueOrigin) {\r\n        var valueStart = 0;\r\n        var extent = valueAxis.scale.getExtent();\r\n        if (valueOrigin === 'start') {\r\n            valueStart = extent[0];\r\n        }\r\n        else if (valueOrigin === 'end') {\r\n            valueStart = extent[1];\r\n        }\r\n        else {\r\n            if (extent[0] > 0) {\r\n                valueStart = extent[0];\r\n            }\r\n            else if (extent[1] < 0) {\r\n                valueStart = extent[1];\r\n            }\r\n        }\r\n        return valueStart;\r\n    }\r\n    function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\r\n        var value = NaN;\r\n        if (dataCoordInfo.stacked) {\r\n            value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\r\n        }\r\n        if (isNaN(value)) {\r\n            value = dataCoordInfo.valueStart;\r\n        }\r\n        var baseDataOffset = dataCoordInfo.baseDataOffset;\r\n        var stackedData = [];\r\n        stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\r\n        stackedData[1 - baseDataOffset] = value;\r\n        return coordSys.dataToPoint(stackedData);\r\n    }\n\n    var supportFloat32Array = typeof Float32Array !== 'undefined';\r\n    var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\r\n    function createFloat32Array(arg) {\r\n        if (isArray(arg)) {\r\n            return supportFloat32Array ? new Float32Array(arg) : arg;\r\n        }\r\n        return new Float32ArrayCtor(arg);\r\n    }\n\n    function diffData(oldData, newData) {\r\n        var diffResult = [];\r\n        newData.diff(oldData)\r\n            .add(function (idx) {\r\n            diffResult.push({ cmd: '+', idx: idx });\r\n        })\r\n            .update(function (newIdx, oldIdx) {\r\n            diffResult.push({ cmd: '=', idx: oldIdx, idx1: newIdx });\r\n        })\r\n            .remove(function (idx) {\r\n            diffResult.push({ cmd: '-', idx: idx });\r\n        })\r\n            .execute();\r\n        return diffResult;\r\n    }\r\n    function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\r\n        var diff = diffData(oldData, newData);\r\n        var currPoints = [];\r\n        var nextPoints = [];\r\n        var currStackedPoints = [];\r\n        var nextStackedPoints = [];\r\n        var status = [];\r\n        var sortedIndices = [];\r\n        var rawIndices = [];\r\n        var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\r\n        var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\r\n        var oldPoints = oldData.getLayout('points') || [];\r\n        var newPoints = newData.getLayout('points') || [];\r\n        for (var i = 0; i < diff.length; i++) {\r\n            var diffItem = diff[i];\r\n            var pointAdded = true;\r\n            var oldIdx2 = void 0;\r\n            var newIdx2 = void 0;\r\n            switch (diffItem.cmd) {\r\n                case '=':\r\n                    oldIdx2 = diffItem.idx * 2;\r\n                    newIdx2 = diffItem.idx1 * 2;\r\n                    var currentX = oldPoints[oldIdx2];\r\n                    var currentY = oldPoints[oldIdx2 + 1];\r\n                    var nextX = newPoints[newIdx2];\r\n                    var nextY = newPoints[newIdx2 + 1];\r\n                    if (isNaN(currentX) || isNaN(currentY)) {\r\n                        currentX = nextX;\r\n                        currentY = nextY;\r\n                    }\r\n                    currPoints.push(currentX, currentY);\r\n                    nextPoints.push(nextX, nextY);\r\n                    currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n                    nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n                    rawIndices.push(newData.getRawIndex(diffItem.idx1));\r\n                    break;\r\n                case '+':\r\n                    var newIdx = diffItem.idx;\r\n                    var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\r\n                    var oldPt = oldCoordSys.dataToPoint([\r\n                        newData.get(newDataDimsForPoint[0], newIdx),\r\n                        newData.get(newDataDimsForPoint[1], newIdx)\r\n                    ]);\r\n                    newIdx2 = newIdx * 2;\r\n                    currPoints.push(oldPt[0], oldPt[1]);\r\n                    nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\r\n                    var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\r\n                    currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\r\n                    nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n                    rawIndices.push(newData.getRawIndex(newIdx));\r\n                    break;\r\n                case '-':\r\n                    var oldIdx = diffItem.idx;\r\n                    var rawIndex = oldData.getRawIndex(oldIdx);\r\n                    var oldDataDimsForPoint = oldDataNewCoordInfo.dataDimsForPoint;\r\n                    oldIdx2 = oldIdx * 2;\r\n                    if (rawIndex !== oldIdx) {\r\n                        var newPt = newCoordSys.dataToPoint([\r\n                            oldData.get(oldDataDimsForPoint[0], oldIdx),\r\n                            oldData.get(oldDataDimsForPoint[1], oldIdx)\r\n                        ]);\r\n                        var newStackedOnPt = getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, oldIdx);\r\n                        currPoints.push(oldPoints[oldIdx2], oldPoints[oldIdx2 + 1]);\r\n                        nextPoints.push(newPt[0], newPt[1]);\r\n                        currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n                        nextStackedPoints.push(newStackedOnPt[0], newStackedOnPt[1]);\r\n                        rawIndices.push(rawIndex);\r\n                    }\r\n                    else {\r\n                        pointAdded = false;\r\n                    }\r\n            }\r\n            if (pointAdded) {\r\n                status.push(diffItem);\r\n                sortedIndices.push(sortedIndices.length);\r\n            }\r\n        }\r\n        sortedIndices.sort(function (a, b) {\r\n            return rawIndices[a] - rawIndices[b];\r\n        });\r\n        var len = currPoints.length;\r\n        var sortedCurrPoints = createFloat32Array(len);\r\n        var sortedNextPoints = createFloat32Array(len);\r\n        var sortedCurrStackedPoints = createFloat32Array(len);\r\n        var sortedNextStackedPoints = createFloat32Array(len);\r\n        var sortedStatus = [];\r\n        for (var i = 0; i < sortedIndices.length; i++) {\r\n            var idx = sortedIndices[i];\r\n            var i2 = i * 2;\r\n            var idx2 = idx * 2;\r\n            sortedCurrPoints[i2] = currPoints[idx2];\r\n            sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\r\n            sortedNextPoints[i2] = nextPoints[idx2];\r\n            sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\r\n            sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\r\n            sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\r\n            sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\r\n            sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\r\n            sortedStatus[i] = status[idx];\r\n        }\r\n        return {\r\n            current: sortedCurrPoints,\r\n            next: sortedNextPoints,\r\n            stackedOnCurrent: sortedCurrStackedPoints,\r\n            stackedOnNext: sortedNextStackedPoints,\r\n            status: sortedStatus\r\n        };\r\n    }\n\n    var mathMin$5 = Math.min;\r\n    var mathMax$5 = Math.max;\r\n    function isPointNull(x, y) {\r\n        return isNaN(x) || isNaN(y);\r\n    }\r\n    function drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\r\n        var prevX;\r\n        var prevY;\r\n        var cpx0;\r\n        var cpy0;\r\n        var cpx1;\r\n        var cpy1;\r\n        var idx = start;\r\n        var k = 0;\r\n        for (; k < segLen; k++) {\r\n            var x = points[idx * 2];\r\n            var y = points[idx * 2 + 1];\r\n            if (idx >= allLen || idx < 0) {\r\n                break;\r\n            }\r\n            if (isPointNull(x, y)) {\r\n                if (connectNulls) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            if (idx === start) {\r\n                ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\r\n                cpx0 = x;\r\n                cpy0 = y;\r\n            }\r\n            else {\r\n                var dx = x - prevX;\r\n                var dy = y - prevY;\r\n                if ((dx * dx + dy * dy) < 0.5) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                if (smooth > 0) {\r\n                    var nextIdx = idx + dir;\r\n                    var nextX = points[nextIdx * 2];\r\n                    var nextY = points[nextIdx * 2 + 1];\r\n                    var tmpK = k + 1;\r\n                    if (connectNulls) {\r\n                        while (isPointNull(nextX, nextY) && tmpK < segLen) {\r\n                            tmpK++;\r\n                            nextIdx += dir;\r\n                            nextX = points[nextIdx * 2];\r\n                            nextY = points[nextIdx * 2 + 1];\r\n                        }\r\n                    }\r\n                    var ratioNextSeg = 0.5;\r\n                    var vx = 0;\r\n                    var vy = 0;\r\n                    var nextCpx0 = void 0;\r\n                    var nextCpy0 = void 0;\r\n                    if (tmpK >= segLen || isPointNull(nextX, nextY)) {\r\n                        cpx1 = x;\r\n                        cpy1 = y;\r\n                    }\r\n                    else {\r\n                        vx = nextX - prevX;\r\n                        vy = nextY - prevY;\r\n                        var dx0 = x - prevX;\r\n                        var dx1 = nextX - x;\r\n                        var dy0 = y - prevY;\r\n                        var dy1 = nextY - y;\r\n                        var lenPrevSeg = void 0;\r\n                        var lenNextSeg = void 0;\r\n                        if (smoothMonotone === 'x') {\r\n                            lenPrevSeg = Math.abs(dx0);\r\n                            lenNextSeg = Math.abs(dx1);\r\n                            cpx1 = x - lenPrevSeg * smooth;\r\n                            cpy1 = y;\r\n                            nextCpx0 = x + lenPrevSeg * smooth;\r\n                            nextCpy0 = y;\r\n                        }\r\n                        else if (smoothMonotone === 'y') {\r\n                            lenPrevSeg = Math.abs(dy0);\r\n                            lenNextSeg = Math.abs(dy1);\r\n                            cpx1 = x;\r\n                            cpy1 = y - lenPrevSeg * smooth;\r\n                            nextCpx0 = x;\r\n                            nextCpy0 = y + lenPrevSeg * smooth;\r\n                        }\r\n                        else {\r\n                            lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\r\n                            lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n                            ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\r\n                            cpx1 = x - vx * smooth * (1 - ratioNextSeg);\r\n                            cpy1 = y - vy * smooth * (1 - ratioNextSeg);\r\n                            nextCpx0 = x + vx * smooth * ratioNextSeg;\r\n                            nextCpy0 = y + vy * smooth * ratioNextSeg;\r\n                            nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x));\r\n                            nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y));\r\n                            nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x));\r\n                            nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y));\r\n                            vx = nextCpx0 - x;\r\n                            vy = nextCpy0 - y;\r\n                            cpx1 = x - vx * lenPrevSeg / lenNextSeg;\r\n                            cpy1 = y - vy * lenPrevSeg / lenNextSeg;\r\n                            cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x));\r\n                            cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y));\r\n                            cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x));\r\n                            cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y));\r\n                            vx = x - cpx1;\r\n                            vy = y - cpy1;\r\n                            nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\r\n                            nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\r\n                        }\r\n                    }\r\n                    ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\r\n                    cpx0 = nextCpx0;\r\n                    cpy0 = nextCpy0;\r\n                }\r\n                else {\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n            prevX = x;\r\n            prevY = y;\r\n            idx += dir;\r\n        }\r\n        return k;\r\n    }\r\n    var ECPolylineShape = (function () {\r\n        function ECPolylineShape() {\r\n            this.smooth = 0;\r\n            this.smoothConstraint = true;\r\n        }\r\n        return ECPolylineShape;\r\n    }());\r\n    var ECPolyline = (function (_super) {\r\n        __extends(ECPolyline, _super);\r\n        function ECPolyline(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polyline';\r\n            return _this;\r\n        }\r\n        ECPolyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        ECPolyline.prototype.getDefaultShape = function () {\r\n            return new ECPolylineShape();\r\n        };\r\n        ECPolyline.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var i = 0;\r\n            var len = points.length / 2;\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\r\n            }\r\n        };\r\n        ECPolyline.prototype.getPointOn = function (xOrY, dim) {\r\n            if (!this.path) {\r\n                this.createPathProxy();\r\n                this.buildPath(this.path, this.shape);\r\n            }\r\n            var path = this.path;\r\n            var data = path.data;\r\n            var CMD = PathProxy.CMD;\r\n            var x0;\r\n            var y0;\r\n            var isDimX = dim === 'x';\r\n            var roots = [];\r\n            for (var i = 0; i < data.length;) {\r\n                var cmd = data[i++];\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var x2 = void 0;\r\n                var y2 = void 0;\r\n                var x3 = void 0;\r\n                var y3 = void 0;\r\n                var t = void 0;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = data[i++];\r\n                        y0 = data[i++];\r\n                        break;\r\n                    case CMD.L:\r\n                        x = data[i++];\r\n                        y = data[i++];\r\n                        t = isDimX ? (xOrY - x0) / (x - x0)\r\n                            : (xOrY - y0) / (y - y0);\r\n                        if (t <= 1 && t >= 0) {\r\n                            var val = isDimX ? (y - y0) * t + y0\r\n                                : (x - x0) * t + x0;\r\n                            return isDimX ? [xOrY, val] : [val, xOrY];\r\n                        }\r\n                        x0 = x;\r\n                        y0 = y;\r\n                        break;\r\n                    case CMD.C:\r\n                        x = data[i++];\r\n                        y = data[i++];\r\n                        x2 = data[i++];\r\n                        y2 = data[i++];\r\n                        x3 = data[i++];\r\n                        y3 = data[i++];\r\n                        var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots)\r\n                            : cubicRootAt(y0, y, y2, y3, xOrY, roots);\r\n                        if (nRoot > 0) {\r\n                            for (var i_1 = 0; i_1 < nRoot; i_1++) {\r\n                                var t_1 = roots[i_1];\r\n                                if (t_1 <= 1 && t_1 >= 0) {\r\n                                    var val = isDimX ? cubicAt(y0, y, y2, y3, t_1)\r\n                                        : cubicAt(x0, x, x2, x3, t_1);\r\n                                    return isDimX ? [xOrY, val] : [val, xOrY];\r\n                                }\r\n                            }\r\n                        }\r\n                        x0 = x3;\r\n                        y0 = y3;\r\n                        break;\r\n                }\r\n            }\r\n        };\r\n        return ECPolyline;\r\n    }(Path));\r\n    var ECPolygonShape = (function (_super) {\r\n        __extends(ECPolygonShape, _super);\r\n        function ECPolygonShape() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return ECPolygonShape;\r\n    }(ECPolylineShape));\r\n    var ECPolygon = (function (_super) {\r\n        __extends(ECPolygon, _super);\r\n        function ECPolygon(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polygon';\r\n            return _this;\r\n        }\r\n        ECPolygon.prototype.getDefaultShape = function () {\r\n            return new ECPolygonShape();\r\n        };\r\n        ECPolygon.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var stackedOnPoints = shape.stackedOnPoints;\r\n            var i = 0;\r\n            var len = points.length / 2;\r\n            var smoothMonotone = shape.smoothMonotone;\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\r\n                drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\r\n                i += k + 1;\r\n                ctx.closePath();\r\n            }\r\n        };\r\n        return ECPolygon;\r\n    }(Path));\n\n    function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\r\n        var rect = cartesian.getArea();\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2;\r\n        x -= lineWidth / 2;\r\n        y -= lineWidth / 2;\r\n        width += lineWidth;\r\n        height += lineWidth;\r\n        x = Math.floor(x);\r\n        width = Math.round(width);\r\n        var clipPath = new Rect({\r\n            shape: {\r\n                x: x,\r\n                y: y,\r\n                width: width,\r\n                height: height\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var isHorizontal = baseAxis.isHorizontal();\r\n            var isAxisInversed = baseAxis.inverse;\r\n            if (isHorizontal) {\r\n                if (isAxisInversed) {\r\n                    clipPath.shape.x += width;\r\n                }\r\n                clipPath.shape.width = 0;\r\n            }\r\n            else {\r\n                if (!isAxisInversed) {\r\n                    clipPath.shape.y += height;\r\n                }\r\n                clipPath.shape.height = 0;\r\n            }\r\n            var duringCb = typeof during === 'function'\r\n                ? function (percent) {\r\n                    during(percent, clipPath);\r\n                }\r\n                : null;\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    width: width,\r\n                    height: height,\r\n                    x: x,\r\n                    y: y\r\n                }\r\n            }, seriesModel, null, done, duringCb);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createPolarClipPath(polar, hasAnimation, seriesModel) {\r\n        var sectorArea = polar.getArea();\r\n        var r0 = round$1(sectorArea.r0, 1);\r\n        var r = round$1(sectorArea.r, 1);\r\n        var clipPath = new Sector({\r\n            shape: {\r\n                cx: round$1(polar.cx, 1),\r\n                cy: round$1(polar.cy, 1),\r\n                r0: r0,\r\n                r: r,\r\n                startAngle: sectorArea.startAngle,\r\n                endAngle: sectorArea.endAngle,\r\n                clockwise: sectorArea.clockwise\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            var isRadial = polar.getBaseAxis().dim === 'angle';\r\n            if (isRadial) {\r\n                clipPath.shape.endAngle = sectorArea.startAngle;\r\n            }\r\n            else {\r\n                clipPath.shape.r = r0;\r\n            }\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    endAngle: sectorArea.endAngle,\r\n                    r: r\r\n                }\r\n            }, seriesModel);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\r\n        if (!coordSys) {\r\n            return null;\r\n        }\r\n        else if (coordSys.type === 'polar') {\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n        else if (coordSys.type === 'cartesian2d') {\r\n            return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\r\n        }\r\n        return null;\r\n    }\n\n    function isCoordinateSystemType(coordSys, type) {\r\n        return coordSys.type === type;\r\n    }\n\n    function isPointsSame(points1, points2) {\r\n        if (points1.length !== points2.length) {\r\n            return;\r\n        }\r\n        for (var i = 0; i < points1.length; i++) {\r\n            if (points1[i] !== points2[i]) {\r\n                return;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function bboxFromPoints(points) {\r\n        var minX = Infinity;\r\n        var minY = Infinity;\r\n        var maxX = -Infinity;\r\n        var maxY = -Infinity;\r\n        for (var i = 0; i < points.length;) {\r\n            var x = points[i++];\r\n            var y = points[i++];\r\n            if (!isNaN(x)) {\r\n                minX = Math.min(x, minX);\r\n                maxX = Math.max(x, maxX);\r\n            }\r\n            if (!isNaN(y)) {\r\n                minY = Math.min(y, minY);\r\n                maxY = Math.max(y, maxY);\r\n            }\r\n        }\r\n        return [\r\n            [minX, minY],\r\n            [maxX, maxY]\r\n        ];\r\n    }\r\n    function getBoundingDiff(points1, points2) {\r\n        var _a = bboxFromPoints(points1), min1 = _a[0], max1 = _a[1];\r\n        var _b = bboxFromPoints(points2), min2 = _b[0], max2 = _b[1];\r\n        return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\r\n    }\r\n    function getSmooth(smooth) {\r\n        return typeof smooth === 'number' ? smooth : (smooth ? 0.5 : 0);\r\n    }\r\n    function getStackedOnPoints(coordSys, data, dataCoordInfo) {\r\n        if (!dataCoordInfo.valueDim) {\r\n            return [];\r\n        }\r\n        var len = data.count();\r\n        var points = createFloat32Array(len * 2);\r\n        for (var idx = 0; idx < len; idx++) {\r\n            var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\r\n            points[idx * 2] = pt[0];\r\n            points[idx * 2 + 1] = pt[1];\r\n        }\r\n        return points;\r\n    }\r\n    function turnPointsIntoStep(points, coordSys, stepTurnAt) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\r\n        var stepPoints = [];\r\n        var i = 0;\r\n        var stepPt = [];\r\n        var pt = [];\r\n        var nextPt = [];\r\n        for (; i < points.length - 2; i += 2) {\r\n            nextPt[0] = points[i + 2];\r\n            nextPt[1] = points[i + 3];\r\n            pt[0] = points[i];\r\n            pt[1] = points[i + 1];\r\n            stepPoints.push(pt[0], pt[1]);\r\n            switch (stepTurnAt) {\r\n                case 'end':\r\n                    stepPt[baseIndex] = nextPt[baseIndex];\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n                    break;\r\n                case 'middle':\r\n                    var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\r\n                    var stepPt2 = [];\r\n                    stepPt[baseIndex] = stepPt2[baseIndex] = middle;\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n                    stepPoints.push(stepPt2[0], stepPt2[1]);\r\n                    break;\r\n                default:\r\n                    stepPt[baseIndex] = pt[baseIndex];\r\n                    stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n            }\r\n        }\r\n        stepPoints.push(points[i++], points[i++]);\r\n        return stepPoints;\r\n    }\r\n    function getVisualGradient(data, coordSys) {\r\n        var visualMetaList = data.getVisual('visualMeta');\r\n        if (!visualMetaList || !visualMetaList.length || !data.count()) {\r\n            return;\r\n        }\r\n        if (coordSys.type !== 'cartesian2d') {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style is only supported on cartesian2d.');\r\n            }\r\n            return;\r\n        }\r\n        var coordDim;\r\n        var visualMeta;\r\n        for (var i = visualMetaList.length - 1; i >= 0; i--) {\r\n            var dimIndex = visualMetaList[i].dimension;\r\n            var dimName = data.dimensions[dimIndex];\r\n            var dimInfo = data.getDimensionInfo(dimName);\r\n            coordDim = (dimInfo && dimInfo.coordDim);\r\n            if (coordDim === 'x' || coordDim === 'y') {\r\n                visualMeta = visualMetaList[i];\r\n                break;\r\n            }\r\n        }\r\n        if (!visualMeta) {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style only support x or y dimension.');\r\n            }\r\n            return;\r\n        }\r\n        var axis = coordSys.getAxis(coordDim);\r\n        var colorStops = map(visualMeta.stops, function (stop) {\r\n            return {\r\n                offset: 0,\r\n                coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\r\n                color: stop.color\r\n            };\r\n        });\r\n        var stopLen = colorStops.length;\r\n        var outerColors = visualMeta.outerColors.slice();\r\n        if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\r\n            colorStops.reverse();\r\n            outerColors.reverse();\r\n        }\r\n        var tinyExtent = 10;\r\n        var minCoord = colorStops[0].coord - tinyExtent;\r\n        var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\r\n        var coordSpan = maxCoord - minCoord;\r\n        if (coordSpan < 1e-3) {\r\n            return 'transparent';\r\n        }\r\n        each(colorStops, function (stop) {\r\n            stop.offset = (stop.coord - minCoord) / coordSpan;\r\n        });\r\n        colorStops.push({\r\n            offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\r\n            color: outerColors[1] || 'transparent'\r\n        });\r\n        colorStops.unshift({\r\n            offset: stopLen ? colorStops[0].offset : 0.5,\r\n            color: outerColors[0] || 'transparent'\r\n        });\r\n        var gradient = new LinearGradient(0, 0, 0, 0, colorStops, true);\r\n        gradient[coordDim] = minCoord;\r\n        gradient[coordDim + '2'] = maxCoord;\r\n        return gradient;\r\n    }\r\n    function getIsIgnoreFunc(seriesModel, data, coordSys) {\r\n        var showAllSymbol = seriesModel.get('showAllSymbol');\r\n        var isAuto = showAllSymbol === 'auto';\r\n        if (showAllSymbol && !isAuto) {\r\n            return;\r\n        }\r\n        var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n        if (!categoryAxis) {\r\n            return;\r\n        }\r\n        if (isAuto\r\n            && canShowAllSymbolForCategory(categoryAxis, data)) {\r\n            return;\r\n        }\r\n        var categoryDataDim = data.mapDimension(categoryAxis.dim);\r\n        var labelMap = {};\r\n        each(categoryAxis.getViewLabels(), function (labelItem) {\r\n            labelMap[labelItem.tickValue] = 1;\r\n        });\r\n        return function (dataIndex) {\r\n            return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\r\n        };\r\n    }\r\n    function canShowAllSymbolForCategory(categoryAxis, data) {\r\n        var axisExtent = categoryAxis.getExtent();\r\n        var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\r\n        isNaN(availSize) && (availSize = 0);\r\n        var dataLen = data.count();\r\n        var step = Math.max(1, Math.round(dataLen / 5));\r\n        for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\r\n            if (Symbol.getSymbolSize(data, dataIndex)[categoryAxis.isHorizontal() ? 1 : 0]\r\n                * 1.5 > availSize) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function isPointNull$1(x, y) {\r\n        return isNaN(x) || isNaN(y);\r\n    }\r\n    function getLastIndexNotNull(points) {\r\n        var len = points.length / 2;\r\n        for (; len > 0; len--) {\r\n            if (!isPointNull$1(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                break;\r\n            }\r\n        }\r\n        return len - 1;\r\n    }\r\n    function getPointAtIndex(points, idx) {\r\n        return [points[idx * 2], points[idx * 2 + 1]];\r\n    }\r\n    function getIndexRange(points, xOrY, dim) {\r\n        var len = points.length / 2;\r\n        var dimIdx = dim === 'x' ? 0 : 1;\r\n        var a;\r\n        var b;\r\n        var prevIndex = 0;\r\n        var nextIndex = -1;\r\n        for (var i = 0; i < len; i++) {\r\n            b = points[i * 2 + dimIdx];\r\n            if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\r\n                continue;\r\n            }\r\n            if (i === 0) {\r\n                a = b;\r\n                continue;\r\n            }\r\n            if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\r\n                nextIndex = i;\r\n                break;\r\n            }\r\n            prevIndex = i;\r\n            a = b;\r\n        }\r\n        return {\r\n            range: [prevIndex, nextIndex],\r\n            t: (xOrY - a) / (b - a)\r\n        };\r\n    }\r\n    function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\r\n        if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n            var endLabelModel_1 = seriesModel.getModel('endLabel');\r\n            var showEndLabel = endLabelModel_1.get('show');\r\n            var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\r\n            var data_1 = seriesModel.getData();\r\n            var labelAnimationRecord_1 = { lastFrameIndex: 0 };\r\n            var during = showEndLabel\r\n                ? function (percent, clipRect) {\r\n                    lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\r\n                }\r\n                : null;\r\n            var isHorizontal = coordSys.getBaseAxis().isHorizontal();\r\n            var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\r\n                var endLabel = lineView._endLabel;\r\n                if (endLabel && hasAnimation) {\r\n                    if (labelAnimationRecord_1.originalX != null) {\r\n                        endLabel.attr({\r\n                            x: labelAnimationRecord_1.originalX,\r\n                            y: labelAnimationRecord_1.originalY\r\n                        });\r\n                    }\r\n                }\r\n            }, during);\r\n            if (!seriesModel.get('clip', true)) {\r\n                var rectShape = clipPath.shape;\r\n                var expandSize = Math.max(rectShape.width, rectShape.height);\r\n                if (isHorizontal) {\r\n                    rectShape.y -= expandSize;\r\n                    rectShape.height += expandSize * 2;\r\n                }\r\n                else {\r\n                    rectShape.x -= expandSize;\r\n                    rectShape.width += expandSize * 2;\r\n                }\r\n            }\r\n            if (during) {\r\n                during(1, clipPath);\r\n            }\r\n            return clipPath;\r\n        }\r\n        else {\r\n            if (__DEV__) {\r\n                if (seriesModel.get(['endLabel', 'show'])) {\r\n                    console.warn('endLabel is not supported for lines in polar systems.');\r\n                }\r\n            }\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n    }\r\n    function getEndLabelStateSpecified(endLabelModel, coordSys) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var isHorizontal = baseAxis.isHorizontal();\r\n        var isBaseInversed = baseAxis.inverse;\r\n        var align = isHorizontal\r\n            ? isBaseInversed ? 'right' : 'left'\r\n            : 'center';\r\n        var verticalAlign = isHorizontal\r\n            ? 'middle'\r\n            : (isBaseInversed ? 'top' : 'bottom');\r\n        return {\r\n            normal: {\r\n                align: endLabelModel.get('align') || align,\r\n                verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign,\r\n                padding: endLabelModel.get('distance') || 0\r\n            }\r\n        };\r\n    }\r\n    var LineView = (function (_super) {\r\n        __extends(LineView, _super);\r\n        function LineView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        LineView.prototype.init = function () {\r\n            var lineGroup = new Group();\r\n            var symbolDraw = new SymbolDraw();\r\n            this.group.add(symbolDraw.group);\r\n            this._symbolDraw = symbolDraw;\r\n            this._lineGroup = lineGroup;\r\n        };\r\n        LineView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var lineStyleModel = seriesModel.getModel('lineStyle');\r\n            var areaStyleModel = seriesModel.getModel('areaStyle');\r\n            var points = data.getLayout('points') || [];\r\n            var isCoordSysPolar = coordSys.type === 'polar';\r\n            var prevCoordSys = this._coordSys;\r\n            var symbolDraw = this._symbolDraw;\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var lineGroup = this._lineGroup;\r\n            var hasAnimation = seriesModel.get('animation');\r\n            var isAreaChart = !areaStyleModel.isEmpty();\r\n            var valueOrigin = areaStyleModel.get('origin');\r\n            var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\r\n            var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\r\n            var showSymbol = seriesModel.get('showSymbol');\r\n            var isIgnoreFunc = showSymbol && !isCoordSysPolar\r\n                && getIsIgnoreFunc(seriesModel, data, coordSys);\r\n            var oldData = this._data;\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            if (!showSymbol) {\r\n                symbolDraw.remove();\r\n            }\r\n            group.add(lineGroup);\r\n            var step = !isCoordSysPolar ? seriesModel.get('step') : false;\r\n            var clipShapeForSymbol;\r\n            if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\r\n                clipShapeForSymbol = coordSys.getArea();\r\n                if (clipShapeForSymbol.width != null) {\r\n                    clipShapeForSymbol.x -= 0.1;\r\n                    clipShapeForSymbol.y -= 0.1;\r\n                    clipShapeForSymbol.width += 0.2;\r\n                    clipShapeForSymbol.height += 0.2;\r\n                }\r\n                else if (clipShapeForSymbol.r0) {\r\n                    clipShapeForSymbol.r0 -= 0.5;\r\n                    clipShapeForSymbol.r += 0.5;\r\n                }\r\n            }\r\n            this._clipShapeForSymbol = clipShapeForSymbol;\r\n            if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol,\r\n                    disableAnimation: true,\r\n                    getSymbolPoint: function (idx) {\r\n                        return [points[idx * 2], points[idx * 2 + 1]];\r\n                    }\r\n                });\r\n                hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\r\n                if (step) {\r\n                    points = turnPointsIntoStep(points, coordSys, step);\r\n                    if (stackedOnPoints) {\r\n                        stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                    }\r\n                }\r\n                polyline = this._newPolyline(points);\r\n                if (isAreaChart) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                if (!isCoordSysPolar) {\r\n                    this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\r\n            }\r\n            else {\r\n                if (isAreaChart && !polygon) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                else if (polygon && !isAreaChart) {\r\n                    lineGroup.remove(polygon);\r\n                    polygon = this._polygon = null;\r\n                }\r\n                if (!isCoordSysPolar) {\r\n                    this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(this, coordSys, false, seriesModel));\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol,\r\n                    disableAnimation: true,\r\n                    getSymbolPoint: function (idx) {\r\n                        return [points[idx * 2], points[idx * 2 + 1]];\r\n                    }\r\n                });\r\n                if (!isPointsSame(this._stackedOnPoints, stackedOnPoints)\r\n                    || !isPointsSame(this._points, points)) {\r\n                    if (hasAnimation) {\r\n                        this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\r\n                    }\r\n                    else {\r\n                        if (step) {\r\n                            points = turnPointsIntoStep(points, coordSys, step);\r\n                            if (stackedOnPoints) {\r\n                                stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                            }\r\n                        }\r\n                        polyline.setShape({\r\n                            points: points\r\n                        });\r\n                        polygon && polygon.setShape({\r\n                            points: points,\r\n                            stackedOnPoints: stackedOnPoints\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            var visualColor = getVisualGradient(data, coordSys)\r\n                || data.getVisual('style')[data.getVisual('drawType')];\r\n            var focus = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            polyline.useStyle(defaults(lineStyleModel.getLineStyle(), {\r\n                fill: 'none',\r\n                stroke: visualColor,\r\n                lineJoin: 'bevel'\r\n            }));\r\n            setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\r\n            if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\r\n                var emphasisLineStyle = polyline.getState('emphasis').style;\r\n                emphasisLineStyle.lineWidth = polyline.style.lineWidth + 1;\r\n            }\r\n            getECData(polyline).seriesIndex = seriesModel.seriesIndex;\r\n            enableHoverEmphasis(polyline, focus, blurScope);\r\n            var smooth = getSmooth(seriesModel.get('smooth'));\r\n            var smoothMonotone = seriesModel.get('smoothMonotone');\r\n            var connectNulls = seriesModel.get('connectNulls');\r\n            polyline.setShape({\r\n                smooth: smooth,\r\n                smoothMonotone: smoothMonotone,\r\n                connectNulls: connectNulls\r\n            });\r\n            if (polygon) {\r\n                var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\r\n                var stackedOnSmooth = 0;\r\n                polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n                    fill: visualColor,\r\n                    opacity: 0.7,\r\n                    lineJoin: 'bevel',\r\n                    decal: data.getVisual('style').decal\r\n                }));\r\n                if (stackedOnSeries) {\r\n                    stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\r\n                }\r\n                polygon.setShape({\r\n                    smooth: smooth,\r\n                    stackedOnSmooth: stackedOnSmooth,\r\n                    smoothMonotone: smoothMonotone,\r\n                    connectNulls: connectNulls\r\n                });\r\n                setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\r\n                getECData(polygon).seriesIndex = seriesModel.seriesIndex;\r\n                enableHoverEmphasis(polygon, focus, blurScope);\r\n            }\r\n            var changePolyState = function (toState) {\r\n                _this._changePolyState(toState);\r\n            };\r\n            data.eachItemGraphicEl(function (el) {\r\n                el && (el.onHoverStateChange = changePolyState);\r\n            });\r\n            this._polyline.onHoverStateChange = changePolyState;\r\n            this._data = data;\r\n            this._coordSys = coordSys;\r\n            this._stackedOnPoints = stackedOnPoints;\r\n            this._points = points;\r\n            this._step = step;\r\n            this._valueOrigin = valueOrigin;\r\n        };\r\n        LineView.prototype.dispose = function () { };\r\n        LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('emphasis');\r\n            if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\r\n                var points = data.getLayout('points');\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (!symbol) {\r\n                    var x = points[dataIndex * 2];\r\n                    var y = points[dataIndex * 2 + 1];\r\n                    if (isNaN(x) || isNaN(y)) {\r\n                        return;\r\n                    }\r\n                    if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\r\n                        return;\r\n                    }\r\n                    symbol = new Symbol(data, dataIndex);\r\n                    symbol.x = x;\r\n                    symbol.y = y;\r\n                    symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\r\n                    symbol.__temp = true;\r\n                    data.setItemGraphicEl(dataIndex, symbol);\r\n                    symbol.stopSymbolAnimation(true);\r\n                    this.group.add(symbol);\r\n                }\r\n                symbol.highlight();\r\n            }\r\n            else {\r\n                ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('normal');\r\n            if (dataIndex != null && dataIndex >= 0) {\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (symbol) {\r\n                    if (symbol.__temp) {\r\n                        data.setItemGraphicEl(dataIndex, null);\r\n                        this.group.remove(symbol);\r\n                    }\r\n                    else {\r\n                        symbol.downplay();\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype._changePolyState = function (toState) {\r\n            var polygon = this._polygon;\r\n            setStatesFlag(this._polyline, toState);\r\n            polygon && setStatesFlag(polygon, toState);\r\n        };\r\n        LineView.prototype._newPolyline = function (points) {\r\n            var polyline = this._polyline;\r\n            if (polyline) {\r\n                this._lineGroup.remove(polyline);\r\n            }\r\n            polyline = new ECPolyline({\r\n                shape: {\r\n                    points: points\r\n                },\r\n                segmentIgnoreThreshold: 2,\r\n                z2: 10\r\n            });\r\n            this._lineGroup.add(polyline);\r\n            this._polyline = polyline;\r\n            return polyline;\r\n        };\r\n        LineView.prototype._newPolygon = function (points, stackedOnPoints) {\r\n            var polygon = this._polygon;\r\n            if (polygon) {\r\n                this._lineGroup.remove(polygon);\r\n            }\r\n            polygon = new ECPolygon({\r\n                shape: {\r\n                    points: points,\r\n                    stackedOnPoints: stackedOnPoints\r\n                },\r\n                segmentIgnoreThreshold: 2\r\n            });\r\n            this._lineGroup.add(polygon);\r\n            this._polygon = polygon;\r\n            return polygon;\r\n        };\r\n        LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\r\n            var isHorizontalOrRadial;\r\n            var isCoordSysPolar;\r\n            var baseAxis = coordSys.getBaseAxis();\r\n            var isAxisInverse = baseAxis.inverse;\r\n            if (coordSys.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n                isCoordSysPolar = false;\r\n            }\r\n            else if (coordSys.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n                isCoordSysPolar = true;\r\n            }\r\n            var seriesModel = data.hostModel;\r\n            var seriesDuration = seriesModel.get('animationDuration');\r\n            if (typeof seriesDuration === 'function') {\r\n                seriesDuration = seriesDuration(null);\r\n            }\r\n            var seriesDalay = seriesModel.get('animationDelay') || 0;\r\n            var seriesDalayValue = typeof seriesDalay === 'function'\r\n                ? seriesDalay(null)\r\n                : seriesDalay;\r\n            data.eachItemGraphicEl(function (symbol, idx) {\r\n                var el = symbol;\r\n                if (el) {\r\n                    var point = [symbol.x, symbol.y];\r\n                    var start = void 0;\r\n                    var end = void 0;\r\n                    var current = void 0;\r\n                    if (isCoordSysPolar) {\r\n                        var polarClip = clipShape;\r\n                        var coord = coordSys.pointToCoord(point);\r\n                        if (isHorizontalOrRadial) {\r\n                            start = polarClip.startAngle;\r\n                            end = polarClip.endAngle;\r\n                            current = -coord[1] / 180 * Math.PI;\r\n                        }\r\n                        else {\r\n                            start = polarClip.r0;\r\n                            end = polarClip.r;\r\n                            current = coord[0];\r\n                        }\r\n                    }\r\n                    else {\r\n                        var gridClip = clipShape;\r\n                        if (isHorizontalOrRadial) {\r\n                            start = gridClip.x;\r\n                            end = gridClip.x + gridClip.width;\r\n                            current = symbol.x;\r\n                        }\r\n                        else {\r\n                            start = gridClip.y + gridClip.height;\r\n                            end = gridClip.y;\r\n                            current = symbol.y;\r\n                        }\r\n                    }\r\n                    var ratio = end === start ? 0 : (current - start) / (end - start);\r\n                    if (isAxisInverse) {\r\n                        ratio = 1 - ratio;\r\n                    }\r\n                    var delay = typeof seriesDalay === 'function' ? seriesDalay(idx)\r\n                        : (seriesDuration * ratio) + seriesDalayValue;\r\n                    var symbolPath = el.getSymbolPath();\r\n                    var text = symbolPath.getTextContent();\r\n                    el.attr({ scaleX: 0, scaleY: 0 });\r\n                    el.animateTo({\r\n                        scaleX: 1,\r\n                        scaleY: 1\r\n                    }, {\r\n                        duration: 200,\r\n                        delay: delay\r\n                    });\r\n                    if (text) {\r\n                        text.animateFrom({\r\n                            style: {\r\n                                opacity: 0\r\n                            }\r\n                        }, {\r\n                            duration: 300,\r\n                            delay: delay\r\n                        });\r\n                    }\r\n                    symbolPath.disableLabelAnimation = true;\r\n                }\r\n            });\r\n        };\r\n        LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys) {\r\n            var endLabelModel = seriesModel.getModel('endLabel');\r\n            if (endLabelModel.get('show')) {\r\n                var data_2 = seriesModel.getData();\r\n                var polyline = this._polyline;\r\n                var endLabel = this._endLabel;\r\n                if (!endLabel) {\r\n                    endLabel = this._endLabel = new ZRText({\r\n                        z2: 200\r\n                    });\r\n                    endLabel.ignoreClip = true;\r\n                    polyline.setTextContent(this._endLabel);\r\n                    polyline.disableLabelAnimation = true;\r\n                }\r\n                var dataIndex = getLastIndexNotNull(data_2.getLayout('points'));\r\n                if (dataIndex >= 0) {\r\n                    setLabelStyle(endLabel, getLabelStatesModels(seriesModel, 'endLabel'), {\r\n                        labelFetcher: seriesModel,\r\n                        labelDataIndex: dataIndex,\r\n                        defaultText: function (dataIndex, opt, overrideValue) {\r\n                            return overrideValue ? getDefaultInterpolatedLabel(data_2, overrideValue)\r\n                                : getDefaultLabel(data_2, dataIndex);\r\n                        },\r\n                        enableTextSetter: true\r\n                    }, getEndLabelStateSpecified(endLabelModel, coordSys));\r\n                }\r\n            }\r\n            else if (this._endLabel) {\r\n                this._polyline.removeTextContent();\r\n                this._endLabel = null;\r\n            }\r\n        };\r\n        LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\r\n            var endLabel = this._endLabel;\r\n            var polyline = this._polyline;\r\n            if (endLabel) {\r\n                if (percent < 1 && animationRecord.originalX == null) {\r\n                    animationRecord.originalX = endLabel.x;\r\n                    animationRecord.originalY = endLabel.y;\r\n                }\r\n                var points = data.getLayout('points');\r\n                var seriesModel = data.hostModel;\r\n                var connectNulls = seriesModel.get('connectNulls');\r\n                var precision = endLabelModel.get('precision');\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                var isHorizontal = baseAxis.isHorizontal();\r\n                var isBaseInversed = baseAxis.inverse;\r\n                var clipShape = clipRect.shape;\r\n                var xOrY = isBaseInversed\r\n                    ? isHorizontal ? clipShape.x : (clipShape.y + clipShape.height)\r\n                    : isHorizontal ? (clipShape.x + clipShape.width) : clipShape.y;\r\n                var dim = isHorizontal ? 'x' : 'y';\r\n                var dataIndexRange = getIndexRange(points, xOrY, dim);\r\n                var indices = dataIndexRange.range;\r\n                var diff = indices[1] - indices[0];\r\n                var value = void 0;\r\n                if (diff >= 1) {\r\n                    if (diff > 1 && !connectNulls) {\r\n                        var pt = getPointAtIndex(points, indices[0]);\r\n                        endLabel.attr({ x: pt[0], y: pt[1] });\r\n                        valueAnimation && (value = seriesModel.getRawValue(indices[0]));\r\n                    }\r\n                    else {\r\n                        var pt = polyline.getPointOn(xOrY, dim);\r\n                        pt && endLabel.attr({ x: pt[0], y: pt[1] });\r\n                        var startValue = seriesModel.getRawValue(indices[0]);\r\n                        var endValue = seriesModel.getRawValue(indices[1]);\r\n                        valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\r\n                    }\r\n                    animationRecord.lastFrameIndex = indices[0];\r\n                }\r\n                else {\r\n                    var idx = (percent === 1 || animationRecord.lastFrameIndex > 0) ? indices[0] : 0;\r\n                    var pt = getPointAtIndex(points, idx);\r\n                    valueAnimation && (value = seriesModel.getRawValue(idx));\r\n                    endLabel.attr({ x: pt[0], y: pt[1] });\r\n                }\r\n                if (valueAnimation) {\r\n                    labelInner(endLabel).setLabelText(value);\r\n                }\r\n            }\r\n        };\r\n        LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var seriesModel = data.hostModel;\r\n            var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\r\n            var current = diff.current;\r\n            var stackedOnCurrent = diff.stackedOnCurrent;\r\n            var next = diff.next;\r\n            var stackedOnNext = diff.stackedOnNext;\r\n            if (step) {\r\n                current = turnPointsIntoStep(diff.current, coordSys, step);\r\n                stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\r\n                next = turnPointsIntoStep(diff.next, coordSys, step);\r\n                stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\r\n            }\r\n            if (getBoundingDiff(current, next) > 3000\r\n                || (polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000)) {\r\n                polyline.setShape({\r\n                    points: next\r\n                });\r\n                if (polygon) {\r\n                    polygon.setShape({\r\n                        points: next,\r\n                        stackedOnPoints: stackedOnNext\r\n                    });\r\n                }\r\n                return;\r\n            }\r\n            polyline.shape.__points = diff.current;\r\n            polyline.shape.points = current;\r\n            var target = {\r\n                shape: {\r\n                    points: next\r\n                }\r\n            };\r\n            if (diff.current !== current) {\r\n                target.shape.__points = diff.next;\r\n            }\r\n            polyline.stopAnimation();\r\n            updateProps(polyline, target, seriesModel);\r\n            if (polygon) {\r\n                polygon.setShape({\r\n                    points: current,\r\n                    stackedOnPoints: stackedOnCurrent\r\n                });\r\n                polygon.stopAnimation();\r\n                updateProps(polygon, {\r\n                    shape: {\r\n                        stackedOnPoints: stackedOnNext\r\n                    }\r\n                }, seriesModel);\r\n                if (polyline.shape.points !== polygon.shape.points) {\r\n                    polygon.shape.points = polyline.shape.points;\r\n                }\r\n            }\r\n            var updatedDataInfo = [];\r\n            var diffStatus = diff.status;\r\n            for (var i = 0; i < diffStatus.length; i++) {\r\n                var cmd = diffStatus[i].cmd;\r\n                if (cmd === '=') {\r\n                    var el = data.getItemGraphicEl(diffStatus[i].idx1);\r\n                    if (el) {\r\n                        updatedDataInfo.push({\r\n                            el: el,\r\n                            ptIdx: i\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            if (polyline.animators && polyline.animators.length) {\r\n                polyline.animators[0].during(function () {\r\n                    polygon && polygon.dirtyShape();\r\n                    var points = polyline.shape.__points;\r\n                    for (var i = 0; i < updatedDataInfo.length; i++) {\r\n                        var el = updatedDataInfo[i].el;\r\n                        var offset = updatedDataInfo[i].ptIdx * 2;\r\n                        el.x = points[offset];\r\n                        el.y = points[offset + 1];\r\n                        el.markRedraw();\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LineView.prototype.remove = function (ecModel) {\r\n            var group = this.group;\r\n            var oldData = this._data;\r\n            this._lineGroup.removeAll();\r\n            this._symbolDraw.remove(true);\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            this._polyline =\r\n                this._polygon =\r\n                    this._coordSys =\r\n                        this._points =\r\n                            this._stackedOnPoints =\r\n                                this._endLabel =\r\n                                    this._data = null;\r\n        };\r\n        LineView.type = 'line';\r\n        return LineView;\r\n    }(ChartView));\r\n    ChartView.registerClass(LineView);\n\n    function pointsLayout(seriesType, forceStoreInTypedArray) {\r\n        return {\r\n            seriesType: seriesType,\r\n            plan: createRenderPlanner(),\r\n            reset: function (seriesModel) {\r\n                var data = seriesModel.getData();\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var pipelineContext = seriesModel.pipelineContext;\r\n                var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\r\n                if (!coordSys) {\r\n                    return;\r\n                }\r\n                var dims = map(coordSys.dimensions, function (dim) {\r\n                    return data.mapDimension(dim);\r\n                }).slice(0, 2);\r\n                var dimLen = dims.length;\r\n                var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n                if (isDimensionStacked(data, dims[0])) {\r\n                    dims[0] = stackResultDim;\r\n                }\r\n                if (isDimensionStacked(data, dims[1])) {\r\n                    dims[1] = stackResultDim;\r\n                }\r\n                var dimInfo0 = data.getDimensionInfo(dims[0]);\r\n                var dimInfo1 = data.getDimensionInfo(dims[1]);\r\n                var dimIdx0 = dimInfo0 && dimInfo0.index;\r\n                var dimIdx1 = dimInfo1 && dimInfo1.index;\r\n                return dimLen && {\r\n                    progress: function (params, data) {\r\n                        var segCount = params.end - params.start;\r\n                        var points = useTypedArray && createFloat32Array(segCount * dimLen);\r\n                        var tmpIn = [];\r\n                        var tmpOut = [];\r\n                        for (var i = params.start, offset = 0; i < params.end; i++) {\r\n                            var point = void 0;\r\n                            if (dimLen === 1) {\r\n                                var x = data.getByDimIdx(dimIdx0, i);\r\n                                point = coordSys.dataToPoint(x, null, tmpOut);\r\n                            }\r\n                            else {\r\n                                tmpIn[0] = data.getByDimIdx(dimIdx0, i);\r\n                                tmpIn[1] = data.getByDimIdx(dimIdx1, i);\r\n                                point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n                            }\r\n                            if (useTypedArray) {\r\n                                points[offset++] = point[0];\r\n                                points[offset++] = point[1];\r\n                            }\r\n                            else {\r\n                                data.setItemLayout(i, point.slice());\r\n                            }\r\n                        }\r\n                        useTypedArray && data.setLayout('points', points);\r\n                    }\r\n                };\r\n            }\r\n        };\r\n    }\n\n    var samplers = {\r\n        average: function (frame) {\r\n            var sum = 0;\r\n            var count = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                if (!isNaN(frame[i])) {\r\n                    sum += frame[i];\r\n                    count++;\r\n                }\r\n            }\r\n            return count === 0 ? NaN : sum / count;\r\n        },\r\n        sum: function (frame) {\r\n            var sum = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                sum += frame[i] || 0;\r\n            }\r\n            return sum;\r\n        },\r\n        max: function (frame) {\r\n            var max = -Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] > max && (max = frame[i]);\r\n            }\r\n            return isFinite(max) ? max : NaN;\r\n        },\r\n        min: function (frame) {\r\n            var min = Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] < min && (min = frame[i]);\r\n            }\r\n            return isFinite(min) ? min : NaN;\r\n        },\r\n        nearest: function (frame) {\r\n            return frame[0];\r\n        }\r\n    };\r\n    var indexSampler = function (frame) {\r\n        return Math.round(frame.length / 2);\r\n    };\r\n    function dataSample(seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel, api) {\r\n                var data = seriesModel.getData();\r\n                var sampling = seriesModel.get('sampling');\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var count = data.count();\r\n                if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {\r\n                    var baseAxis = coordSys.getBaseAxis();\r\n                    var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n                    var extent = baseAxis.getExtent();\r\n                    var dpr = api.getDevicePixelRatio();\r\n                    var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);\r\n                    var rate = Math.round(count / size);\r\n                    if (rate > 1) {\r\n                        if (sampling === 'lttb') {\r\n                            seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));\r\n                        }\r\n                        var sampler = void 0;\r\n                        if (typeof sampling === 'string') {\r\n                            sampler = samplers[sampling];\r\n                        }\r\n                        else if (typeof sampling === 'function') {\r\n                            sampler = sampling;\r\n                        }\r\n                        if (sampler) {\r\n                            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\n\n    var defaultOption = {\r\n        show: true,\r\n        zlevel: 0,\r\n        z: 0,\r\n        inverse: false,\r\n        name: '',\r\n        nameLocation: 'end',\r\n        nameRotate: null,\r\n        nameTruncate: {\r\n            maxWidth: null,\r\n            ellipsis: '...',\r\n            placeholder: '.'\r\n        },\r\n        nameTextStyle: {},\r\n        nameGap: 15,\r\n        silent: false,\r\n        triggerEvent: false,\r\n        tooltip: {\r\n            show: false\r\n        },\r\n        axisPointer: {},\r\n        axisLine: {\r\n            show: true,\r\n            onZero: true,\r\n            onZeroAxisIndex: null,\r\n            lineStyle: {\r\n                color: '#6E7079',\r\n                width: 1,\r\n                type: 'solid'\r\n            },\r\n            symbol: ['none', 'none'],\r\n            symbolSize: [10, 15]\r\n        },\r\n        axisTick: {\r\n            show: true,\r\n            inside: false,\r\n            length: 5,\r\n            lineStyle: {\r\n                width: 1\r\n            }\r\n        },\r\n        axisLabel: {\r\n            show: true,\r\n            inside: false,\r\n            rotate: 0,\r\n            showMinLabel: null,\r\n            showMaxLabel: null,\r\n            margin: 8,\r\n            fontSize: 12\r\n        },\r\n        splitLine: {\r\n            show: true,\r\n            lineStyle: {\r\n                color: ['#E0E6F1'],\r\n                width: 1,\r\n                type: 'solid'\r\n            }\r\n        },\r\n        splitArea: {\r\n            show: false,\r\n            areaStyle: {\r\n                color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)']\r\n            }\r\n        }\r\n    };\r\n    var categoryAxis = merge({\r\n        boundaryGap: true,\r\n        deduplication: null,\r\n        splitLine: {\r\n            show: false\r\n        },\r\n        axisTick: {\r\n            alignWithLabel: false,\r\n            interval: 'auto'\r\n        },\r\n        axisLabel: {\r\n            interval: 'auto'\r\n        }\r\n    }, defaultOption);\r\n    var valueAxis = merge({\r\n        boundaryGap: [0, 0],\r\n        axisLine: {\r\n            show: 'auto'\r\n        },\r\n        axisTick: {\r\n            show: 'auto'\r\n        },\r\n        splitNumber: 5,\r\n        minorTick: {\r\n            show: false,\r\n            splitNumber: 5,\r\n            length: 3,\r\n            lineStyle: {}\r\n        },\r\n        minorSplitLine: {\r\n            show: false,\r\n            lineStyle: {\r\n                color: '#F4F7FD',\r\n                width: 1\r\n            }\r\n        }\r\n    }, defaultOption);\r\n    var timeAxis = merge({\r\n        scale: true,\r\n        splitNumber: 6,\r\n        axisLabel: {\r\n            showMinLabel: false,\r\n            showMaxLabel: false,\r\n            rich: {\r\n                primary: {\r\n                    fontWeight: 'bold'\r\n                }\r\n            }\r\n        },\r\n        splitLine: {\r\n            show: false\r\n        }\r\n    }, valueAxis);\r\n    var logAxis = defaults({\r\n        scale: true,\r\n        logBase: 10\r\n    }, valueAxis);\r\n    var axisDefault = {\r\n        category: categoryAxis,\r\n        value: valueAxis,\r\n        time: timeAxis,\r\n        log: logAxis\r\n    };\n\n    var AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 };\n\n    function axisModelCreator(axisName, BaseAxisModelClass, extraDefaultOption) {\r\n        each(AXIS_TYPES, function (v, axisType) {\r\n            var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);\r\n            var AxisModel = (function (_super) {\r\n                __extends(AxisModel, _super);\r\n                function AxisModel() {\r\n                    var args = [];\r\n                    for (var _i = 0; _i < arguments.length; _i++) {\r\n                        args[_i] = arguments[_i];\r\n                    }\r\n                    var _this = _super.apply(this, args) || this;\r\n                    _this.type = axisName + 'Axis.' + axisType;\r\n                    return _this;\r\n                }\r\n                AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n                    var layoutMode = fetchLayoutMode(this);\r\n                    var inputPositionParams = layoutMode\r\n                        ? getLayoutParams(option) : {};\r\n                    var themeModel = ecModel.getTheme();\r\n                    merge(option, themeModel.get(axisType + 'Axis'));\r\n                    merge(option, this.getDefaultOption());\r\n                    option.type = getAxisType(option);\r\n                    if (layoutMode) {\r\n                        mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n                    }\r\n                };\r\n                AxisModel.prototype.optionUpdated = function () {\r\n                    var thisOption = this.option;\r\n                    if (thisOption.type === 'category') {\r\n                        this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\r\n                    }\r\n                };\r\n                AxisModel.prototype.getCategories = function (rawData) {\r\n                    var option = this.option;\r\n                    if (option.type === 'category') {\r\n                        if (rawData) {\r\n                            return option.data;\r\n                        }\r\n                        return this.__ordinalMeta.categories;\r\n                    }\r\n                };\r\n                AxisModel.prototype.getOrdinalMeta = function () {\r\n                    return this.__ordinalMeta;\r\n                };\r\n                AxisModel.type = axisName + 'Axis.' + axisType;\r\n                AxisModel.defaultOption = defaultOption;\r\n                return AxisModel;\r\n            }(BaseAxisModelClass));\r\n            ComponentModel.registerClass(AxisModel);\r\n        });\r\n        ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', getAxisType);\r\n    }\r\n    function getAxisType(option) {\r\n        return option.type || (option.data ? 'category' : 'value');\r\n    }\n\n    var CartesianAxisModel = (function (_super) {\r\n        __extends(CartesianAxisModel, _super);\r\n        function CartesianAxisModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        CartesianAxisModel.prototype.getCoordSysModel = function () {\r\n            return this.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n        };\r\n        CartesianAxisModel.type = 'cartesian2dAxis';\r\n        return CartesianAxisModel;\r\n    }(ComponentModel));\r\n    mixin(CartesianAxisModel, AxisModelCommonMixin);\r\n    var extraOption = {\r\n        offset: 0,\r\n        categorySortInfo: []\r\n    };\r\n    axisModelCreator('x', CartesianAxisModel, extraOption);\r\n    axisModelCreator('y', CartesianAxisModel, extraOption);\n\n    var PI$6 = Math.PI;\r\n    var AxisBuilder = (function () {\r\n        function AxisBuilder(axisModel, opt) {\r\n            this.group = new Group();\r\n            this.opt = opt;\r\n            this.axisModel = axisModel;\r\n            defaults(opt, {\r\n                labelOffset: 0,\r\n                nameDirection: 1,\r\n                tickDirection: 1,\r\n                labelDirection: 1,\r\n                silent: true,\r\n                handleAutoShown: function () { return true; }\r\n            });\r\n            var transformGroup = new Group({\r\n                x: opt.position[0],\r\n                y: opt.position[1],\r\n                rotation: opt.rotation\r\n            });\r\n            transformGroup.updateTransform();\r\n            this._transformGroup = transformGroup;\r\n        }\r\n        AxisBuilder.prototype.hasBuilder = function (name) {\r\n            return !!builders[name];\r\n        };\r\n        AxisBuilder.prototype.add = function (name) {\r\n            builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\r\n        };\r\n        AxisBuilder.prototype.getGroup = function () {\r\n            return this.group;\r\n        };\r\n        AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\r\n            var rotationDiff = remRadian(textRotation - axisRotation);\r\n            var textAlign;\r\n            var textVerticalAlign;\r\n            if (isRadianAroundZero(rotationDiff)) {\r\n                textVerticalAlign = direction > 0 ? 'top' : 'bottom';\r\n                textAlign = 'center';\r\n            }\r\n            else if (isRadianAroundZero(rotationDiff - PI$6)) {\r\n                textVerticalAlign = direction > 0 ? 'bottom' : 'top';\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                textVerticalAlign = 'middle';\r\n                if (rotationDiff > 0 && rotationDiff < PI$6) {\r\n                    textAlign = direction > 0 ? 'right' : 'left';\r\n                }\r\n                else {\r\n                    textAlign = direction > 0 ? 'left' : 'right';\r\n                }\r\n            }\r\n            return {\r\n                rotation: rotationDiff,\r\n                textAlign: textAlign,\r\n                textVerticalAlign: textVerticalAlign\r\n            };\r\n        };\r\n        AxisBuilder.makeAxisEventDataBase = function (axisModel) {\r\n            var eventData = {\r\n                componentType: axisModel.mainType,\r\n                componentIndex: axisModel.componentIndex\r\n            };\r\n            eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\r\n            return eventData;\r\n        };\r\n        AxisBuilder.isLabelSilent = function (axisModel) {\r\n            var tooltipOpt = axisModel.get('tooltip');\r\n            return axisModel.get('silent')\r\n                || !(axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show));\r\n        };\r\n        return AxisBuilder;\r\n    }());\r\n    var builders = {\r\n        axisLine: function (opt, axisModel, group, transformGroup) {\r\n            var shown = axisModel.get(['axisLine', 'show']);\r\n            if (shown === 'auto' && opt.handleAutoShown) {\r\n                shown = opt.handleAutoShown('axisLine');\r\n            }\r\n            if (!shown) {\r\n                return;\r\n            }\r\n            var extent = axisModel.axis.getExtent();\r\n            var matrix = transformGroup.transform;\r\n            var pt1 = [extent[0], 0];\r\n            var pt2 = [extent[1], 0];\r\n            if (matrix) {\r\n                applyTransform(pt1, pt1, matrix);\r\n                applyTransform(pt2, pt2, matrix);\r\n            }\r\n            var lineStyle = extend({\r\n                lineCap: 'round'\r\n            }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\r\n            var line = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: lineStyle,\r\n                strokeContainThreshold: opt.strokeContainThreshold || 5,\r\n                silent: true,\r\n                z2: 1\r\n            });\r\n            line.anid = 'line';\r\n            group.add(line);\r\n            var arrows = axisModel.get(['axisLine', 'symbol']);\r\n            var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\r\n            var arrowOffset = axisModel.get(['axisLine', 'symbolOffset']) || 0;\r\n            if (typeof arrowOffset === 'number') {\r\n                arrowOffset = [arrowOffset, arrowOffset];\r\n            }\r\n            if (arrows != null) {\r\n                if (typeof arrows === 'string') {\r\n                    arrows = [arrows, arrows];\r\n                }\r\n                if (typeof arrowSize === 'string'\r\n                    || typeof arrowSize === 'number') {\r\n                    arrowSize = [arrowSize, arrowSize];\r\n                }\r\n                var symbolWidth_1 = arrowSize[0];\r\n                var symbolHeight_1 = arrowSize[1];\r\n                each([{\r\n                        rotate: opt.rotation + Math.PI / 2,\r\n                        offset: arrowOffset[0],\r\n                        r: 0\r\n                    }, {\r\n                        rotate: opt.rotation - Math.PI / 2,\r\n                        offset: arrowOffset[1],\r\n                        r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0])\r\n                            + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\r\n                    }], function (point, index) {\r\n                    if (arrows[index] !== 'none' && arrows[index] != null) {\r\n                        var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);\r\n                        var r = point.r + point.offset;\r\n                        symbol.attr({\r\n                            rotation: point.rotate,\r\n                            x: pt1[0] + r * Math.cos(opt.rotation),\r\n                            y: pt1[1] - r * Math.sin(opt.rotation),\r\n                            silent: true,\r\n                            z2: 11\r\n                        });\r\n                        group.add(symbol);\r\n                    }\r\n                });\r\n            }\r\n        },\r\n        axisTickLabel: function (opt, axisModel, group, transformGroup) {\r\n            var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\r\n            var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\r\n            fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\r\n            buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);\r\n        },\r\n        axisName: function (opt, axisModel, group, transformGroup) {\r\n            var name = retrieve(opt.axisName, axisModel.get('name'));\r\n            if (!name) {\r\n                return;\r\n            }\r\n            var nameLocation = axisModel.get('nameLocation');\r\n            var nameDirection = opt.nameDirection;\r\n            var textStyleModel = axisModel.getModel('nameTextStyle');\r\n            var gap = axisModel.get('nameGap') || 0;\r\n            var extent = axisModel.axis.getExtent();\r\n            var gapSignal = extent[0] > extent[1] ? -1 : 1;\r\n            var pos = [\r\n                nameLocation === 'start'\r\n                    ? extent[0] - gapSignal * gap\r\n                    : nameLocation === 'end'\r\n                        ? extent[1] + gapSignal * gap\r\n                        : (extent[0] + extent[1]) / 2,\r\n                isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0\r\n            ];\r\n            var labelLayout;\r\n            var nameRotation = axisModel.get('nameRotate');\r\n            if (nameRotation != null) {\r\n                nameRotation = nameRotation * PI$6 / 180;\r\n            }\r\n            var axisNameAvailableWidth;\r\n            if (isNameLocationCenter(nameLocation)) {\r\n                labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, nameDirection);\r\n            }\r\n            else {\r\n                labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\r\n                axisNameAvailableWidth = opt.axisNameAvailableWidth;\r\n                if (axisNameAvailableWidth != null) {\r\n                    axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\r\n                    !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\r\n                }\r\n            }\r\n            var textFont = textStyleModel.getFont();\r\n            var truncateOpt = axisModel.get('nameTruncate', true) || {};\r\n            var ellipsis = truncateOpt.ellipsis;\r\n            var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\r\n            var tooltipOpt = axisModel.get('tooltip', true);\r\n            var mainType = axisModel.mainType;\r\n            var formatterParams = {\r\n                componentType: mainType,\r\n                name: name,\r\n                $vars: ['name']\r\n            };\r\n            formatterParams[mainType + 'Index'] = axisModel.componentIndex;\r\n            var textEl = new ZRText({\r\n                x: pos[0],\r\n                y: pos[1],\r\n                rotation: labelLayout.rotation,\r\n                silent: AxisBuilder.isLabelSilent(axisModel),\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: name,\r\n                    font: textFont,\r\n                    overflow: 'truncate',\r\n                    width: maxWidth,\r\n                    ellipsis: ellipsis,\r\n                    fill: textStyleModel.getTextColor()\r\n                        || axisModel.get(['axisLine', 'lineStyle', 'color']),\r\n                    align: textStyleModel.get('align')\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: textStyleModel.get('verticalAlign')\r\n                        || labelLayout.textVerticalAlign\r\n                }),\r\n                z2: 1\r\n            });\r\n            textEl.tooltip = (tooltipOpt && tooltipOpt.show)\r\n                ? extend({\r\n                    content: name,\r\n                    formatter: function () {\r\n                        return name;\r\n                    },\r\n                    formatterParams: formatterParams\r\n                }, tooltipOpt)\r\n                : null;\r\n            textEl.__fullText = name;\r\n            textEl.anid = 'name';\r\n            if (axisModel.get('triggerEvent')) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisName';\r\n                eventData.name = name;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        }\r\n    };\r\n    function endTextLayout(rotation, textPosition, textRotate, extent) {\r\n        var rotationDiff = remRadian(textRotate - rotation);\r\n        var textAlign;\r\n        var textVerticalAlign;\r\n        var inverse = extent[0] > extent[1];\r\n        var onLeft = (textPosition === 'start' && !inverse)\r\n            || (textPosition !== 'start' && inverse);\r\n        if (isRadianAroundZero(rotationDiff - PI$6 / 2)) {\r\n            textVerticalAlign = onLeft ? 'bottom' : 'top';\r\n            textAlign = 'center';\r\n        }\r\n        else if (isRadianAroundZero(rotationDiff - PI$6 * 1.5)) {\r\n            textVerticalAlign = onLeft ? 'top' : 'bottom';\r\n            textAlign = 'center';\r\n        }\r\n        else {\r\n            textVerticalAlign = 'middle';\r\n            if (rotationDiff < PI$6 * 1.5 && rotationDiff > PI$6 / 2) {\r\n                textAlign = onLeft ? 'left' : 'right';\r\n            }\r\n            else {\r\n                textAlign = onLeft ? 'right' : 'left';\r\n            }\r\n        }\r\n        return {\r\n            rotation: rotationDiff,\r\n            textAlign: textAlign,\r\n            textVerticalAlign: textVerticalAlign\r\n        };\r\n    }\r\n    function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\r\n        if (shouldShowAllLabels(axisModel.axis)) {\r\n            return;\r\n        }\r\n        var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\r\n        var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']);\r\n        labelEls = labelEls || [];\r\n        tickEls = tickEls || [];\r\n        var firstLabel = labelEls[0];\r\n        var nextLabel = labelEls[1];\r\n        var lastLabel = labelEls[labelEls.length - 1];\r\n        var prevLabel = labelEls[labelEls.length - 2];\r\n        var firstTick = tickEls[0];\r\n        var nextTick = tickEls[1];\r\n        var lastTick = tickEls[tickEls.length - 1];\r\n        var prevTick = tickEls[tickEls.length - 2];\r\n        if (showMinLabel === false) {\r\n            ignoreEl(firstLabel);\r\n            ignoreEl(firstTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\r\n            if (showMinLabel) {\r\n                ignoreEl(nextLabel);\r\n                ignoreEl(nextTick);\r\n            }\r\n            else {\r\n                ignoreEl(firstLabel);\r\n                ignoreEl(firstTick);\r\n            }\r\n        }\r\n        if (showMaxLabel === false) {\r\n            ignoreEl(lastLabel);\r\n            ignoreEl(lastTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\r\n            if (showMaxLabel) {\r\n                ignoreEl(prevLabel);\r\n                ignoreEl(prevTick);\r\n            }\r\n            else {\r\n                ignoreEl(lastLabel);\r\n                ignoreEl(lastTick);\r\n            }\r\n        }\r\n    }\r\n    function ignoreEl(el) {\r\n        el && (el.ignore = true);\r\n    }\r\n    function isTwoLabelOverlapped(current, next) {\r\n        var firstRect = current && current.getBoundingRect().clone();\r\n        var nextRect = next && next.getBoundingRect().clone();\r\n        if (!firstRect || !nextRect) {\r\n            return;\r\n        }\r\n        var mRotationBack = identity([]);\r\n        rotate(mRotationBack, mRotationBack, -current.rotation);\r\n        firstRect.applyTransform(mul$1([], mRotationBack, current.getLocalTransform()));\r\n        nextRect.applyTransform(mul$1([], mRotationBack, next.getLocalTransform()));\r\n        return firstRect.intersect(nextRect);\r\n    }\r\n    function isNameLocationCenter(nameLocation) {\r\n        return nameLocation === 'middle' || nameLocation === 'center';\r\n    }\r\n    function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\r\n        var tickEls = [];\r\n        var pt1 = [];\r\n        var pt2 = [];\r\n        for (var i = 0; i < ticksCoords.length; i++) {\r\n            var tickCoord = ticksCoords[i].coord;\r\n            pt1[0] = tickCoord;\r\n            pt1[1] = 0;\r\n            pt2[0] = tickCoord;\r\n            pt2[1] = tickEndCoord;\r\n            if (tickTransform) {\r\n                applyTransform(pt1, pt1, tickTransform);\r\n                applyTransform(pt2, pt2, tickTransform);\r\n            }\r\n            var tickEl = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: tickLineStyle,\r\n                z2: 2,\r\n                autoBatch: true,\r\n                silent: true\r\n            });\r\n            tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\r\n            tickEls.push(tickEl);\r\n        }\r\n        return tickEls;\r\n    }\r\n    function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var tickModel = axisModel.getModel('axisTick');\r\n        var shown = tickModel.get('show');\r\n        if (shown === 'auto' && opt.handleAutoShown) {\r\n            shown = opt.handleAutoShown('axisTick');\r\n        }\r\n        if (!shown || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var lineStyleModel = tickModel.getModel('lineStyle');\r\n        var tickEndCoord = opt.tickDirection * tickModel.get('length');\r\n        var ticksCoords = axis.getTicksCoords();\r\n        var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }), 'ticks');\r\n        for (var i = 0; i < ticksEls.length; i++) {\r\n            group.add(ticksEls[i]);\r\n        }\r\n        return ticksEls;\r\n    }\r\n    function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\r\n        var axis = axisModel.axis;\r\n        var minorTickModel = axisModel.getModel('minorTick');\r\n        if (!minorTickModel.get('show') || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var minorTicksCoords = axis.getMinorTicksCoords();\r\n        if (!minorTicksCoords.length) {\r\n            return;\r\n        }\r\n        var lineStyleModel = minorTickModel.getModel('lineStyle');\r\n        var tickEndCoord = tickDirection * minorTickModel.get('length');\r\n        var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }));\r\n        for (var i = 0; i < minorTicksCoords.length; i++) {\r\n            var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\r\n            for (var k = 0; k < minorTicksEls.length; k++) {\r\n                group.add(minorTicksEls[k]);\r\n            }\r\n        }\r\n    }\r\n    function buildAxisLabel(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\r\n        if (!show || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var labelModel = axisModel.getModel('axisLabel');\r\n        var labelMargin = labelModel.get('margin');\r\n        var labels = axis.getViewLabels();\r\n        var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$6 / 180;\r\n        var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\r\n        var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\r\n        var labelEls = [];\r\n        var silent = AxisBuilder.isLabelSilent(axisModel);\r\n        var triggerEvent = axisModel.get('triggerEvent');\r\n        each(labels, function (labelItem, index) {\r\n            var tickValue = axis.scale.type === 'ordinal'\r\n                ? axis.scale.getRawIndex(labelItem.tickValue)\r\n                : labelItem.tickValue;\r\n            var formattedLabel = labelItem.formattedLabel;\r\n            var rawLabel = labelItem.rawLabel;\r\n            var itemLabelModel = labelModel;\r\n            if (rawCategoryData && rawCategoryData[tickValue]) {\r\n                var rawCategoryItem = rawCategoryData[tickValue];\r\n                if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n                    itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\r\n                }\r\n            }\r\n            var textColor = itemLabelModel.getTextColor()\r\n                || axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n            var tickCoord = axis.dataToCoord(tickValue);\r\n            var textEl = new ZRText({\r\n                x: tickCoord,\r\n                y: opt.labelOffset + opt.labelDirection * labelMargin,\r\n                rotation: labelLayout.rotation,\r\n                silent: silent,\r\n                z2: 10,\r\n                style: createTextStyle(itemLabelModel, {\r\n                    text: formattedLabel,\r\n                    align: itemLabelModel.getShallow('align', true)\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: itemLabelModel.getShallow('verticalAlign', true)\r\n                        || itemLabelModel.getShallow('baseline', true)\r\n                        || labelLayout.textVerticalAlign,\r\n                    fill: typeof textColor === 'function'\r\n                        ? textColor(axis.type === 'category'\r\n                            ? rawLabel\r\n                            : axis.type === 'value'\r\n                                ? tickValue + ''\r\n                                : tickValue, index)\r\n                        : textColor\r\n                })\r\n            });\r\n            textEl.anid = 'label_' + tickValue;\r\n            if (triggerEvent) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisLabel';\r\n                eventData.value = rawLabel;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            labelEls.push(textEl);\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        });\r\n        return labelEls;\r\n    }\n\n    function collect(ecModel, api) {\r\n        var result = {\r\n            axesInfo: {},\r\n            seriesInvolved: false,\r\n            coordSysAxesInfo: {},\r\n            coordSysMap: {}\r\n        };\r\n        collectAxesInfo(result, ecModel, api);\r\n        result.seriesInvolved && collectSeriesInfo(result, ecModel);\r\n        return result;\r\n    }\r\n    function collectAxesInfo(result, ecModel, api) {\r\n        var globalTooltipModel = ecModel.getComponent('tooltip');\r\n        var globalAxisPointerModel = ecModel.getComponent('axisPointer');\r\n        var linksOption = globalAxisPointerModel.get('link', true) || [];\r\n        var linkGroups = [];\r\n        each(api.getCoordinateSystems(), function (coordSys) {\r\n            if (!coordSys.axisPointerEnabled) {\r\n                return;\r\n            }\r\n            var coordSysKey = makeKey(coordSys.model);\r\n            var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\r\n            result.coordSysMap[coordSysKey] = coordSys;\r\n            var coordSysModel = coordSys.model;\r\n            var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\r\n            each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));\r\n            if (coordSys.getTooltipAxes\r\n                && globalTooltipModel\r\n                && baseTooltipModel.get('show')) {\r\n                var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\r\n                var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross';\r\n                var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(['axisPointer', 'axis']));\r\n                if (triggerAxis || cross) {\r\n                    each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\r\n                }\r\n                if (cross) {\r\n                    each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\r\n                }\r\n            }\r\n            function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\r\n                var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\r\n                var axisPointerShow = axisPointerModel.get('show');\r\n                if (!axisPointerShow || (axisPointerShow === 'auto'\r\n                    && !fromTooltip\r\n                    && !isHandleTrigger(axisPointerModel))) {\r\n                    return;\r\n                }\r\n                if (triggerTooltip == null) {\r\n                    triggerTooltip = axisPointerModel.get('triggerTooltip');\r\n                }\r\n                axisPointerModel = fromTooltip\r\n                    ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip)\r\n                    : axisPointerModel;\r\n                var snap = axisPointerModel.get('snap');\r\n                var axisKey = makeKey(axis.model);\r\n                var involveSeries = triggerTooltip || snap || axis.type === 'category';\r\n                var axisInfo = result.axesInfo[axisKey] = {\r\n                    key: axisKey,\r\n                    axis: axis,\r\n                    coordSys: coordSys,\r\n                    axisPointerModel: axisPointerModel,\r\n                    triggerTooltip: triggerTooltip,\r\n                    involveSeries: involveSeries,\r\n                    snap: snap,\r\n                    useHandle: isHandleTrigger(axisPointerModel),\r\n                    seriesModels: [],\r\n                    linkGroup: null\r\n                };\r\n                axesInfoInCoordSys[axisKey] = axisInfo;\r\n                result.seriesInvolved = result.seriesInvolved || involveSeries;\r\n                var groupIndex = getLinkGroupIndex(linksOption, axis);\r\n                if (groupIndex != null) {\r\n                    var linkGroup = linkGroups[groupIndex]\r\n                        || (linkGroups[groupIndex] = { axesInfo: {} });\r\n                    linkGroup.axesInfo[axisKey] = axisInfo;\r\n                    linkGroup.mapper = linksOption[groupIndex].mapper;\r\n                    axisInfo.linkGroup = linkGroup;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\r\n        var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\r\n        var fields = [\r\n            'type', 'snap', 'lineStyle', 'shadowStyle', 'label',\r\n            'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'\r\n        ];\r\n        var volatileOption = {};\r\n        each(fields, function (field) {\r\n            volatileOption[field] = clone(tooltipAxisPointerModel.get(field));\r\n        });\r\n        volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;\r\n        if (tooltipAxisPointerModel.get('type') === 'cross') {\r\n            volatileOption.type = 'line';\r\n        }\r\n        var labelOption = volatileOption.label || (volatileOption.label = {});\r\n        labelOption.show == null && (labelOption.show = false);\r\n        if (fromTooltip === 'cross') {\r\n            var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(['label', 'show']);\r\n            labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true;\r\n            if (!triggerTooltip) {\r\n                var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\r\n                crossStyle && defaults(labelOption, crossStyle.textStyle);\r\n            }\r\n        }\r\n        return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\r\n    }\r\n    function collectSeriesInfo(result, ecModel) {\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true);\r\n            var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true);\r\n            if (!coordSys\r\n                || seriesTooltipTrigger === 'none'\r\n                || seriesTooltipTrigger === false\r\n                || seriesTooltipTrigger === 'item'\r\n                || seriesTooltipShow === false\r\n                || seriesModel.get(['axisPointer', 'show'], true) === false) {\r\n                return;\r\n            }\r\n            each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\r\n                var axis = axisInfo.axis;\r\n                if (coordSys.getAxis(axis.dim) === axis) {\r\n                    axisInfo.seriesModels.push(seriesModel);\r\n                    axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\r\n                    axisInfo.seriesDataCount += seriesModel.getData().count();\r\n                }\r\n            });\r\n        });\r\n    }\r\n    function getLinkGroupIndex(linksOption, axis) {\r\n        var axisModel = axis.model;\r\n        var dim = axis.dim;\r\n        for (var i = 0; i < linksOption.length; i++) {\r\n            var linkOption = linksOption[i] || {};\r\n            if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id)\r\n                || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex)\r\n                || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\r\n                return i;\r\n            }\r\n        }\r\n    }\r\n    function checkPropInLink(linkPropValue, axisPropValue) {\r\n        return linkPropValue === 'all'\r\n            || (isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0)\r\n            || linkPropValue === axisPropValue;\r\n    }\r\n    function fixValue(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        if (!axisInfo) {\r\n            return;\r\n        }\r\n        var axisPointerModel = axisInfo.axisPointerModel;\r\n        var scale = axisInfo.axis.scale;\r\n        var option = axisPointerModel.option;\r\n        var status = axisPointerModel.get('status');\r\n        var value = axisPointerModel.get('value');\r\n        if (value != null) {\r\n            value = scale.parse(value);\r\n        }\r\n        var useHandle = isHandleTrigger(axisPointerModel);\r\n        if (status == null) {\r\n            option.status = useHandle ? 'show' : 'hide';\r\n        }\r\n        var extent = scale.getExtent().slice();\r\n        extent[0] > extent[1] && extent.reverse();\r\n        if (value == null\r\n            || value > extent[1]) {\r\n            value = extent[1];\r\n        }\r\n        if (value < extent[0]) {\r\n            value = extent[0];\r\n        }\r\n        option.value = value;\r\n        if (useHandle) {\r\n            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\r\n        }\r\n    }\r\n    function getAxisInfo(axisModel) {\r\n        var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})\r\n            .coordSysAxesInfo;\r\n        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\r\n    }\r\n    function getAxisPointerModel(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        return axisInfo && axisInfo.axisPointerModel;\r\n    }\r\n    function isHandleTrigger(axisPointerModel) {\r\n        return !!axisPointerModel.get(['handle', 'show']);\r\n    }\r\n    function makeKey(model) {\r\n        return model.type + '||' + model.id;\r\n    }\n\n    var axisPointerClazz = {};\r\n    var AxisView = (function (_super) {\r\n        __extends(AxisView, _super);\r\n        function AxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisView.type;\r\n            return _this;\r\n        }\r\n        AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.axisPointerClass && fixValue(axisModel);\r\n            _super.prototype.render.apply(this, arguments);\r\n            this._doUpdateAxisPointerClass(axisModel, api, true);\r\n        };\r\n        AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\r\n            this._doUpdateAxisPointerClass(axisModel, api, false);\r\n        };\r\n        AxisView.prototype.remove = function (ecModel, api) {\r\n            var axisPointer = this._axisPointer;\r\n            axisPointer && axisPointer.remove(api);\r\n        };\r\n        AxisView.prototype.dispose = function (ecModel, api) {\r\n            this._disposeAxisPointer(api);\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\r\n            var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\r\n            if (!Clazz) {\r\n                return;\r\n            }\r\n            var axisPointerModel = getAxisPointerModel(axisModel);\r\n            axisPointerModel\r\n                ? (this._axisPointer || (this._axisPointer = new Clazz()))\r\n                    .render(axisModel, axisPointerModel, api, forceRender)\r\n                : this._disposeAxisPointer(api);\r\n        };\r\n        AxisView.prototype._disposeAxisPointer = function (api) {\r\n            this._axisPointer && this._axisPointer.dispose(api);\r\n            this._axisPointer = null;\r\n        };\r\n        AxisView.registerAxisPointerClass = function (type, clazz) {\r\n            if (__DEV__) {\r\n                if (axisPointerClazz[type]) {\r\n                    throw new Error('axisPointer ' + type + ' exists');\r\n                }\r\n            }\r\n            axisPointerClazz[type] = clazz;\r\n        };\r\n        AxisView.getAxisPointerClass = function (type) {\r\n            return type && axisPointerClazz[type];\r\n        };\r\n        AxisView.type = 'axis';\r\n        return AxisView;\r\n    }(ComponentView));\n\n    function layout$1(gridModel, axisModel, opt) {\r\n        opt = opt || {};\r\n        var grid = gridModel.coordinateSystem;\r\n        var axis = axisModel.axis;\r\n        var layout = {};\r\n        var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\r\n        var rawAxisPosition = axis.position;\r\n        var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\r\n        var axisDim = axis.dim;\r\n        var rect = grid.getRect();\r\n        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n        var idx = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 };\r\n        var axisOffset = axisModel.get('offset') || 0;\r\n        var posBound = axisDim === 'x'\r\n            ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset]\r\n            : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\r\n        if (otherAxisOnZeroOf) {\r\n            var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\r\n            posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\r\n        }\r\n        layout.position = [\r\n            axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0],\r\n            axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]\r\n        ];\r\n        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);\r\n        var dirMap = { top: -1, bottom: 1, left: -1, right: 1 };\r\n        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\r\n        layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\r\n        if (axisModel.get(['axisTick', 'inside'])) {\r\n            layout.tickDirection = -layout.tickDirection;\r\n        }\r\n        if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n            layout.labelDirection = -layout.labelDirection;\r\n        }\r\n        var labelRotate = axisModel.get(['axisLabel', 'rotate']);\r\n        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;\r\n        layout.z2 = 1;\r\n        return layout;\r\n    }\r\n    function isCartesian2DSeries(seriesModel) {\r\n        return seriesModel.get('coordinateSystem') === 'cartesian2d';\r\n    }\r\n    function findAxisModels(seriesModel) {\r\n        var axisModelMap = {\r\n            xAxisModel: null,\r\n            yAxisModel: null\r\n        };\r\n        each(axisModelMap, function (v, key) {\r\n            var axisType = key.replace(/Model$/, '');\r\n            var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!axisModel) {\r\n                    throw new Error(axisType + ' \"' + retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\r\n                }\r\n            }\r\n            axisModelMap[key] = axisModel;\r\n        });\r\n        return axisModelMap;\r\n    }\n\n    var inner$5 = makeInner();\r\n    function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\r\n        var axis = axisModel.axis;\r\n        if (axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var splitAreaModel = axisModel.getModel('splitArea');\r\n        var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n        var areaColors = areaStyleModel.get('color');\r\n        var gridRect = gridModel.coordinateSystem.getRect();\r\n        var ticksCoords = axis.getTicksCoords({\r\n            tickModel: splitAreaModel,\r\n            clamp: true\r\n        });\r\n        if (!ticksCoords.length) {\r\n            return;\r\n        }\r\n        var areaColorsLen = areaColors.length;\r\n        var lastSplitAreaColors = inner$5(axisView).splitAreaColors;\r\n        var newSplitAreaColors = createHashMap();\r\n        var colorIndex = 0;\r\n        if (lastSplitAreaColors) {\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\r\n                if (cIndex != null) {\r\n                    colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        var prev = axis.toGlobalCoord(ticksCoords[0].coord);\r\n        var areaStyle = areaStyleModel.getAreaStyle();\r\n        areaColors = isArray(areaColors) ? areaColors : [areaColors];\r\n        for (var i = 1; i < ticksCoords.length; i++) {\r\n            var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n            var x = void 0;\r\n            var y = void 0;\r\n            var width = void 0;\r\n            var height = void 0;\r\n            if (axis.isHorizontal()) {\r\n                x = prev;\r\n                y = gridRect.y;\r\n                width = tickCoord - x;\r\n                height = gridRect.height;\r\n                prev = x + width;\r\n            }\r\n            else {\r\n                x = gridRect.x;\r\n                y = prev;\r\n                width = gridRect.width;\r\n                height = tickCoord - y;\r\n                prev = y + height;\r\n            }\r\n            var tickValue = ticksCoords[i - 1].tickValue;\r\n            tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\r\n            axisGroup.add(new Rect({\r\n                anid: tickValue != null ? 'area_' + tickValue : null,\r\n                shape: {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                },\r\n                style: defaults({\r\n                    fill: areaColors[colorIndex]\r\n                }, areaStyle),\r\n                autoBatch: true,\r\n                silent: true\r\n            }));\r\n            colorIndex = (colorIndex + 1) % areaColorsLen;\r\n        }\r\n        inner$5(axisView).splitAreaColors = newSplitAreaColors;\r\n    }\r\n    function rectCoordAxisHandleRemove(axisView) {\r\n        inner$5(axisView).splitAreaColors = null;\r\n    }\n\n    var axisBuilderAttrs = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var selfBuilderAttrs = [\r\n        'splitArea', 'splitLine', 'minorSplitLine'\r\n    ];\r\n    var CartesianAxisView = (function (_super) {\r\n        __extends(CartesianAxisView, _super);\r\n        function CartesianAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianAxisView.type;\r\n            _this.axisPointerClass = 'CartesianAxisPointer';\r\n            return _this;\r\n        }\r\n        CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.group.removeAll();\r\n            var oldAxisGroup = this._axisGroup;\r\n            this._axisGroup = new Group();\r\n            this.group.add(this._axisGroup);\r\n            if (!axisModel.get('show')) {\r\n                return;\r\n            }\r\n            var gridModel = axisModel.getCoordSysModel();\r\n            var layout = layout$1(gridModel, axisModel);\r\n            var axisBuilder = new AxisBuilder(axisModel, extend({\r\n                handleAutoShown: function (elementType) {\r\n                    var cartesians = gridModel.coordinateSystem.getCartesians();\r\n                    for (var i = 0; i < cartesians.length; i++) {\r\n                        var otherAxisType = cartesians[i].getOtherAxis(axisModel.axis).type;\r\n                        if (otherAxisType === 'value' || otherAxisType === 'log') {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    return false;\r\n                }\r\n            }, layout));\r\n            each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\r\n            this._axisGroup.add(axisBuilder.getGroup());\r\n            each(selfBuilderAttrs, function (name) {\r\n                if (axisModel.get([name, 'show'])) {\r\n                    axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);\r\n                }\r\n            }, this);\r\n            groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n            _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n        };\r\n        CartesianAxisView.prototype.remove = function () {\r\n            rectCoordAxisHandleRemove(this);\r\n        };\r\n        CartesianAxisView.type = 'cartesianAxis';\r\n        return CartesianAxisView;\r\n    }(AxisView));\r\n    var axisElementBuilders = {\r\n        splitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            if (axis.scale.isBlank()) {\r\n                return;\r\n            }\r\n            var splitLineModel = axisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            lineColors = isArray(lineColors) ? lineColors : [lineColors];\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var lineCount = 0;\r\n            var ticksCoords = axis.getTicksCoords({\r\n                tickModel: splitLineModel\r\n            });\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n                if (isHorizontal) {\r\n                    p1[0] = tickCoord;\r\n                    p1[1] = gridRect.y;\r\n                    p2[0] = tickCoord;\r\n                    p2[1] = gridRect.y + gridRect.height;\r\n                }\r\n                else {\r\n                    p1[0] = gridRect.x;\r\n                    p1[1] = tickCoord;\r\n                    p2[0] = gridRect.x + gridRect.width;\r\n                    p2[1] = tickCoord;\r\n                }\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                var tickValue = ticksCoords[i].tickValue;\r\n                axisGroup.add(new Line({\r\n                    anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\r\n                    subPixelOptimize: true,\r\n                    autoBatch: true,\r\n                    shape: {\r\n                        x1: p1[0],\r\n                        y1: p1[1],\r\n                        x2: p2[0],\r\n                        y2: p2[1]\r\n                    },\r\n                    style: defaults({\r\n                        stroke: lineColors[colorIndex]\r\n                    }, lineStyle),\r\n                    silent: true\r\n                }));\r\n            }\r\n        },\r\n        minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            var minorSplitLineModel = axisModel.getModel('minorSplitLine');\r\n            var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var minorTicksCoords = axis.getMinorTicksCoords();\r\n            if (!minorTicksCoords.length) {\r\n                return;\r\n            }\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < minorTicksCoords.length; i++) {\r\n                for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n                    var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\r\n                    if (isHorizontal) {\r\n                        p1[0] = tickCoord;\r\n                        p1[1] = gridRect.y;\r\n                        p2[0] = tickCoord;\r\n                        p2[1] = gridRect.y + gridRect.height;\r\n                    }\r\n                    else {\r\n                        p1[0] = gridRect.x;\r\n                        p1[1] = tickCoord;\r\n                        p2[0] = gridRect.x + gridRect.width;\r\n                        p2[1] = tickCoord;\r\n                    }\r\n                    axisGroup.add(new Line({\r\n                        anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\r\n                        subPixelOptimize: true,\r\n                        autoBatch: true,\r\n                        shape: {\r\n                            x1: p1[0],\r\n                            y1: p1[1],\r\n                            x2: p2[0],\r\n                            y2: p2[1]\r\n                        },\r\n                        style: lineStyle,\r\n                        silent: true\r\n                    }));\r\n                }\r\n            }\r\n        },\r\n        splitArea: function (axisView, axisGroup, axisModel, gridModel) {\r\n            rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);\r\n        }\r\n    };\r\n    var CartesianXAxisView = (function (_super) {\r\n        __extends(CartesianXAxisView, _super);\r\n        function CartesianXAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianXAxisView.type = 'xAxis';\r\n        return CartesianXAxisView;\r\n    }(CartesianAxisView));\r\n    var CartesianYAxisView = (function (_super) {\r\n        __extends(CartesianYAxisView, _super);\r\n        function CartesianYAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianYAxisView.type = 'yAxis';\r\n        return CartesianYAxisView;\r\n    }(CartesianAxisView));\r\n    ComponentView.registerClass(CartesianXAxisView);\r\n    ComponentView.registerClass(CartesianYAxisView);\n\n    registerProcessor(PRIORITY.PROCESSOR.FILTER + 10, {\r\n        getTargetSeries: function (ecModel) {\r\n            var seriesModelMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                isCartesian2DSeries(seriesModel) && seriesModelMap.set(seriesModel.uid, seriesModel);\r\n            });\r\n            return seriesModelMap;\r\n        },\r\n        overallReset: function (ecModel, api) {\r\n            var seriesRecords = [];\r\n            var axisRecordMap = createHashMap();\r\n            prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords);\r\n            calculateFilteredExtent(axisRecordMap, seriesRecords);\r\n            shrinkAxisExtent(axisRecordMap);\r\n        }\r\n    });\r\n    function prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords) {\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (!isCartesian2DSeries(seriesModel)) {\r\n                return;\r\n            }\r\n            var axesModelMap = findAxisModels(seriesModel);\r\n            var xAxisModel = axesModelMap.xAxisModel;\r\n            var yAxisModel = axesModelMap.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xRawExtentInfo = xAxis.scale.rawExtentInfo;\r\n            var yRawExtentInfo = yAxis.scale.rawExtentInfo;\r\n            var data = seriesModel.getData();\r\n            if ((xRawExtentInfo && xRawExtentInfo.frozen)\r\n                || (yRawExtentInfo && yRawExtentInfo.frozen)) {\r\n                return;\r\n            }\r\n            seriesRecords.push({\r\n                seriesModel: seriesModel,\r\n                xAxisModel: xAxisModel,\r\n                yAxisModel: yAxisModel\r\n            });\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, xAxisModel).condExtent, data, xAxis.dim);\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, yAxisModel).condExtent, data, yAxis.dim);\r\n        });\r\n    }\r\n    function calculateFilteredExtent(axisRecordMap, seriesRecords) {\r\n        each(seriesRecords, function (seriesRecord) {\r\n            var xAxisModel = seriesRecord.xAxisModel;\r\n            var yAxisModel = seriesRecord.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xAxisRecord = prepareAxisRecord(axisRecordMap, xAxisModel);\r\n            var yAxisRecord = prepareAxisRecord(axisRecordMap, yAxisModel);\r\n            xAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(xAxis.scale, xAxisModel, xAxisRecord.condExtent);\r\n            yAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(yAxis.scale, yAxisModel, yAxisRecord.condExtent);\r\n            xAxisRecord.rawExtentResult = xAxisRecord.rawExtentInfo.calculate();\r\n            yAxisRecord.rawExtentResult = yAxisRecord.rawExtentInfo.calculate();\r\n            var data = seriesRecord.seriesModel.getData();\r\n            var condDimMap = {};\r\n            var tarDimMap = {};\r\n            var condAxis;\r\n            var tarAxisRecord;\r\n            function addCondition(axis, axisRecord) {\r\n                var condExtent = axisRecord.condExtent;\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type === 'category'\r\n                    && (condExtent[0] < rawExtentResult.min || rawExtentResult.max < condExtent[1])) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim)) {\r\n                            condDimMap[dataDim] = true;\r\n                            condAxis = axis;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function addTarget(axis, axisRecord) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type !== 'category'\r\n                    && (!rawExtentResult.minFixed || !rawExtentResult.maxFixed)) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim) && !hasOwn(tarDimMap, dataDim)) {\r\n                            tarDimMap[dataDim] = true;\r\n                            tarAxisRecord = axisRecord;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            addCondition(xAxis, xAxisRecord);\r\n            addCondition(yAxis, yAxisRecord);\r\n            addTarget(xAxis, xAxisRecord);\r\n            addTarget(yAxis, yAxisRecord);\r\n            var condDims = keys(condDimMap);\r\n            var tarDims = keys(tarDimMap);\r\n            var tarDimExtents = map(tarDims, function () {\r\n                return initExtent();\r\n            });\r\n            var condDimsLen = condDims.length;\r\n            var tarDimsLen = tarDims.length;\r\n            if (!condDimsLen || !tarDimsLen) {\r\n                return;\r\n            }\r\n            var singleCondDim = condDimsLen === 1 ? condDims[0] : null;\r\n            var singleTarDim = tarDimsLen === 1 ? tarDims[0] : null;\r\n            var dataLen = data.count();\r\n            if (singleCondDim && singleTarDim) {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    var condVal = data.get(singleCondDim, dataIdx);\r\n                    if (condAxis.scale.isInExtentRange(condVal)) {\r\n                        unionExtent(tarDimExtents[0], data.get(singleTarDim, dataIdx));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    for (var j = 0; j < condDimsLen; j++) {\r\n                        var condVal = data.get(condDims[j], dataIdx);\r\n                        if (condAxis.scale.isInExtentRange(condVal)) {\r\n                            for (var k = 0; k < tarDimsLen; k++) {\r\n                                unionExtent(tarDimExtents[k], data.get(tarDims[k], dataIdx));\r\n                            }\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            each(tarDimExtents, function (tarDimExtent, i) {\r\n                var dim = tarDims[i];\r\n                data.setApproximateExtent(tarDimExtent, dim);\r\n                var tarAxisExtent = tarAxisRecord.tarExtent = tarAxisRecord.tarExtent || initExtent();\r\n                unionExtent(tarAxisExtent, tarDimExtent[0]);\r\n                unionExtent(tarAxisExtent, tarDimExtent[1]);\r\n            });\r\n        });\r\n    }\r\n    function shrinkAxisExtent(axisRecordMap) {\r\n        axisRecordMap.each(function (axisRecord) {\r\n            var tarAxisExtent = axisRecord.tarExtent;\r\n            if (tarAxisExtent) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                var rawExtentInfo = axisRecord.rawExtentInfo;\r\n                if (!rawExtentResult.minFixed && tarAxisExtent[0] > rawExtentResult.min) {\r\n                    rawExtentInfo.modifyDataMinMax('min', tarAxisExtent[0]);\r\n                }\r\n                if (!rawExtentResult.maxFixed && tarAxisExtent[1] < rawExtentResult.max) {\r\n                    rawExtentInfo.modifyDataMinMax('max', tarAxisExtent[1]);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function prepareAxisRecord(axisRecordMap, axisModel) {\r\n        return axisRecordMap.get(axisModel.uid)\r\n            || axisRecordMap.set(axisModel.uid, { condExtent: initExtent() });\r\n    }\r\n    function initExtent() {\r\n        return [Infinity, -Infinity];\r\n    }\r\n    function unionExtent(extent, val) {\r\n        val < extent[0] && (extent[0] = val);\r\n        val > extent[1] && (extent[1] = val);\r\n    }\n\n    var GridModel = (function (_super) {\r\n        __extends(GridModel, _super);\r\n        function GridModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GridModel.type = 'grid';\r\n        GridModel.dependencies = ['xAxis', 'yAxis'];\r\n        GridModel.layoutMode = 'box';\r\n        GridModel.defaultOption = {\r\n            show: false,\r\n            zlevel: 0,\r\n            z: 0,\r\n            left: '10%',\r\n            top: 60,\r\n            right: '10%',\r\n            bottom: 70,\r\n            containLabel: false,\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderWidth: 1,\r\n            borderColor: '#ccc'\r\n        };\r\n        return GridModel;\r\n    }(ComponentModel));\n\n    var GridView = (function (_super) {\r\n        __extends(GridView, _super);\r\n        function GridView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'grid';\r\n            return _this;\r\n        }\r\n        GridView.prototype.render = function (gridModel, ecModel) {\r\n            this.group.removeAll();\r\n            if (gridModel.get('show')) {\r\n                this.group.add(new Rect({\r\n                    shape: gridModel.coordinateSystem.getRect(),\r\n                    style: defaults({\r\n                        fill: gridModel.get('backgroundColor')\r\n                    }, gridModel.getItemStyle()),\r\n                    silent: true,\r\n                    z2: -1\r\n                }));\r\n            }\r\n        };\r\n        GridView.type = 'grid';\r\n        return GridView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GridView);\r\n    ComponentModel.registerClass(GridModel);\r\n    registerPreprocessor(function (option) {\r\n        if (option.xAxis && option.yAxis && !option.grid) {\r\n            option.grid = {};\r\n        }\r\n    });\n\n    registerLayout(pointsLayout('line', true));\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\n    var Cartesian = (function () {\r\n        function Cartesian(name) {\r\n            this.type = 'cartesian';\r\n            this._dimList = [];\r\n            this._axes = {};\r\n            this.name = name || '';\r\n        }\r\n        Cartesian.prototype.getAxis = function (dim) {\r\n            return this._axes[dim];\r\n        };\r\n        Cartesian.prototype.getAxes = function () {\r\n            return map(this._dimList, function (dim) {\r\n                return this._axes[dim];\r\n            }, this);\r\n        };\r\n        Cartesian.prototype.getAxesByScale = function (scaleType) {\r\n            scaleType = scaleType.toLowerCase();\r\n            return filter(this.getAxes(), function (axis) {\r\n                return axis.scale.type === scaleType;\r\n            });\r\n        };\r\n        Cartesian.prototype.addAxis = function (axis) {\r\n            var dim = axis.dim;\r\n            this._axes[dim] = axis;\r\n            this._dimList.push(dim);\r\n        };\r\n        return Cartesian;\r\n    }());\n\n    var cartesian2DDimensions = ['x', 'y'];\r\n    function canCalculateAffineTransform(scale) {\r\n        return scale.type === 'interval' || scale.type === 'time';\r\n    }\r\n    var Cartesian2D = (function (_super) {\r\n        __extends(Cartesian2D, _super);\r\n        function Cartesian2D() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'cartesian2d';\r\n            _this.dimensions = cartesian2DDimensions;\r\n            return _this;\r\n        }\r\n        Cartesian2D.prototype.calcAffineTransform = function () {\r\n            this._transform = this._invTransform = null;\r\n            var xAxisScale = this.getAxis('x').scale;\r\n            var yAxisScale = this.getAxis('y').scale;\r\n            if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {\r\n                return;\r\n            }\r\n            var xScaleExtent = xAxisScale.getExtent();\r\n            var yScaleExtent = yAxisScale.getExtent();\r\n            var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);\r\n            var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);\r\n            var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];\r\n            var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];\r\n            if (!xScaleSpan || !yScaleSpan) {\r\n                return;\r\n            }\r\n            var scaleX = (end[0] - start[0]) / xScaleSpan;\r\n            var scaleY = (end[1] - start[1]) / yScaleSpan;\r\n            var translateX = start[0] - xScaleExtent[0] * scaleX;\r\n            var translateY = start[1] - yScaleExtent[0] * scaleY;\r\n            var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];\r\n            this._invTransform = invert([], m);\r\n        };\r\n        Cartesian2D.prototype.getBaseAxis = function () {\r\n            return this.getAxesByScale('ordinal')[0]\r\n                || this.getAxesByScale('time')[0]\r\n                || this.getAxis('x');\r\n        };\r\n        Cartesian2D.prototype.containPoint = function (point) {\r\n            var axisX = this.getAxis('x');\r\n            var axisY = this.getAxis('y');\r\n            return axisX.contain(axisX.toLocalCoord(point[0]))\r\n                && axisY.contain(axisY.toLocalCoord(point[1]));\r\n        };\r\n        Cartesian2D.prototype.containData = function (data) {\r\n            return this.getAxis('x').containData(data[0])\r\n                && this.getAxis('y').containData(data[1]);\r\n        };\r\n        Cartesian2D.prototype.dataToPoint = function (data, reserved, out) {\r\n            out = out || [];\r\n            var xVal = data[0];\r\n            var yVal = data[1];\r\n            if (this._transform\r\n                && xVal != null\r\n                && isFinite(xVal)\r\n                && yVal != null\r\n                && isFinite(yVal)) {\r\n                return applyTransform(out, data, this._transform);\r\n            }\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal));\r\n            out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.clampData = function (data, out) {\r\n            var xScale = this.getAxis('x').scale;\r\n            var yScale = this.getAxis('y').scale;\r\n            var xAxisExtent = xScale.getExtent();\r\n            var yAxisExtent = yScale.getExtent();\r\n            var x = xScale.parse(data[0]);\r\n            var y = yScale.parse(data[1]);\r\n            out = out || [];\r\n            out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\r\n            out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.pointToData = function (point, out) {\r\n            out = out || [];\r\n            if (this._invTransform) {\r\n                return applyTransform(out, point, this._invTransform);\r\n            }\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\r\n            out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.getOtherAxis = function (axis) {\r\n            return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\r\n        };\r\n        Cartesian2D.prototype.getArea = function () {\r\n            var xExtent = this.getAxis('x').getGlobalExtent();\r\n            var yExtent = this.getAxis('y').getGlobalExtent();\r\n            var x = Math.min(xExtent[0], xExtent[1]);\r\n            var y = Math.min(yExtent[0], yExtent[1]);\r\n            var width = Math.max(xExtent[0], xExtent[1]) - x;\r\n            var height = Math.max(yExtent[0], yExtent[1]) - y;\r\n            return new BoundingRect(x, y, width, height);\r\n        };\r\n        return Cartesian2D;\r\n    }(Cartesian));\n\n    var Axis2D = (function (_super) {\r\n        __extends(Axis2D, _super);\r\n        function Axis2D(dim, scale, coordExtent, axisType, position) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.index = 0;\r\n            _this.type = axisType || 'value';\r\n            _this.position = position || 'bottom';\r\n            return _this;\r\n        }\r\n        Axis2D.prototype.isHorizontal = function () {\r\n            var position = this.position;\r\n            return position === 'top' || position === 'bottom';\r\n        };\r\n        Axis2D.prototype.getGlobalExtent = function (asc) {\r\n            var ret = this.getExtent();\r\n            ret[0] = this.toGlobalCoord(ret[0]);\r\n            ret[1] = this.toGlobalCoord(ret[1]);\r\n            asc && ret[0] > ret[1] && ret.reverse();\r\n            return ret;\r\n        };\r\n        Axis2D.prototype.pointToData = function (point, clamp) {\r\n            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\r\n        };\r\n        Axis2D.prototype.setCategorySortInfo = function (info) {\r\n            if (this.type !== 'category') {\r\n                return false;\r\n            }\r\n            this.model.option.categorySortInfo = info;\r\n            this.scale.setCategorySortInfo(info);\r\n        };\r\n        return Axis2D;\r\n    }(Axis));\n\n    var Grid = (function () {\r\n        function Grid(gridModel, ecModel, api) {\r\n            this.type = 'grid';\r\n            this._coordsMap = {};\r\n            this._coordsList = [];\r\n            this._axesMap = {};\r\n            this._axesList = [];\r\n            this.axisPointerEnabled = true;\r\n            this.dimensions = cartesian2DDimensions;\r\n            this._initCartesian(gridModel, ecModel, api);\r\n            this.model = gridModel;\r\n        }\r\n        Grid.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Grid.prototype.update = function (ecModel, api) {\r\n            var axesMap = this._axesMap;\r\n            this._updateScale(ecModel, this.model);\r\n            each(axesMap.x, function (xAxis) {\r\n                niceScaleExtent(xAxis.scale, xAxis.model);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                niceScaleExtent(yAxis.scale, yAxis.model);\r\n            });\r\n            var onZeroRecords = {};\r\n            each(axesMap.x, function (xAxis) {\r\n                fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\r\n            });\r\n            this.resize(this.model, api);\r\n        };\r\n        Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) {\r\n            var boxLayoutParams = gridModel.getBoxLayoutParams();\r\n            var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel');\r\n            var gridRect = getLayoutRect(boxLayoutParams, {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            this._rect = gridRect;\r\n            var axesList = this._axesList;\r\n            adjustAxes();\r\n            if (isContainLabel) {\r\n                each(axesList, function (axis) {\r\n                    if (!axis.model.get(['axisLabel', 'inside'])) {\r\n                        var labelUnionRect = estimateLabelUnionRect(axis);\r\n                        if (labelUnionRect) {\r\n                            var dim = axis.isHorizontal() ? 'height' : 'width';\r\n                            var margin = axis.model.get(['axisLabel', 'margin']);\r\n                            gridRect[dim] -= labelUnionRect[dim] + margin;\r\n                            if (axis.position === 'top') {\r\n                                gridRect.y += labelUnionRect.height + margin;\r\n                            }\r\n                            else if (axis.position === 'left') {\r\n                                gridRect.x += labelUnionRect.width + margin;\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n                adjustAxes();\r\n            }\r\n            each(this._coordsList, function (coord) {\r\n                coord.calcAffineTransform();\r\n            });\r\n            function adjustAxes() {\r\n                each(axesList, function (axis) {\r\n                    var isHorizontal = axis.isHorizontal();\r\n                    var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\r\n                    var idx = axis.inverse ? 1 : 0;\r\n                    axis.setExtent(extent[idx], extent[1 - idx]);\r\n                    updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getAxis = function (dim, axisIndex) {\r\n            var axesMapOnDim = this._axesMap[dim];\r\n            if (axesMapOnDim != null) {\r\n                return axesMapOnDim[axisIndex || 0];\r\n            }\r\n        };\r\n        Grid.prototype.getAxes = function () {\r\n            return this._axesList.slice();\r\n        };\r\n        Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {\r\n            if (xAxisIndex != null && yAxisIndex != null) {\r\n                var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                return this._coordsMap[key];\r\n            }\r\n            if (isObject(xAxisIndex)) {\r\n                yAxisIndex = xAxisIndex.yAxisIndex;\r\n                xAxisIndex = xAxisIndex.xAxisIndex;\r\n            }\r\n            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\r\n                if (coordList[i].getAxis('x').index === xAxisIndex\r\n                    || coordList[i].getAxis('y').index === yAxisIndex) {\r\n                    return coordList[i];\r\n                }\r\n            }\r\n        };\r\n        Grid.prototype.getCartesians = function () {\r\n            return this._coordsList.slice();\r\n        };\r\n        Grid.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.dataToPoint(value)\r\n                : target.axis\r\n                    ? target.axis.toGlobalCoord(target.axis.dataToCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype.convertFromPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.pointToData(value)\r\n                : target.axis\r\n                    ? target.axis.coordToData(target.axis.toLocalCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype._findConvertTarget = function (finder) {\r\n            var seriesModel = finder.seriesModel;\r\n            var xAxisModel = finder.xAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]);\r\n            var yAxisModel = finder.yAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]);\r\n            var gridModel = finder.gridModel;\r\n            var coordsList = this._coordsList;\r\n            var cartesian;\r\n            var axis;\r\n            if (seriesModel) {\r\n                cartesian = seriesModel.coordinateSystem;\r\n                indexOf(coordsList, cartesian) < 0 && (cartesian = null);\r\n            }\r\n            else if (xAxisModel && yAxisModel) {\r\n                cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            }\r\n            else if (xAxisModel) {\r\n                axis = this.getAxis('x', xAxisModel.componentIndex);\r\n            }\r\n            else if (yAxisModel) {\r\n                axis = this.getAxis('y', yAxisModel.componentIndex);\r\n            }\r\n            else if (gridModel) {\r\n                var grid = gridModel.coordinateSystem;\r\n                if (grid === this) {\r\n                    cartesian = this._coordsList[0];\r\n                }\r\n            }\r\n            return { cartesian: cartesian, axis: axis };\r\n        };\r\n        Grid.prototype.containPoint = function (point) {\r\n            var coord = this._coordsList[0];\r\n            if (coord) {\r\n                return coord.containPoint(point);\r\n            }\r\n        };\r\n        Grid.prototype._initCartesian = function (gridModel, ecModel, api) {\r\n            var _this = this;\r\n            var grid = this;\r\n            var axisPositionUsed = {\r\n                left: false,\r\n                right: false,\r\n                top: false,\r\n                bottom: false\r\n            };\r\n            var axesMap = {\r\n                x: {},\r\n                y: {}\r\n            };\r\n            var axesCount = {\r\n                x: 0,\r\n                y: 0\r\n            };\r\n            ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\r\n            ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\r\n            if (!axesCount.x || !axesCount.y) {\r\n                this._axesMap = {};\r\n                this._axesList = [];\r\n                return;\r\n            }\r\n            this._axesMap = axesMap;\r\n            each(axesMap.x, function (xAxis, xAxisIndex) {\r\n                each(axesMap.y, function (yAxis, yAxisIndex) {\r\n                    var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                    var cartesian = new Cartesian2D(key);\r\n                    cartesian.master = _this;\r\n                    cartesian.model = gridModel;\r\n                    _this._coordsMap[key] = cartesian;\r\n                    _this._coordsList.push(cartesian);\r\n                    cartesian.addAxis(xAxis);\r\n                    cartesian.addAxis(yAxis);\r\n                });\r\n            });\r\n            function createAxisCreator(dimName) {\r\n                return function (axisModel, idx) {\r\n                    if (!isAxisUsedInTheGrid(axisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var axisPosition = axisModel.get('position');\r\n                    if (dimName === 'x') {\r\n                        if (axisPosition !== 'top' && axisPosition !== 'bottom') {\r\n                            axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (axisPosition !== 'left' && axisPosition !== 'right') {\r\n                            axisPosition = axisPositionUsed.left ? 'right' : 'left';\r\n                        }\r\n                    }\r\n                    axisPositionUsed[axisPosition] = true;\r\n                    var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\r\n                    var isCategory = axis.type === 'category';\r\n                    axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n                    axis.inverse = axisModel.get('inverse');\r\n                    axisModel.axis = axis;\r\n                    axis.model = axisModel;\r\n                    axis.grid = grid;\r\n                    axis.index = idx;\r\n                    grid._axesList.push(axis);\r\n                    axesMap[dimName][idx] = axis;\r\n                    axesCount[dimName]++;\r\n                };\r\n            }\r\n        };\r\n        Grid.prototype._updateScale = function (ecModel, gridModel) {\r\n            each(this._axesList, function (axis) {\r\n                axis.scale.setExtent(Infinity, -Infinity);\r\n                if (axis.type === 'category') {\r\n                    var categorySortInfo = axis.model.get('categorySortInfo');\r\n                    axis.scale.setCategorySortInfo(categorySortInfo);\r\n                }\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (isCartesian2DSeries(seriesModel)) {\r\n                    var axesModelMap = findAxisModels(seriesModel);\r\n                    var xAxisModel = axesModelMap.xAxisModel;\r\n                    var yAxisModel = axesModelMap.yAxisModel;\r\n                    if (!isAxisUsedInTheGrid(xAxisModel, gridModel)\r\n                        || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n                    var data = seriesModel.getData();\r\n                    var xAxis = cartesian.getAxis('x');\r\n                    var yAxis = cartesian.getAxis('y');\r\n                    if (data.type === 'list') {\r\n                        unionExtent(data, xAxis);\r\n                        unionExtent(data, yAxis);\r\n                    }\r\n                }\r\n            }, this);\r\n            function unionExtent(data, axis) {\r\n                each(getDataDimensionsOnAxis(data, axis.dim), function (dim) {\r\n                    axis.scale.unionExtentFromData(data, dim);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getTooltipAxes = function (dim) {\r\n            var baseAxes = [];\r\n            var otherAxes = [];\r\n            each(this.getCartesians(), function (cartesian) {\r\n                var baseAxis = (dim != null && dim !== 'auto')\r\n                    ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\r\n                var otherAxis = cartesian.getOtherAxis(baseAxis);\r\n                indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\r\n                indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\r\n            });\r\n            return { baseAxes: baseAxes, otherAxes: otherAxes };\r\n        };\r\n        Grid.create = function (ecModel, api) {\r\n            var grids = [];\r\n            ecModel.eachComponent('grid', function (gridModel, idx) {\r\n                var grid = new Grid(gridModel, ecModel, api);\r\n                grid.name = 'grid_' + idx;\r\n                grid.resize(gridModel, api, true);\r\n                gridModel.coordinateSystem = grid;\r\n                grids.push(grid);\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!isCartesian2DSeries(seriesModel)) {\r\n                    return;\r\n                }\r\n                var axesModelMap = findAxisModels(seriesModel);\r\n                var xAxisModel = axesModelMap.xAxisModel;\r\n                var yAxisModel = axesModelMap.yAxisModel;\r\n                var gridModel = xAxisModel.getCoordSysModel();\r\n                if (__DEV__) {\r\n                    if (!gridModel) {\r\n                        throw new Error('Grid \"' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '\" not found');\r\n                    }\r\n                    if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {\r\n                        throw new Error('xAxis and yAxis must use the same grid');\r\n                    }\r\n                }\r\n                var grid = gridModel.coordinateSystem;\r\n                seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            });\r\n            return grids;\r\n        };\r\n        Grid.dimensions = cartesian2DDimensions;\r\n        return Grid;\r\n    }());\r\n    function isAxisUsedInTheGrid(axisModel, gridModel) {\r\n        return axisModel.getCoordSysModel() === gridModel;\r\n    }\r\n    function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\r\n        axis.getAxesOnZeroOf = function () {\r\n            return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\r\n        };\r\n        var otherAxes = axesMap[otherAxisDim];\r\n        var otherAxisOnZeroOf;\r\n        var axisModel = axis.model;\r\n        var onZero = axisModel.get(['axisLine', 'onZero']);\r\n        var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']);\r\n        if (!onZero) {\r\n            return;\r\n        }\r\n        if (onZeroAxisIndex != null) {\r\n            if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\r\n                otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\r\n            }\r\n        }\r\n        else {\r\n            for (var idx in otherAxes) {\r\n                if (otherAxes.hasOwnProperty(idx)\r\n                    && canOnZeroToAxis(otherAxes[idx])\r\n                    && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\r\n                    otherAxisOnZeroOf = otherAxes[idx];\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        if (otherAxisOnZeroOf) {\r\n            onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\r\n        }\r\n        function getOnZeroRecordKey(axis) {\r\n            return axis.dim + '_' + axis.index;\r\n        }\r\n    }\r\n    function canOnZeroToAxis(axis) {\r\n        return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\r\n    }\r\n    function updateAxisTransform(axis, coordBase) {\r\n        var axisExtent = axis.getExtent();\r\n        var axisExtentSum = axisExtent[0] + axisExtent[1];\r\n        axis.toGlobalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord + coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n        axis.toLocalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord - coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n    }\r\n    CoordinateSystemManager.register('cartesian2d', Grid);\n\n    var BaseBarSeriesModel = (function (_super) {\r\n        __extends(BaseBarSeriesModel, _super);\r\n        function BaseBarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BaseBarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n        };\r\n        BaseBarSeriesModel.prototype.getMarkerPosition = function (value) {\r\n            var coordSys = this.coordinateSystem;\r\n            if (coordSys) {\r\n                var pt = coordSys.dataToPoint(coordSys.clampData(value));\r\n                var data = this.getData();\r\n                var offset = data.getLayout('offset');\r\n                var size = data.getLayout('size');\r\n                var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\r\n                pt[offsetIndex] += offset + size / 2;\r\n                return pt;\r\n            }\r\n            return [NaN, NaN];\r\n        };\r\n        BaseBarSeriesModel.type = 'series.__base_bar__';\r\n        BaseBarSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            barMinHeight: 0,\r\n            barMinAngle: 0,\r\n            large: false,\r\n            largeThreshold: 400,\r\n            progressive: 3e3,\r\n            progressiveChunkMode: 'mod'\r\n        };\r\n        return BaseBarSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(BaseBarSeriesModel);\n\n    var BarSeriesModel = (function (_super) {\r\n        __extends(BarSeriesModel, _super);\r\n        function BarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BarSeriesModel.prototype.getProgressive = function () {\r\n            return this.get('large')\r\n                ? this.get('progressive')\r\n                : false;\r\n        };\r\n        BarSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.get('progressiveThreshold');\r\n            var largeThreshold = this.get('largeThreshold');\r\n            if (largeThreshold > progressiveThreshold) {\r\n                progressiveThreshold = largeThreshold;\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.rect(data.getItemLayout(dataIndex));\r\n        };\r\n        BarSeriesModel.type = 'series.bar';\r\n        BarSeriesModel.dependencies = ['grid', 'polar'];\r\n        BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n            clip: true,\r\n            roundCap: false,\r\n            showBackground: false,\r\n            backgroundStyle: {\r\n                color: 'rgba(180, 180, 180, 0.2)',\r\n                borderColor: null,\r\n                borderWidth: 0,\r\n                borderType: 'solid',\r\n                borderRadius: 0,\r\n                shadowBlur: 0,\r\n                shadowColor: null,\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 0,\r\n                opacity: 1\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            },\r\n            realtimeSort: false\r\n        });\r\n        return BarSeriesModel;\r\n    }(BaseBarSeriesModel));\r\n    SeriesModel.registerClass(BarSeriesModel);\n\n    var SausageShape = (function () {\r\n        function SausageShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return SausageShape;\r\n    }());\r\n    var SausagePath = (function (_super) {\r\n        __extends(SausagePath, _super);\r\n        function SausagePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'sausage';\r\n            return _this;\r\n        }\r\n        SausagePath.prototype.getDefaultShape = function () {\r\n            return new SausageShape();\r\n        };\r\n        SausagePath.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r0 = Math.max(shape.r0 || 0, 0);\r\n            var r = Math.max(shape.r, 0);\r\n            var dr = (r - r0) * 0.5;\r\n            var rCenter = r0 + dr;\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitStartX = Math.cos(startAngle);\r\n            var unitStartY = Math.sin(startAngle);\r\n            var unitEndX = Math.cos(endAngle);\r\n            var unitEndY = Math.sin(endAngle);\r\n            var lessThanCircle = clockwise\r\n                ? endAngle - startAngle < Math.PI * 2\r\n                : startAngle - endAngle < Math.PI * 2;\r\n            if (lessThanCircle) {\r\n                ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\r\n                ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\r\n            }\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n            ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\r\n            ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\r\n            if (r0 !== 0) {\r\n                ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\r\n                ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return SausagePath;\r\n    }(Path));\n\n    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth'];\r\n    var BAR_BORDER_RADIUS_QUERY = ['itemStyle', 'borderRadius'];\r\n    var _eventPos = [0, 0];\r\n    var mathMax$6 = Math.max;\r\n    var mathMin$6 = Math.min;\r\n    function getClipArea(coord, data) {\r\n        var coordSysClipArea = coord.getArea && coord.getArea();\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var baseAxis = coord.getBaseAxis();\r\n            if (baseAxis.type !== 'category' || !baseAxis.onBand) {\r\n                var expandWidth = data.getLayout('bandWidth');\r\n                if (baseAxis.isHorizontal()) {\r\n                    coordSysClipArea.x -= expandWidth;\r\n                    coordSysClipArea.width += expandWidth * 2;\r\n                }\r\n                else {\r\n                    coordSysClipArea.y -= expandWidth;\r\n                    coordSysClipArea.height += expandWidth * 2;\r\n                }\r\n            }\r\n        }\r\n        return coordSysClipArea;\r\n    }\r\n    var BarView = (function (_super) {\r\n        __extends(BarView, _super);\r\n        function BarView() {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = BarView.type;\r\n            _this._isFirstFrame = true;\r\n            return _this;\r\n        }\r\n        BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            this._model = seriesModel;\r\n            this.removeOnRenderedListener(api);\r\n            this._updateDrawMode(seriesModel);\r\n            var coordinateSystemType = seriesModel.get('coordinateSystem');\r\n            if (coordinateSystemType === 'cartesian2d'\r\n                || coordinateSystemType === 'polar') {\r\n                this._isLargeDraw\r\n                    ? this._renderLarge(seriesModel, ecModel, api)\r\n                    : this._renderNormal(seriesModel, ecModel, api, payload);\r\n            }\r\n            else if (__DEV__) {\r\n                console.warn('Only cartesian2d and polar supported for bar.');\r\n            }\r\n        };\r\n        BarView.prototype.incrementalPrepareRender = function (seriesModel) {\r\n            this._clear();\r\n            this._updateDrawMode(seriesModel);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype.incrementalRender = function (params, seriesModel) {\r\n            this._incrementalRenderLarge(params, seriesModel);\r\n        };\r\n        BarView.prototype._updateDrawMode = function (seriesModel) {\r\n            var isLargeDraw = seriesModel.pipelineContext.large;\r\n            if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n                this._isLargeDraw = isLargeDraw;\r\n                this._clear();\r\n            }\r\n        };\r\n        BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) {\r\n            var _this = this;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var coord = seriesModel.coordinateSystem;\r\n            var baseAxis = coord.getBaseAxis();\r\n            var isHorizontalOrRadial;\r\n            if (coord.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n            }\r\n            else if (coord.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n            }\r\n            var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\r\n            var axis2DModel = baseAxis.model;\r\n            var realtimeSort = seriesModel.get('realtimeSort');\r\n            if (realtimeSort && data.count()) {\r\n                if (this._isFirstFrame) {\r\n                    this._initSort(data, isHorizontalOrRadial, baseAxis, api);\r\n                    this._isFirstFrame = false;\r\n                    return;\r\n                }\r\n                else {\r\n                    this._onRendered = function () {\r\n                        var orderMap = function (idx) {\r\n                            var el = data.getItemGraphicEl(idx);\r\n                            if (el) {\r\n                                var shape = el.shape;\r\n                                return (isHorizontalOrRadial ? shape.y + shape.height : shape.x + shape.width) || 0;\r\n                            }\r\n                            else {\r\n                                return 0;\r\n                            }\r\n                        };\r\n                        _this._updateSort(data, orderMap, baseAxis, api);\r\n                    };\r\n                    api.getZr().on('rendered', this._onRendered);\r\n                }\r\n            }\r\n            var needsClip = seriesModel.get('clip', true) || realtimeSort;\r\n            var coordSysClipArea = getClipArea(coord, data);\r\n            group.removeClipPath();\r\n            var roundCap = seriesModel.get('roundCap', true);\r\n            var drawBackground = seriesModel.get('showBackground', true);\r\n            var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n            var barBorderRadius = backgroundModel.get('borderRadius') || 0;\r\n            var bgEls = [];\r\n            var oldBgEls = this._backgroundEls;\r\n            var isInitSort = payload && payload.isInitSort;\r\n            var isChangeOrder = payload && payload.type === 'changeAxisOrder';\r\n            function createBackground(dataIndex) {\r\n                var bgLayout = getLayout[coord.type](data, dataIndex);\r\n                var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\r\n                bgEl.useStyle(backgroundModel.getItemStyle());\r\n                if (coord.type === 'cartesian2d') {\r\n                    bgEl.setShape('r', barBorderRadius);\r\n                }\r\n                bgEls[dataIndex] = bgEl;\r\n                return bgEl;\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (dataIndex) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var layout = getLayout[coord.type](data, dataIndex, itemModel);\r\n                if (drawBackground) {\r\n                    createBackground(dataIndex);\r\n                }\r\n                if (!data.hasValue(dataIndex)) {\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                }\r\n                var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\r\n                updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                if (isInitSort) {\r\n                    el.attr({ shape: layout });\r\n                }\r\n                else if (realtimeSort) {\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false);\r\n                }\r\n                else {\r\n                    initProps(el, { shape: layout }, seriesModel, dataIndex);\r\n                }\r\n                data.setItemGraphicEl(dataIndex, el);\r\n                group.add(el);\r\n                el.ignore = isClipped;\r\n            })\r\n                .update(function (newIndex, oldIndex) {\r\n                var itemModel = data.getItemModel(newIndex);\r\n                var layout = getLayout[coord.type](data, newIndex, itemModel);\r\n                if (drawBackground) {\r\n                    var bgEl = void 0;\r\n                    if (oldBgEls.length === 0) {\r\n                        bgEl = createBackground(oldIndex);\r\n                    }\r\n                    else {\r\n                        bgEl = oldBgEls[oldIndex];\r\n                        bgEl.useStyle(backgroundModel.getItemStyle());\r\n                        if (coord.type === 'cartesian2d') {\r\n                            bgEl.setShape('r', barBorderRadius);\r\n                        }\r\n                        bgEls[newIndex] = bgEl;\r\n                    }\r\n                    var bgLayout = getLayout[coord.type](data, newIndex);\r\n                    var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\r\n                    updateProps(bgEl, { shape: shape }, animationModel, newIndex);\r\n                }\r\n                var el = oldData.getItemGraphicEl(oldIndex);\r\n                if (!data.hasValue(newIndex)) {\r\n                    group.remove(el);\r\n                    el = null;\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                    if (isClipped) {\r\n                        group.remove(el);\r\n                    }\r\n                }\r\n                if (!el) {\r\n                    el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\r\n                }\r\n                if (!isChangeOrder) {\r\n                    updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                }\r\n                if (isInitSort) {\r\n                    el.attr({ shape: layout });\r\n                }\r\n                else if (realtimeSort) {\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder);\r\n                }\r\n                else {\r\n                    updateProps(el, {\r\n                        shape: layout\r\n                    }, seriesModel, newIndex, null);\r\n                }\r\n                data.setItemGraphicEl(newIndex, el);\r\n                el.ignore = isClipped;\r\n                group.add(el);\r\n            })\r\n                .remove(function (dataIndex) {\r\n                var el = oldData.getItemGraphicEl(dataIndex);\r\n                el && removeElementWithFadeOut(el, seriesModel, dataIndex);\r\n            })\r\n                .execute();\r\n            var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\r\n            bgGroup.removeAll();\r\n            for (var i = 0; i < bgEls.length; ++i) {\r\n                bgGroup.add(bgEls[i]);\r\n            }\r\n            group.add(bgGroup);\r\n            this._backgroundEls = bgEls;\r\n            this._data = data;\r\n        };\r\n        BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\r\n            this._clear();\r\n            createLarge(seriesModel, this.group);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n            this._removeBackground();\r\n            createLarge(seriesModel, this.group, true);\r\n        };\r\n        BarView.prototype._updateLargeClip = function (seriesModel) {\r\n            var clipPath = seriesModel.get('clip', true)\r\n                ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n                : null;\r\n            if (clipPath) {\r\n                this.group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                this.group.removeClipPath();\r\n            }\r\n        };\r\n        BarView.prototype._dataSort = function (data, idxMap) {\r\n            var info = [];\r\n            data.each(function (idx) {\r\n                info.push({\r\n                    mappedValue: idxMap(idx),\r\n                    ordinalNumber: idx,\r\n                    beforeSortIndex: null\r\n                });\r\n            });\r\n            info.sort(function (a, b) {\r\n                return b.mappedValue - a.mappedValue;\r\n            });\r\n            for (var i = 0; i < info.length; ++i) {\r\n                info[info[i].ordinalNumber].beforeSortIndex = i;\r\n            }\r\n            return map(info, function (item) {\r\n                return {\r\n                    ordinalNumber: item.ordinalNumber,\r\n                    beforeSortIndex: item.beforeSortIndex\r\n                };\r\n            });\r\n        };\r\n        BarView.prototype._isDataOrderChanged = function (data, orderMap, oldOrder) {\r\n            var oldCount = oldOrder ? oldOrder.length : 0;\r\n            if (oldCount !== data.count()) {\r\n                return true;\r\n            }\r\n            var lastValue = Number.MAX_VALUE;\r\n            for (var i = 0; i < oldOrder.length; ++i) {\r\n                var value = orderMap(oldOrder[i].ordinalNumber);\r\n                if (value > lastValue) {\r\n                    return true;\r\n                }\r\n                lastValue = value;\r\n            }\r\n            return false;\r\n        };\r\n        BarView.prototype._updateSort = function (data, orderMap, baseAxis, api) {\r\n            var oldOrder = baseAxis.scale.getCategorySortInfo();\r\n            var isOrderChanged = this._isDataOrderChanged(data, orderMap, oldOrder);\r\n            if (isOrderChanged) {\r\n                var newOrder = this._dataSort(data, orderMap);\r\n                var extent = baseAxis.scale.getExtent();\r\n                for (var i = extent[0]; i < extent[1]; ++i) {\r\n                    if (!oldOrder[i] || oldOrder[i].ordinalNumber !== newOrder[i].ordinalNumber) {\r\n                        this.removeOnRenderedListener(api);\r\n                        var action = {\r\n                            type: 'changeAxisOrder',\r\n                            componentType: baseAxis.dim + 'Axis',\r\n                            axisId: baseAxis.index,\r\n                            sortInfo: newOrder\r\n                        };\r\n                        api.dispatchAction(action);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        BarView.prototype._initSort = function (data, isHorizontal, baseAxis, api) {\r\n            var action = {\r\n                type: 'changeAxisOrder',\r\n                componentType: baseAxis.dim + 'Axis',\r\n                isInitSort: true,\r\n                axisId: baseAxis.index,\r\n                sortInfo: this._dataSort(data, function (idx) { return parseFloat(data.get(isHorizontal ? 'y' : 'x', idx)) || 0; })\r\n            };\r\n            api.dispatchAction(action);\r\n        };\r\n        BarView.prototype.remove = function (ecModel, api) {\r\n            this._clear(this._model);\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.dispose = function (ecModel, api) {\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.removeOnRenderedListener = function (api) {\r\n            if (this._onRendered) {\r\n                api.getZr().off('rendered', this._onRendered);\r\n                this._onRendered = null;\r\n            }\r\n        };\r\n        BarView.prototype._clear = function (model) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\r\n                this._removeBackground();\r\n                this._backgroundEls = [];\r\n                data.eachItemGraphicEl(function (el) {\r\n                    removeElementWithFadeOut(el, model, getECData(el).dataIndex);\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n            this._data = null;\r\n            this._isFirstFrame = true;\r\n        };\r\n        BarView.prototype._removeBackground = function () {\r\n            this.group.remove(this._backgroundGroup);\r\n            this._backgroundGroup = null;\r\n        };\r\n        BarView.type = 'bar';\r\n        return BarView;\r\n    }(ChartView));\r\n    var clip = {\r\n        cartesian2d: function (coordSysBoundingRect, layout) {\r\n            var signWidth = layout.width < 0 ? -1 : 1;\r\n            var signHeight = layout.height < 0 ? -1 : 1;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            var x = mathMax$6(layout.x, coordSysBoundingRect.x);\r\n            var x2 = mathMin$6(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\r\n            var y = mathMax$6(layout.y, coordSysBoundingRect.y);\r\n            var y2 = mathMin$6(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\r\n            layout.x = x;\r\n            layout.y = y;\r\n            layout.width = x2 - x;\r\n            layout.height = y2 - y;\r\n            var clipped = layout.width < 0 || layout.height < 0;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            return clipped;\r\n        },\r\n        polar: function (coordSysClipArea, layout) {\r\n            var signR = layout.r0 <= layout.r ? 1 : -1;\r\n            if (signR < 0) {\r\n                var tmp = layout.r;\r\n                layout.r = layout.r0;\r\n                layout.r0 = tmp;\r\n            }\r\n            var r = mathMin$6(layout.r, coordSysClipArea.r);\r\n            var r0 = mathMax$6(layout.r0, coordSysClipArea.r0);\r\n            layout.r = r;\r\n            layout.r0 = r0;\r\n            var clipped = r - r0 < 0;\r\n            if (signR < 0) {\r\n                var tmp = layout.r;\r\n                layout.r = layout.r0;\r\n                layout.r0 = tmp;\r\n            }\r\n            return clipped;\r\n        }\r\n    };\r\n    var elementCreator = {\r\n        cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\r\n            var rect = new Rect({\r\n                shape: extend({}, layout),\r\n                z2: 1\r\n            });\r\n            rect.__dataIndex = newIndex;\r\n            rect.name = 'item';\r\n            if (animationModel) {\r\n                var rectShape = rect.shape;\r\n                var animateProperty = isHorizontal ? 'height' : 'width';\r\n                rectShape[animateProperty] = 0;\r\n            }\r\n            return rect;\r\n        },\r\n        polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\r\n            var clockwise = layout.startAngle < layout.endAngle;\r\n            var ShapeClass = (!isRadial && roundCap) ? SausagePath : Sector;\r\n            var sector = new ShapeClass({\r\n                shape: defaults({ clockwise: clockwise }, layout),\r\n                z2: 1\r\n            });\r\n            sector.name = 'item';\r\n            if (animationModel) {\r\n                var sectorShape = sector.shape;\r\n                var animateProperty = isRadial ? 'r' : 'endAngle';\r\n                var animateTarget = {};\r\n                sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\r\n                animateTarget[animateProperty] = layout[animateProperty];\r\n                (isUpdate ? updateProps : initProps)(sector, {\r\n                    shape: animateTarget\r\n                }, animationModel);\r\n            }\r\n            return sector;\r\n        }\r\n    };\r\n    function updateRealtimeAnimation(seriesModel, axisModel, animationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) {\r\n        if (animationModel || axisModel) {\r\n            var seriesTarget = void 0;\r\n            var axisTarget = void 0;\r\n            if (isHorizontal) {\r\n                axisTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n                seriesTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n            }\r\n            else {\r\n                axisTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n                seriesTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n            }\r\n            if (!isChangeOrder) {\r\n                (isUpdate ? updateProps : initProps)(el, {\r\n                    shape: seriesTarget\r\n                }, seriesModel, newIndex, null);\r\n            }\r\n            (isUpdate ? updateProps : initProps)(el, {\r\n                shape: axisTarget\r\n            }, axisModel, newIndex);\r\n        }\r\n    }\r\n    var getLayout = {\r\n        cartesian2d: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0;\r\n            var signX = layout.width > 0 ? 1 : -1;\r\n            var signY = layout.height > 0 ? 1 : -1;\r\n            return {\r\n                x: layout.x + signX * fixedLineWidth / 2,\r\n                y: layout.y + signY * fixedLineWidth / 2,\r\n                width: layout.width - signX * fixedLineWidth,\r\n                height: layout.height - signY * fixedLineWidth\r\n            };\r\n        },\r\n        polar: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            return {\r\n                cx: layout.cx,\r\n                cy: layout.cy,\r\n                r0: layout.r0,\r\n                r: layout.r,\r\n                startAngle: layout.startAngle,\r\n                endAngle: layout.endAngle\r\n            };\r\n        }\r\n    };\r\n    function isZeroOnPolar(layout) {\r\n        return layout.startAngle != null\r\n            && layout.endAngle != null\r\n            && layout.startAngle === layout.endAngle;\r\n    }\r\n    function updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\r\n        var style = data.getItemVisual(dataIndex, 'style');\r\n        if (!isPolar) {\r\n            el.setShape('r', itemModel.get(BAR_BORDER_RADIUS_QUERY) || 0);\r\n        }\r\n        el.useStyle(style);\r\n        var cursorStyle = itemModel.getShallow('cursor');\r\n        cursorStyle && el.attr('cursor', cursorStyle);\r\n        if (!isPolar) {\r\n            var labelPositionOutside = isHorizontal\r\n                ? (layout.height > 0 ? 'bottom' : 'top')\r\n                : (layout.width > 0 ? 'left' : 'right');\r\n            var labelStatesModels = getLabelStatesModels(itemModel);\r\n            setLabelStyle(el, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: dataIndex,\r\n                defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\r\n                inheritColor: style.fill,\r\n                defaultOpacity: style.opacity,\r\n                defaultOutsidePosition: labelPositionOutside\r\n            });\r\n            var label = el.getTextContent();\r\n            setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) { return getDefaultInterpolatedLabel(data, value); });\r\n        }\r\n        var emphasisModel = itemModel.getModel(['emphasis']);\r\n        enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        setStatesStylesFromModel(el, itemModel);\r\n        if (isZeroOnPolar(layout)) {\r\n            el.style.fill = 'none';\r\n            el.style.stroke = 'none';\r\n            each(el.states, function (state) {\r\n                if (state.style) {\r\n                    state.style.fill = state.style.stroke = 'none';\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function getLineWidth(itemModel, rawLayout) {\r\n        var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\r\n        var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\r\n        var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\r\n        return Math.min(lineWidth, width, height);\r\n    }\r\n    var LagePathShape = (function () {\r\n        function LagePathShape() {\r\n        }\r\n        return LagePathShape;\r\n    }());\r\n    var LargePath = (function (_super) {\r\n        __extends(LargePath, _super);\r\n        function LargePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'largeBar';\r\n            return _this;\r\n        }\r\n        LargePath.prototype.getDefaultShape = function () {\r\n            return new LagePathShape();\r\n        };\r\n        LargePath.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var startPoint = this.__startPoint;\r\n            var baseDimIdx = this.__baseDimIdx;\r\n            for (var i = 0; i < points.length; i += 2) {\r\n                startPoint[baseDimIdx] = points[i + baseDimIdx];\r\n                ctx.moveTo(startPoint[0], startPoint[1]);\r\n                ctx.lineTo(points[i], points[i + 1]);\r\n            }\r\n        };\r\n        return LargePath;\r\n    }(Path));\r\n    function createLarge(seriesModel, group, incremental) {\r\n        var data = seriesModel.getData();\r\n        var startPoint = [];\r\n        var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\r\n        startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\r\n        var largeDataIndices = data.getLayout('largeDataIndices');\r\n        var barWidth = data.getLayout('barWidth');\r\n        var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n        var drawBackground = seriesModel.get('showBackground', true);\r\n        if (drawBackground) {\r\n            var points = data.getLayout('largeBackgroundPoints');\r\n            var backgroundStartPoint = [];\r\n            backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\r\n            var bgEl = new LargePath({\r\n                shape: { points: points },\r\n                incremental: !!incremental,\r\n                silent: true,\r\n                z2: 0\r\n            });\r\n            bgEl.__startPoint = backgroundStartPoint;\r\n            bgEl.__baseDimIdx = baseDimIdx;\r\n            bgEl.__largeDataIndices = largeDataIndices;\r\n            bgEl.__barWidth = barWidth;\r\n            setLargeBackgroundStyle(bgEl, backgroundModel, data);\r\n            group.add(bgEl);\r\n        }\r\n        var el = new LargePath({\r\n            shape: { points: data.getLayout('largePoints') },\r\n            incremental: !!incremental\r\n        });\r\n        el.__startPoint = startPoint;\r\n        el.__baseDimIdx = baseDimIdx;\r\n        el.__largeDataIndices = largeDataIndices;\r\n        el.__barWidth = barWidth;\r\n        group.add(el);\r\n        setLargeStyle(el, seriesModel, data);\r\n        getECData(el).seriesIndex = seriesModel.seriesIndex;\r\n        if (!seriesModel.get('silent')) {\r\n            el.on('mousedown', largePathUpdateDataIndex);\r\n            el.on('mousemove', largePathUpdateDataIndex);\r\n        }\r\n    }\r\n    var largePathUpdateDataIndex = throttle(function (event) {\r\n        var largePath = this;\r\n        var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\r\n        getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\r\n    }, 30, false);\r\n    function largePathFindDataIndex(largePath, x, y) {\r\n        var baseDimIdx = largePath.__baseDimIdx;\r\n        var valueDimIdx = 1 - baseDimIdx;\r\n        var points = largePath.shape.points;\r\n        var largeDataIndices = largePath.__largeDataIndices;\r\n        var barWidthHalf = Math.abs(largePath.__barWidth / 2);\r\n        var startValueVal = largePath.__startPoint[valueDimIdx];\r\n        _eventPos[0] = x;\r\n        _eventPos[1] = y;\r\n        var pointerBaseVal = _eventPos[baseDimIdx];\r\n        var pointerValueVal = _eventPos[1 - baseDimIdx];\r\n        var baseLowerBound = pointerBaseVal - barWidthHalf;\r\n        var baseUpperBound = pointerBaseVal + barWidthHalf;\r\n        for (var i = 0, len = points.length / 2; i < len; i++) {\r\n            var ii = i * 2;\r\n            var barBaseVal = points[ii + baseDimIdx];\r\n            var barValueVal = points[ii + valueDimIdx];\r\n            if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound\r\n                && (startValueVal <= barValueVal\r\n                    ? (pointerValueVal >= startValueVal && pointerValueVal <= barValueVal)\r\n                    : (pointerValueVal >= barValueVal && pointerValueVal <= startValueVal))) {\r\n                return largeDataIndices[i];\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function setLargeStyle(el, seriesModel, data) {\r\n        var globalStyle = data.getVisual('style');\r\n        el.useStyle(extend({}, globalStyle));\r\n        el.style.fill = null;\r\n        el.style.stroke = globalStyle.fill;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function setLargeBackgroundStyle(el, backgroundModel, data) {\r\n        var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\r\n        var itemStyle = backgroundModel.getItemStyle();\r\n        el.useStyle(itemStyle);\r\n        el.style.fill = null;\r\n        el.style.stroke = borderColor;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function createBackgroundShape(isHorizontalOrRadial, layout, coord) {\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var rectShape = layout;\r\n            var coordLayout = coord.getArea();\r\n            return {\r\n                x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\r\n                y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\r\n                width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\r\n                height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\r\n            };\r\n        }\r\n        else {\r\n            var coordLayout = coord.getArea();\r\n            var sectorShape = layout;\r\n            return {\r\n                cx: coordLayout.cx,\r\n                cy: coordLayout.cy,\r\n                r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\r\n                r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\r\n                startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\r\n                endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\r\n            };\r\n        }\r\n    }\r\n    function createBackgroundEl(coord, isHorizontalOrRadial, layout) {\r\n        var ElementClz = coord.type === 'polar' ? Sector : Rect;\r\n        return new ElementClz({\r\n            shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\r\n            silent: true,\r\n            z2: 0\r\n        });\r\n    }\r\n    ChartView.registerClass(BarView);\n\n    registerAction({\r\n        type: 'changeAxisOrder',\r\n        event: 'changeAxisOrder',\r\n        update: 'update'\r\n    }, function (payload, ecModel) {\r\n        var componentType = payload.componentType || 'series';\r\n        ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n            if (payload.sortInfo) {\r\n                componentModel.axis.setCategorySortInfo(payload.sortInfo);\r\n            }\r\n        });\r\n    });\n\n    registerLayout(PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar'));\r\n    registerLayout(PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\r\n    registerVisual({\r\n        seriesType: 'bar',\r\n        reset: function (seriesModel) {\r\n            seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n        }\r\n    });\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n\n    function createListSimply(seriesModel, opt, nameList) {\r\n        opt = isArray(opt) && { coordDimensions: opt } || extend({}, opt);\r\n        var source = seriesModel.getSource();\r\n        var dimensionsInfo = createDimensions(source, opt);\r\n        var list = new List(dimensionsInfo, seriesModel);\r\n        list.initData(source, nameList);\r\n        return list;\r\n    }\n\n    var LegendVisualProvider = (function () {\r\n        function LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\r\n            this._getDataWithEncodedVisual = getDataWithEncodedVisual;\r\n            this._getRawData = getRawData;\r\n        }\r\n        LegendVisualProvider.prototype.getAllNames = function () {\r\n            var rawData = this._getRawData();\r\n            return rawData.mapArray(rawData.getName);\r\n        };\r\n        LegendVisualProvider.prototype.containName = function (name) {\r\n            var rawData = this._getRawData();\r\n            return rawData.indexOfName(name) >= 0;\r\n        };\r\n        LegendVisualProvider.prototype.indexOfName = function (name) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.indexOfName(name);\r\n        };\r\n        LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.getItemVisual(dataIndex, key);\r\n        };\r\n        return LegendVisualProvider;\r\n    }());\n\n    var PieSeriesModel = (function (_super) {\r\n        __extends(PieSeriesModel, _super);\r\n        function PieSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        PieSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n            this._defaultLabelLine(option);\r\n        };\r\n        PieSeriesModel.prototype.mergeOption = function () {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n        };\r\n        PieSeriesModel.prototype.getInitialData = function () {\r\n            return createListSimply(this, {\r\n                coordDimensions: ['value'],\r\n                encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n            });\r\n        };\r\n        PieSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var data = this.getData();\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n            var valueList = [];\r\n            data.each(data.mapDimension('value'), function (value) {\r\n                valueList.push(value);\r\n            });\r\n            params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\r\n            params.$vars.push('percent');\r\n            return params;\r\n        };\r\n        PieSeriesModel.prototype._defaultLabelLine = function (option) {\r\n            defaultEmphasis(option, 'labelLine', ['show']);\r\n            var labelLineNormalOpt = option.labelLine;\r\n            var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n            labelLineNormalOpt.show = labelLineNormalOpt.show\r\n                && option.label.show;\r\n            labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n                && option.emphasis.label.show;\r\n        };\r\n        PieSeriesModel.type = 'series.pie';\r\n        PieSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            center: ['50%', '50%'],\r\n            radius: [0, '75%'],\r\n            clockwise: true,\r\n            startAngle: 90,\r\n            minAngle: 0,\r\n            minShowLabelAngle: 0,\r\n            selectedOffset: 10,\r\n            percentPrecision: 2,\r\n            stillShowZeroSum: true,\r\n            left: 0,\r\n            top: 0,\r\n            right: 0,\r\n            bottom: 0,\r\n            width: null,\r\n            height: null,\r\n            label: {\r\n                rotate: 0,\r\n                show: true,\r\n                overflow: 'truncate',\r\n                position: 'outer',\r\n                alignTo: 'none',\r\n                edgeDistance: '25%',\r\n                bleedMargin: 10,\r\n                distanceToLabelLine: 5\r\n            },\r\n            labelLine: {\r\n                show: true,\r\n                length: 15,\r\n                length2: 15,\r\n                smooth: false,\r\n                minTurnAngle: 90,\r\n                maxSurfaceAngle: 90,\r\n                lineStyle: {\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 1\r\n            },\r\n            labelLayout: {\r\n                hideOverlap: true\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                scaleSize: 5\r\n            },\r\n            avoidLabelOverlap: true,\r\n            animationType: 'expansion',\r\n            animationDuration: 1000,\r\n            animationTypeUpdate: 'transition',\r\n            animationEasingUpdate: 'cubicInOut',\r\n            animationDurationUpdate: 500,\r\n            animationEasing: 'cubicInOut'\r\n        };\r\n        return PieSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(PieSeriesModel);\n\n    var RADIAN = Math.PI / 180;\r\n    function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\r\n        if (list.length < 2) {\r\n            return;\r\n        }\r\n        function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\r\n            var rB = semi.rB;\r\n            var rB2 = rB * rB;\r\n            for (var i = 0; i < semi.list.length; i++) {\r\n                var item = semi.list[i];\r\n                var dy = Math.abs(item.label.y - cy);\r\n                var rA = r + item.len;\r\n                var rA2 = rA * rA;\r\n                var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\r\n                item.label.x = cx + (dx + item.len2) * dir;\r\n            }\r\n        }\r\n        function recalculateX(items) {\r\n            var topSemi = { list: [], maxY: 0 };\r\n            var bottomSemi = { list: [], maxY: 0 };\r\n            for (var i = 0; i < items.length; i++) {\r\n                if (items[i].labelAlignTo !== 'none') {\r\n                    continue;\r\n                }\r\n                var item = items[i];\r\n                var semi = item.label.y > cy ? bottomSemi : topSemi;\r\n                var dy = Math.abs(item.label.y - cy);\r\n                if (dy > semi.maxY) {\r\n                    var dx = item.label.x - cx - item.len2 * dir;\r\n                    var rA = r + item.len;\r\n                    var rB = dx < rA\r\n                        ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA))\r\n                        : rA;\r\n                    semi.rB = rB;\r\n                    semi.maxY = dy;\r\n                }\r\n                semi.list.push(item);\r\n            }\r\n            recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\r\n            recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\r\n        }\r\n        var len = list.length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\r\n                var dx = list[i].label.x - farthestX;\r\n                list[i].linePoints[1][0] += dx;\r\n                list[i].label.x = farthestX;\r\n            }\r\n        }\r\n        if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\r\n            recalculateX(list);\r\n        }\r\n    }\r\n    function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\r\n        var leftList = [];\r\n        var rightList = [];\r\n        var leftmostX = Number.MAX_VALUE;\r\n        var rightmostX = -Number.MAX_VALUE;\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var label = labelLayoutList[i].label;\r\n            if (isPositionCenter(labelLayoutList[i])) {\r\n                continue;\r\n            }\r\n            if (label.x < cx) {\r\n                leftmostX = Math.min(leftmostX, label.x);\r\n                leftList.push(labelLayoutList[i]);\r\n            }\r\n            else {\r\n                rightmostX = Math.max(rightmostX, label.x);\r\n                rightList.push(labelLayoutList[i]);\r\n            }\r\n        }\r\n        adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\r\n        adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            if (isPositionCenter(layout)) {\r\n                continue;\r\n            }\r\n            var linePoints = layout.linePoints;\r\n            if (linePoints) {\r\n                var isAlignToEdge = layout.labelAlignTo === 'edge';\r\n                var realTextWidth = layout.rect.width;\r\n                var targetTextWidth = void 0;\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = linePoints[2][0] - layout.labelDistance\r\n                            - viewLeft - layout.edgeDistance;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - layout.edgeDistance\r\n                            - linePoints[2][0] - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = label.x - viewLeft - layout.bleedMargin;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\r\n                    }\r\n                }\r\n                if (targetTextWidth < layout.rect.width) {\r\n                    layout.label.style.width = targetTextWidth;\r\n                    if (layout.labelAlignTo === 'edge') {\r\n                        realTextWidth = targetTextWidth;\r\n                    }\r\n                }\r\n                var dist = linePoints[1][0] - linePoints[2][0];\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance\r\n                            - realTextWidth - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = label.x + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = label.x - layout.labelDistance;\r\n                    }\r\n                    linePoints[1][0] = linePoints[2][0] + dist;\r\n                }\r\n                linePoints[1][1] = linePoints[2][1] = label.y;\r\n            }\r\n        }\r\n    }\r\n    function isPositionCenter(sectorShape) {\r\n        return sectorShape.position === 'center';\r\n    }\r\n    function pieLabelLayout(seriesModel) {\r\n        var data = seriesModel.getData();\r\n        var labelLayoutList = [];\r\n        var cx;\r\n        var cy;\r\n        var hasLabelRotate = false;\r\n        var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\r\n        var viewRect = data.getLayout('viewRect');\r\n        var r = data.getLayout('r');\r\n        var viewWidth = viewRect.width;\r\n        var viewLeft = viewRect.x;\r\n        var viewTop = viewRect.y;\r\n        var viewHeight = viewRect.height;\r\n        function setNotShow(el) {\r\n            el.ignore = true;\r\n        }\r\n        function isLabelShown(label) {\r\n            if (!label.ignore) {\r\n                return true;\r\n            }\r\n            for (var key in label.states) {\r\n                if (label.states[key].ignore === false) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n        data.each(function (idx) {\r\n            var sector = data.getItemGraphicEl(idx);\r\n            var sectorShape = sector.shape;\r\n            var label = sector.getTextContent();\r\n            var labelLine = sector.getTextGuideLine();\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelModel = itemModel.getModel('label');\r\n            var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\r\n            var labelDistance = labelModel.get('distanceToLabelLine');\r\n            var labelAlignTo = labelModel.get('alignTo');\r\n            var edgeDistance = parsePercent$2(labelModel.get('edgeDistance'), viewWidth);\r\n            var bleedMargin = labelModel.get('bleedMargin');\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var labelLineLen = labelLineModel.get('length');\r\n            labelLineLen = parsePercent$2(labelLineLen, viewWidth);\r\n            var labelLineLen2 = labelLineModel.get('length2');\r\n            labelLineLen2 = parsePercent$2(labelLineLen2, viewWidth);\r\n            if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\r\n                each(label.states, setNotShow);\r\n                label.ignore = true;\r\n                return;\r\n            }\r\n            if (!isLabelShown(label)) {\r\n                return;\r\n            }\r\n            var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\r\n            var nx = Math.cos(midAngle);\r\n            var ny = Math.sin(midAngle);\r\n            var textX;\r\n            var textY;\r\n            var linePoints;\r\n            var textAlign;\r\n            cx = sectorShape.cx;\r\n            cy = sectorShape.cy;\r\n            var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\r\n            if (labelPosition === 'center') {\r\n                textX = sectorShape.cx;\r\n                textY = sectorShape.cy;\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\r\n                var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\r\n                textX = x1 + nx * 3;\r\n                textY = y1 + ny * 3;\r\n                if (!isLabelInside) {\r\n                    var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\r\n                    var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\r\n                    var x3 = x2 + ((nx < 0 ? -1 : 1) * labelLineLen2);\r\n                    var y3 = y2;\r\n                    if (labelAlignTo === 'edge') {\r\n                        textX = nx < 0\r\n                            ? viewLeft + edgeDistance\r\n                            : viewLeft + viewWidth - edgeDistance;\r\n                    }\r\n                    else {\r\n                        textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\r\n                    }\r\n                    textY = y3;\r\n                    linePoints = [[x1, y1], [x2, y2], [x3, y3]];\r\n                }\r\n                textAlign = isLabelInside\r\n                    ? 'center'\r\n                    : (labelAlignTo === 'edge'\r\n                        ? (nx > 0 ? 'right' : 'left')\r\n                        : (nx > 0 ? 'left' : 'right'));\r\n            }\r\n            var labelRotate;\r\n            var rotate = labelModel.get('rotate');\r\n            if (typeof rotate === 'number') {\r\n                labelRotate = rotate * (Math.PI / 180);\r\n            }\r\n            else {\r\n                labelRotate = rotate\r\n                    ? (nx < 0 ? -midAngle + Math.PI : -midAngle)\r\n                    : 0;\r\n            }\r\n            hasLabelRotate = !!labelRotate;\r\n            label.x = textX;\r\n            label.y = textY;\r\n            label.rotation = labelRotate;\r\n            label.setStyle({\r\n                verticalAlign: 'middle'\r\n            });\r\n            if (!isLabelInside) {\r\n                var textRect = label.getBoundingRect().clone();\r\n                textRect.applyTransform(label.getComputedTransform());\r\n                var margin = (label.style.margin || 0) + 2.1;\r\n                textRect.y -= margin / 2;\r\n                textRect.height += margin;\r\n                labelLayoutList.push({\r\n                    label: label,\r\n                    labelLine: labelLine,\r\n                    position: labelPosition,\r\n                    len: labelLineLen,\r\n                    len2: labelLineLen2,\r\n                    minTurnAngle: labelLineModel.get('minTurnAngle'),\r\n                    maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\r\n                    surfaceNormal: new Point(nx, ny),\r\n                    linePoints: linePoints,\r\n                    textAlign: textAlign,\r\n                    labelDistance: labelDistance,\r\n                    labelAlignTo: labelAlignTo,\r\n                    edgeDistance: edgeDistance,\r\n                    bleedMargin: bleedMargin,\r\n                    rect: textRect\r\n                });\r\n            }\r\n            else {\r\n                label.setStyle({\r\n                    align: textAlign\r\n                });\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            sector.setTextConfig({\r\n                inside: isLabelInside\r\n            });\r\n        });\r\n        if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\r\n            avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\r\n        }\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            var labelLine = layout.labelLine;\r\n            var notShowLabel = isNaN(label.x) || isNaN(label.y);\r\n            if (label) {\r\n                label.setStyle({\r\n                    align: layout.textAlign\r\n                });\r\n                if (notShowLabel) {\r\n                    each(label.states, setNotShow);\r\n                    label.ignore = true;\r\n                }\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            if (labelLine) {\r\n                var linePoints = layout.linePoints;\r\n                if (notShowLabel || !linePoints) {\r\n                    each(labelLine.states, setNotShow);\r\n                    labelLine.ignore = true;\r\n                }\r\n                else {\r\n                    limitTurnAngle(linePoints, layout.minTurnAngle);\r\n                    limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\r\n                    labelLine.setShape({ points: linePoints });\r\n                    label.__hostTarget.textGuideLineConfig = {\r\n                        anchor: new Point(linePoints[0][0], linePoints[0][1])\r\n                    };\r\n                }\r\n            }\r\n        }\r\n    }\n\n    function getSectorCornerRadius(model, shape) {\r\n        var cornerRadius = model.get('borderRadius');\r\n        if (cornerRadius == null) {\r\n            return null;\r\n        }\r\n        if (!isArray(cornerRadius)) {\r\n            cornerRadius = [cornerRadius, cornerRadius];\r\n        }\r\n        return {\r\n            innerCornerRadius: parsePercent(cornerRadius[0], shape.r0),\r\n            cornerRadius: parsePercent(cornerRadius[1], shape.r)\r\n        };\r\n    }\n\n    var PiePiece = (function (_super) {\r\n        __extends(PiePiece, _super);\r\n        function PiePiece(data, idx, startAngle) {\r\n            var _this = _super.call(this) || this;\r\n            _this.z2 = 2;\r\n            var polyline = new Polyline();\r\n            var text = new ZRText();\r\n            _this.setTextGuideLine(polyline);\r\n            _this.setTextContent(text);\r\n            _this.updateData(data, idx, startAngle, true);\r\n            return _this;\r\n        }\r\n        PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\r\n            var sector = this;\r\n            var seriesModel = data.hostModel;\r\n            var itemModel = data.getItemModel(idx);\r\n            var emphasisModel = itemModel.getModel('emphasis');\r\n            var layout = data.getItemLayout(idx);\r\n            var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout) || {}, layout);\r\n            if (firstCreate) {\r\n                sector.setShape(sectorShape);\r\n                var animationType = seriesModel.getShallow('animationType');\r\n                if (animationType === 'scale') {\r\n                    sector.shape.r = layout.r0;\r\n                    initProps(sector, {\r\n                        shape: {\r\n                            r: layout.r\r\n                        }\r\n                    }, seriesModel, idx);\r\n                }\r\n                else {\r\n                    if (startAngle != null) {\r\n                        sector.setShape({ startAngle: startAngle, endAngle: startAngle });\r\n                        initProps(sector, {\r\n                            shape: {\r\n                                startAngle: layout.startAngle,\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                    else {\r\n                        sector.shape.endAngle = layout.startAngle;\r\n                        updateProps(sector, {\r\n                            shape: {\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                updateProps(sector, {\r\n                    shape: sectorShape\r\n                }, seriesModel, idx);\r\n            }\r\n            sector.useStyle(data.getItemVisual(idx, 'style'));\r\n            setStatesStylesFromModel(sector, itemModel);\r\n            var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n            var offset = seriesModel.get('selectedOffset');\r\n            var dx = Math.cos(midAngle) * offset;\r\n            var dy = Math.sin(midAngle) * offset;\r\n            var cursorStyle = itemModel.getShallow('cursor');\r\n            cursorStyle && sector.attr('cursor', cursorStyle);\r\n            this._updateLabel(seriesModel, data, idx);\r\n            sector.ensureState('emphasis').shape = __assign({ r: layout.r + (emphasisModel.get('scale')\r\n                    ? (emphasisModel.get('scaleSize') || 0) : 0) }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\r\n            extend(sector.ensureState('select'), {\r\n                x: dx,\r\n                y: dy,\r\n                shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\r\n            });\r\n            extend(sector.ensureState('blur'), {\r\n                shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\r\n            });\r\n            var labelLine = sector.getTextGuideLine();\r\n            var labelText = sector.getTextContent();\r\n            extend(labelLine.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            extend(labelText.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        };\r\n        PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\r\n            var sector = this;\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var style = data.getItemVisual(idx, 'style');\r\n            var visualColor = style && style.fill;\r\n            var visualOpacity = style && style.opacity;\r\n            setLabelStyle(sector, getLabelStatesModels(itemModel), {\r\n                labelFetcher: data.hostModel,\r\n                labelDataIndex: idx,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: visualOpacity,\r\n                defaultText: seriesModel.getFormattedLabel(idx, 'normal')\r\n                    || data.getName(idx)\r\n            });\r\n            var labelText = sector.getTextContent();\r\n            sector.setTextConfig({\r\n                position: null,\r\n                rotation: null\r\n            });\r\n            labelText.attr({\r\n                z2: 10\r\n            });\r\n            setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\r\n                stroke: visualColor,\r\n                opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\r\n            });\r\n        };\r\n        return PiePiece;\r\n    }(Sector));\r\n    var PieView = (function (_super) {\r\n        __extends(PieView, _super);\r\n        function PieView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.ignoreLabelLineUpdate = true;\r\n            return _this;\r\n        }\r\n        PieView.prototype.init = function () {\r\n            var sectorGroup = new Group();\r\n            this._sectorGroup = sectorGroup;\r\n        };\r\n        PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var group = this.group;\r\n            var startAngle;\r\n            if (!oldData && data.count() > 0) {\r\n                var shape = data.getItemLayout(0);\r\n                for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\r\n                    shape = data.getItemLayout(s);\r\n                }\r\n                if (shape) {\r\n                    startAngle = shape.startAngle;\r\n                }\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (idx) {\r\n                var piePiece = new PiePiece(data, idx, startAngle);\r\n                data.setItemGraphicEl(idx, piePiece);\r\n                group.add(piePiece);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var piePiece = oldData.getItemGraphicEl(oldIdx);\r\n                piePiece.updateData(data, newIdx, startAngle);\r\n                piePiece.off('click');\r\n                group.add(piePiece);\r\n                data.setItemGraphicEl(newIdx, piePiece);\r\n            })\r\n                .remove(function (idx) {\r\n                var piePiece = oldData.getItemGraphicEl(idx);\r\n                removeElementWithFadeOut(piePiece, seriesModel, idx);\r\n            })\r\n                .execute();\r\n            pieLabelLayout(seriesModel);\r\n            if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\r\n                this._data = data;\r\n            }\r\n        };\r\n        PieView.prototype.dispose = function () { };\r\n        PieView.prototype.containPoint = function (point, seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var itemLayout = data.getItemLayout(0);\r\n            if (itemLayout) {\r\n                var dx = point[0] - itemLayout.cx;\r\n                var dy = point[1] - itemLayout.cy;\r\n                var radius = Math.sqrt(dx * dx + dy * dy);\r\n                return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n            }\r\n        };\r\n        PieView.type = 'pie';\r\n        return PieView;\r\n    }(ChartView));\r\n    ChartView.registerClass(PieView);\n\n    var PI2$8 = Math.PI * 2;\r\n    var RADIAN$1 = Math.PI / 180;\r\n    function getViewRect(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function pieLayout(seriesType, ecModel, api) {\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var viewRect = getViewRect(seriesModel, api);\r\n            var center = seriesModel.get('center');\r\n            var radius = seriesModel.get('radius');\r\n            if (!isArray(radius)) {\r\n                radius = [0, radius];\r\n            }\r\n            if (!isArray(center)) {\r\n                center = [center, center];\r\n            }\r\n            var width = parsePercent$2(viewRect.width, api.getWidth());\r\n            var height = parsePercent$2(viewRect.height, api.getHeight());\r\n            var size = Math.min(width, height);\r\n            var cx = parsePercent$2(center[0], width) + viewRect.x;\r\n            var cy = parsePercent$2(center[1], height) + viewRect.y;\r\n            var r0 = parsePercent$2(radius[0], size / 2);\r\n            var r = parsePercent$2(radius[1], size / 2);\r\n            var startAngle = -seriesModel.get('startAngle') * RADIAN$1;\r\n            var minAngle = seriesModel.get('minAngle') * RADIAN$1;\r\n            var validDataCount = 0;\r\n            data.each(valueDim, function (value) {\r\n                !isNaN(value) && validDataCount++;\r\n            });\r\n            var sum = data.getSum(valueDim);\r\n            var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n            var clockwise = seriesModel.get('clockwise');\r\n            var roseType = seriesModel.get('roseType');\r\n            var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n            var extent = data.getDataExtent(valueDim);\r\n            extent[0] = 0;\r\n            var restAngle = PI2$8;\r\n            var valueSumLargerThanMinAngle = 0;\r\n            var currentAngle = startAngle;\r\n            var dir = clockwise ? 1 : -1;\r\n            data.setLayout({ viewRect: viewRect, r: r });\r\n            data.each(valueDim, function (value, idx) {\r\n                var angle;\r\n                if (isNaN(value)) {\r\n                    data.setItemLayout(idx, {\r\n                        angle: NaN,\r\n                        startAngle: NaN,\r\n                        endAngle: NaN,\r\n                        clockwise: clockwise,\r\n                        cx: cx,\r\n                        cy: cy,\r\n                        r0: r0,\r\n                        r: roseType\r\n                            ? NaN\r\n                            : r\r\n                    });\r\n                    return;\r\n                }\r\n                if (roseType !== 'area') {\r\n                    angle = (sum === 0 && stillShowZeroSum)\r\n                        ? unitRadian : (value * unitRadian);\r\n                }\r\n                else {\r\n                    angle = PI2$8 / validDataCount;\r\n                }\r\n                if (angle < minAngle) {\r\n                    angle = minAngle;\r\n                    restAngle -= minAngle;\r\n                }\r\n                else {\r\n                    valueSumLargerThanMinAngle += value;\r\n                }\r\n                var endAngle = currentAngle + dir * angle;\r\n                data.setItemLayout(idx, {\r\n                    angle: angle,\r\n                    startAngle: currentAngle,\r\n                    endAngle: endAngle,\r\n                    clockwise: clockwise,\r\n                    cx: cx,\r\n                    cy: cy,\r\n                    r0: r0,\r\n                    r: roseType\r\n                        ? linearMap(value, extent, [r0, r])\r\n                        : r\r\n                });\r\n                currentAngle = endAngle;\r\n            });\r\n            if (restAngle < PI2$8 && validDataCount) {\r\n                if (restAngle <= 1e-3) {\r\n                    var angle_1 = PI2$8 / validDataCount;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_1 = data.getItemLayout(idx);\r\n                            layout_1.angle = angle_1;\r\n                            layout_1.startAngle = startAngle + dir * idx * angle_1;\r\n                            layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    unitRadian = restAngle / valueSumLargerThanMinAngle;\r\n                    currentAngle = startAngle;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_2 = data.getItemLayout(idx);\r\n                            var angle = layout_2.angle === minAngle\r\n                                ? minAngle : value * unitRadian;\r\n                            layout_2.startAngle = currentAngle;\r\n                            layout_2.endAngle = currentAngle + dir * angle;\r\n                            currentAngle += dir * angle;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        });\r\n    }\n\n    function dataFilter(seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel) {\r\n                var legendModels = ecModel.findComponents({\r\n                    mainType: 'legend'\r\n                });\r\n                if (!legendModels || !legendModels.length) {\r\n                    return;\r\n                }\r\n                var data = seriesModel.getData();\r\n                data.filterSelf(function (idx) {\r\n                    var name = data.getName(idx);\r\n                    for (var i = 0; i < legendModels.length; i++) {\r\n                        if (!legendModels[i].isSelected(name)) {\r\n                            return false;\r\n                        }\r\n                    }\r\n                    return true;\r\n                });\r\n            }\r\n        };\r\n    }\n\n    createLegacyDataSelectAction('pie', registerAction);\r\n    registerLayout(curry(pieLayout, 'pie'));\r\n    registerProcessor(dataFilter('pie'));\n\n    var ScatterSeriesModel = (function (_super) {\r\n        __extends(ScatterSeriesModel, _super);\r\n        function ScatterSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScatterSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            return _this;\r\n        }\r\n        ScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: true\r\n            });\r\n        };\r\n        ScatterSeriesModel.prototype.getProgressive = function () {\r\n            var progressive = this.option.progressive;\r\n            if (progressive == null) {\r\n                return this.option.large ? 5e3 : this.get('progressive');\r\n            }\r\n            return progressive;\r\n        };\r\n        ScatterSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.option.progressiveThreshold;\r\n            if (progressiveThreshold == null) {\r\n                return this.option.large ? 1e4 : this.get('progressiveThreshold');\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        ScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.point(data.getItemLayout(dataIndex));\r\n        };\r\n        ScatterSeriesModel.type = 'series.scatter';\r\n        ScatterSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\r\n        ScatterSeriesModel.defaultOption = {\r\n            coordinateSystem: 'cartesian2d',\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            symbolSize: 10,\r\n            large: false,\r\n            largeThreshold: 2000,\r\n            itemStyle: {\r\n                opacity: 0.8\r\n            },\r\n            emphasis: {\r\n                scale: true\r\n            },\r\n            clip: true,\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            }\r\n        };\r\n        return ScatterSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(ScatterSeriesModel);\n\n    var BOOST_SIZE_THRESHOLD = 4;\r\n    var LargeSymbolPathShape = (function () {\r\n        function LargeSymbolPathShape() {\r\n        }\r\n        return LargeSymbolPathShape;\r\n    }());\r\n    var LargeSymbolPath = (function (_super) {\r\n        __extends(LargeSymbolPath, _super);\r\n        function LargeSymbolPath(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        LargeSymbolPath.prototype.getDefaultShape = function () {\r\n            return new LargeSymbolPathShape();\r\n        };\r\n        LargeSymbolPath.prototype.buildPath = function (path, shape) {\r\n            var points = shape.points;\r\n            var size = shape.size;\r\n            var symbolProxy = this.symbolProxy;\r\n            var symbolProxyShape = symbolProxy.shape;\r\n            var ctx = path.getContext\r\n                ? path.getContext()\r\n                : path;\r\n            var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;\r\n            if (canBoost) {\r\n                this._ctx = ctx;\r\n                return;\r\n            }\r\n            this._ctx = null;\r\n            for (var i = 0; i < points.length;) {\r\n                var x = points[i++];\r\n                var y = points[i++];\r\n                if (isNaN(x) || isNaN(y)) {\r\n                    continue;\r\n                }\r\n                if (this.softClipShape && !this.softClipShape.contain(x, y)) {\r\n                    continue;\r\n                }\r\n                symbolProxyShape.x = x - size[0] / 2;\r\n                symbolProxyShape.y = y - size[1] / 2;\r\n                symbolProxyShape.width = size[0];\r\n                symbolProxyShape.height = size[1];\r\n                symbolProxy.buildPath(path, symbolProxyShape, true);\r\n            }\r\n        };\r\n        LargeSymbolPath.prototype.afterBrush = function () {\r\n            var shape = this.shape;\r\n            var points = shape.points;\r\n            var size = shape.size;\r\n            var ctx = this._ctx;\r\n            if (!ctx) {\r\n                return;\r\n            }\r\n            for (var i = 0; i < points.length;) {\r\n                var x = points[i++];\r\n                var y = points[i++];\r\n                if (isNaN(x) || isNaN(y)) {\r\n                    continue;\r\n                }\r\n                if (this.softClipShape && !this.softClipShape.contain(x, y)) {\r\n                    continue;\r\n                }\r\n                ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\r\n            }\r\n        };\r\n        LargeSymbolPath.prototype.findDataIndex = function (x, y) {\r\n            var shape = this.shape;\r\n            var points = shape.points;\r\n            var size = shape.size;\r\n            var w = Math.max(size[0], 4);\r\n            var h = Math.max(size[1], 4);\r\n            for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\r\n                var i = idx * 2;\r\n                var x0 = points[i] - w / 2;\r\n                var y0 = points[i + 1] - h / 2;\r\n                if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\r\n                    return idx;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        return LargeSymbolPath;\r\n    }(Path));\r\n    var LargeSymbolDraw = (function () {\r\n        function LargeSymbolDraw() {\r\n            this.group = new Group();\r\n        }\r\n        LargeSymbolDraw.prototype.isPersistent = function () {\r\n            return !this._incremental;\r\n        };\r\n        LargeSymbolDraw.prototype.updateData = function (data, opt) {\r\n            this.group.removeAll();\r\n            var symbolEl = new LargeSymbolPath({\r\n                rectHover: true,\r\n                cursor: 'default'\r\n            });\r\n            symbolEl.setShape({\r\n                points: data.getLayout('points')\r\n            });\r\n            this._setCommon(symbolEl, data, false, opt);\r\n            this.group.add(symbolEl);\r\n            this._incremental = null;\r\n        };\r\n        LargeSymbolDraw.prototype.updateLayout = function (data) {\r\n            if (this._incremental) {\r\n                return;\r\n            }\r\n            var points = data.getLayout('points');\r\n            this.group.eachChild(function (child) {\r\n                if (child.startIndex != null) {\r\n                    var len = (child.endIndex - child.startIndex) * 2;\r\n                    var byteOffset = child.startIndex * 4 * 2;\r\n                    points = new Float32Array(points.buffer, byteOffset, len);\r\n                }\r\n                child.setShape('points', points);\r\n            });\r\n        };\r\n        LargeSymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this.group.removeAll();\r\n            this._clearIncremental();\r\n            if (data.count() > 2e6) {\r\n                if (!this._incremental) {\r\n                    this._incremental = new IncrementalDisplayble({\r\n                        silent: true\r\n                    });\r\n                }\r\n                this.group.add(this._incremental);\r\n            }\r\n            else {\r\n                this._incremental = null;\r\n            }\r\n        };\r\n        LargeSymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n            var symbolEl;\r\n            if (this._incremental) {\r\n                symbolEl = new LargeSymbolPath();\r\n                this._incremental.addDisplayable(symbolEl, true);\r\n            }\r\n            else {\r\n                symbolEl = new LargeSymbolPath({\r\n                    rectHover: true,\r\n                    cursor: 'default',\r\n                    startIndex: taskParams.start,\r\n                    endIndex: taskParams.end\r\n                });\r\n                symbolEl.incremental = true;\r\n                this.group.add(symbolEl);\r\n            }\r\n            symbolEl.setShape({\r\n                points: data.getLayout('points')\r\n            });\r\n            this._setCommon(symbolEl, data, !!this._incremental, opt);\r\n        };\r\n        LargeSymbolDraw.prototype._setCommon = function (symbolEl, data, isIncremental, opt) {\r\n            var hostModel = data.hostModel;\r\n            opt = opt || {};\r\n            var size = data.getVisual('symbolSize');\r\n            symbolEl.setShape('size', (size instanceof Array) ? size : [size, size]);\r\n            symbolEl.softClipShape = opt.clipShape || null;\r\n            symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0);\r\n            symbolEl.setColor = symbolEl.symbolProxy.setColor;\r\n            var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\r\n            symbolEl.useStyle(hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\r\n            var globalStyle = data.getVisual('style');\r\n            var visualColor = globalStyle && globalStyle.fill;\r\n            if (visualColor) {\r\n                symbolEl.setColor(visualColor);\r\n            }\r\n            if (!isIncremental) {\r\n                var ecData_1 = getECData(symbolEl);\r\n                ecData_1.seriesIndex = hostModel.seriesIndex;\r\n                symbolEl.on('mousemove', function (e) {\r\n                    ecData_1.dataIndex = null;\r\n                    var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\r\n                    if (dataIndex >= 0) {\r\n                        ecData_1.dataIndex = dataIndex + (symbolEl.startIndex || 0);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LargeSymbolDraw.prototype.remove = function () {\r\n            this._clearIncremental();\r\n            this._incremental = null;\r\n            this.group.removeAll();\r\n        };\r\n        LargeSymbolDraw.prototype._clearIncremental = function () {\r\n            var incremental = this._incremental;\r\n            if (incremental) {\r\n                incremental.clearDisplaybles();\r\n            }\r\n        };\r\n        return LargeSymbolDraw;\r\n    }());\n\n    var ScatterView = (function (_super) {\r\n        __extends(ScatterView, _super);\r\n        function ScatterView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScatterView.type;\r\n            return _this;\r\n        }\r\n        ScatterView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var symbolDraw = this._updateSymbolDraw(data, seriesModel);\r\n            symbolDraw.updateData(data, {\r\n                clipShape: this._getClipShape(seriesModel)\r\n            });\r\n            this._finished = true;\r\n        };\r\n        ScatterView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var symbolDraw = this._updateSymbolDraw(data, seriesModel);\r\n            symbolDraw.incrementalPrepareUpdate(data);\r\n            this._finished = false;\r\n        };\r\n        ScatterView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n            this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\r\n                clipShape: this._getClipShape(seriesModel)\r\n            });\r\n            this._finished = taskParams.end === seriesModel.getData().count();\r\n        };\r\n        ScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            this.group.dirty();\r\n            if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\r\n                return {\r\n                    update: true\r\n                };\r\n            }\r\n            else {\r\n                var res = pointsLayout('').reset(seriesModel, ecModel, api);\r\n                if (res.progress) {\r\n                    res.progress({ start: 0, end: data.count(), count: data.count() }, data);\r\n                }\r\n                this._symbolDraw.updateLayout(data);\r\n            }\r\n        };\r\n        ScatterView.prototype._getClipShape = function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\r\n            return seriesModel.get('clip', true) ? clipArea : null;\r\n        };\r\n        ScatterView.prototype._updateSymbolDraw = function (data, seriesModel) {\r\n            var symbolDraw = this._symbolDraw;\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var isLargeDraw = pipelineContext.large;\r\n            if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\r\n                symbolDraw && symbolDraw.remove();\r\n                symbolDraw = this._symbolDraw = isLargeDraw\r\n                    ? new LargeSymbolDraw()\r\n                    : new SymbolDraw();\r\n                this._isLargeDraw = isLargeDraw;\r\n                this.group.removeAll();\r\n            }\r\n            this.group.add(symbolDraw.group);\r\n            return symbolDraw;\r\n        };\r\n        ScatterView.prototype.remove = function (ecModel, api) {\r\n            this._symbolDraw && this._symbolDraw.remove(true);\r\n            this._symbolDraw = null;\r\n        };\r\n        ScatterView.prototype.dispose = function () { };\r\n        ScatterView.type = 'scatter';\r\n        return ScatterView;\r\n    }(ChartView));\r\n    ChartView.registerClass(ScatterView);\n\n    registerLayout(pointsLayout('scatter'));\n\n    var IndicatorAxis = (function (_super) {\r\n        __extends(IndicatorAxis, _super);\r\n        function IndicatorAxis(dim, scale, radiusExtent) {\r\n            var _this = _super.call(this, dim, scale, radiusExtent) || this;\r\n            _this.type = 'value';\r\n            _this.angle = 0;\r\n            _this.name = '';\r\n            return _this;\r\n        }\r\n        return IndicatorAxis;\r\n    }(Axis));\n\n    var Radar = (function () {\r\n        function Radar(radarModel, ecModel, api) {\r\n            this.dimensions = [];\r\n            this._model = radarModel;\r\n            this._indicatorAxes = map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\r\n                var dim = 'indicator_' + idx;\r\n                var indicatorAxis = new IndicatorAxis(dim, new IntervalScale());\r\n                indicatorAxis.name = indicatorModel.get('name');\r\n                indicatorAxis.model = indicatorModel;\r\n                indicatorModel.axis = indicatorAxis;\r\n                this.dimensions.push(dim);\r\n                return indicatorAxis;\r\n            }, this);\r\n            this.resize(radarModel, api);\r\n        }\r\n        Radar.prototype.getIndicatorAxes = function () {\r\n            return this._indicatorAxes;\r\n        };\r\n        Radar.prototype.dataToPoint = function (value, indicatorIndex) {\r\n            var indicatorAxis = this._indicatorAxes[indicatorIndex];\r\n            return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\r\n        };\r\n        Radar.prototype.coordToPoint = function (coord, indicatorIndex) {\r\n            var indicatorAxis = this._indicatorAxes[indicatorIndex];\r\n            var angle = indicatorAxis.angle;\r\n            var x = this.cx + coord * Math.cos(angle);\r\n            var y = this.cy - coord * Math.sin(angle);\r\n            return [x, y];\r\n        };\r\n        Radar.prototype.pointToData = function (pt) {\r\n            var dx = pt[0] - this.cx;\r\n            var dy = pt[1] - this.cy;\r\n            var radius = Math.sqrt(dx * dx + dy * dy);\r\n            dx /= radius;\r\n            dy /= radius;\r\n            var radian = Math.atan2(-dy, dx);\r\n            var minRadianDiff = Infinity;\r\n            var closestAxis;\r\n            var closestAxisIdx = -1;\r\n            for (var i = 0; i < this._indicatorAxes.length; i++) {\r\n                var indicatorAxis = this._indicatorAxes[i];\r\n                var diff = Math.abs(radian - indicatorAxis.angle);\r\n                if (diff < minRadianDiff) {\r\n                    closestAxis = indicatorAxis;\r\n                    closestAxisIdx = i;\r\n                    minRadianDiff = diff;\r\n                }\r\n            }\r\n            return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\r\n        };\r\n        Radar.prototype.resize = function (radarModel, api) {\r\n            var center = radarModel.get('center');\r\n            var viewWidth = api.getWidth();\r\n            var viewHeight = api.getHeight();\r\n            var viewSize = Math.min(viewWidth, viewHeight) / 2;\r\n            this.cx = parsePercent$2(center[0], viewWidth);\r\n            this.cy = parsePercent$2(center[1], viewHeight);\r\n            this.startAngle = radarModel.get('startAngle') * Math.PI / 180;\r\n            var radius = radarModel.get('radius');\r\n            if (typeof radius === 'string' || typeof radius === 'number') {\r\n                radius = [0, radius];\r\n            }\r\n            this.r0 = parsePercent$2(radius[0], viewSize);\r\n            this.r = parsePercent$2(radius[1], viewSize);\r\n            each(this._indicatorAxes, function (indicatorAxis, idx) {\r\n                indicatorAxis.setExtent(this.r0, this.r);\r\n                var angle = (this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length);\r\n                angle = Math.atan2(Math.sin(angle), Math.cos(angle));\r\n                indicatorAxis.angle = angle;\r\n            }, this);\r\n        };\r\n        Radar.prototype.update = function (ecModel, api) {\r\n            var indicatorAxes = this._indicatorAxes;\r\n            var radarModel = this._model;\r\n            each(indicatorAxes, function (indicatorAxis) {\r\n                indicatorAxis.scale.setExtent(Infinity, -Infinity);\r\n            });\r\n            ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\r\n                if (radarSeries.get('coordinateSystem') !== 'radar'\r\n                    || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\r\n                    return;\r\n                }\r\n                var data = radarSeries.getData();\r\n                each(indicatorAxes, function (indicatorAxis) {\r\n                    indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\r\n                });\r\n            }, this);\r\n            var splitNumber = radarModel.get('splitNumber');\r\n            function increaseInterval(interval) {\r\n                var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10));\r\n                var f = interval / exp10;\r\n                if (f === 2) {\r\n                    f = 5;\r\n                }\r\n                else {\r\n                    f *= 2;\r\n                }\r\n                return f * exp10;\r\n            }\r\n            each(indicatorAxes, function (indicatorAxis, idx) {\r\n                var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;\r\n                niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\r\n                var axisModel = indicatorAxis.model;\r\n                var scale = indicatorAxis.scale;\r\n                var fixedMin = parseAxisModelMinMax(scale, axisModel.get('min', true));\r\n                var fixedMax = parseAxisModelMinMax(scale, axisModel.get('max', true));\r\n                var interval = scale.getInterval();\r\n                if (fixedMin != null && fixedMax != null) {\r\n                    scale.setExtent(+fixedMin, +fixedMax);\r\n                    scale.setInterval((fixedMax - fixedMin) / splitNumber);\r\n                }\r\n                else if (fixedMin != null) {\r\n                    var max = void 0;\r\n                    do {\r\n                        max = fixedMin + interval * splitNumber;\r\n                        scale.setExtent(+fixedMin, max);\r\n                        scale.setInterval(interval);\r\n                        interval = increaseInterval(interval);\r\n                    } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\r\n                }\r\n                else if (fixedMax != null) {\r\n                    var min = void 0;\r\n                    do {\r\n                        min = fixedMax - interval * splitNumber;\r\n                        scale.setExtent(min, +fixedMax);\r\n                        scale.setInterval(interval);\r\n                        interval = increaseInterval(interval);\r\n                    } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\r\n                }\r\n                else {\r\n                    var nicedSplitNumber = scale.getTicks().length - 1;\r\n                    if (nicedSplitNumber > splitNumber) {\r\n                        interval = increaseInterval(interval);\r\n                    }\r\n                    var max = Math.ceil(rawExtent[1] / interval) * interval;\r\n                    var min = round$1(max - interval * splitNumber);\r\n                    scale.setExtent(min, max);\r\n                    scale.setInterval(interval);\r\n                }\r\n            });\r\n        };\r\n        Radar.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            console.warn('Not implemented.');\r\n            return null;\r\n        };\r\n        Radar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n            console.warn('Not implemented.');\r\n            return null;\r\n        };\r\n        Radar.prototype.containPoint = function (point) {\r\n            console.warn('Not implemented.');\r\n            return false;\r\n        };\r\n        Radar.create = function (ecModel, api) {\r\n            var radarList = [];\r\n            ecModel.eachComponent('radar', function (radarModel) {\r\n                var radar = new Radar(radarModel, ecModel, api);\r\n                radarList.push(radar);\r\n                radarModel.coordinateSystem = radar;\r\n            });\r\n            ecModel.eachSeriesByType('radar', function (radarSeries) {\r\n                if (radarSeries.get('coordinateSystem') === 'radar') {\r\n                    radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\r\n                }\r\n            });\r\n            return radarList;\r\n        };\r\n        Radar.dimensions = [];\r\n        return Radar;\r\n    }());\r\n    CoordinateSystemManager.register('radar', Radar);\n\n    var valueAxisDefault = axisDefault.value;\r\n    function defaultsShow(opt, show) {\r\n        return defaults({\r\n            show: show\r\n        }, opt);\r\n    }\r\n    var RadarModel = (function (_super) {\r\n        __extends(RadarModel, _super);\r\n        function RadarModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = RadarModel.type;\r\n            return _this;\r\n        }\r\n        RadarModel.prototype.optionUpdated = function () {\r\n            var boundaryGap = this.get('boundaryGap');\r\n            var splitNumber = this.get('splitNumber');\r\n            var scale = this.get('scale');\r\n            var axisLine = this.get('axisLine');\r\n            var axisTick = this.get('axisTick');\r\n            var axisLabel = this.get('axisLabel');\r\n            var nameTextStyle = this.get('axisName');\r\n            var showName = this.get(['axisName', 'show']);\r\n            var nameFormatter = this.get(['axisName', 'formatter']);\r\n            var nameGap = this.get('axisNameGap');\r\n            var triggerEvent = this.get('triggerEvent');\r\n            var indicatorModels = map(this.get('indicator') || [], function (indicatorOpt) {\r\n                if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\r\n                    indicatorOpt.min = 0;\r\n                }\r\n                else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\r\n                    indicatorOpt.max = 0;\r\n                }\r\n                var iNameTextStyle = nameTextStyle;\r\n                if (indicatorOpt.color != null) {\r\n                    iNameTextStyle = defaults({\r\n                        color: indicatorOpt.color\r\n                    }, nameTextStyle);\r\n                }\r\n                var innerIndicatorOpt = merge(clone(indicatorOpt), {\r\n                    boundaryGap: boundaryGap,\r\n                    splitNumber: splitNumber,\r\n                    scale: scale,\r\n                    axisLine: axisLine,\r\n                    axisTick: axisTick,\r\n                    axisLabel: axisLabel,\r\n                    name: indicatorOpt.text,\r\n                    nameLocation: 'end',\r\n                    nameGap: nameGap,\r\n                    nameTextStyle: iNameTextStyle,\r\n                    triggerEvent: triggerEvent\r\n                }, false);\r\n                if (!showName) {\r\n                    innerIndicatorOpt.name = '';\r\n                }\r\n                if (typeof nameFormatter === 'string') {\r\n                    var indName = innerIndicatorOpt.name;\r\n                    innerIndicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\r\n                }\r\n                else if (typeof nameFormatter === 'function') {\r\n                    innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt);\r\n                }\r\n                var model = new Model(innerIndicatorOpt, null, this.ecModel);\r\n                mixin(model, AxisModelCommonMixin.prototype);\r\n                model.mainType = 'radar';\r\n                model.componentIndex = this.componentIndex;\r\n                return model;\r\n            }, this);\r\n            this._indicatorModels = indicatorModels;\r\n        };\r\n        RadarModel.prototype.getIndicatorModels = function () {\r\n            return this._indicatorModels;\r\n        };\r\n        RadarModel.type = 'radar';\r\n        RadarModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 0,\r\n            center: ['50%', '50%'],\r\n            radius: '75%',\r\n            startAngle: 90,\r\n            axisName: {\r\n                show: true\r\n            },\r\n            boundaryGap: [0, 0],\r\n            splitNumber: 5,\r\n            axisNameGap: 15,\r\n            scale: false,\r\n            shape: 'polygon',\r\n            axisLine: merge({\r\n                lineStyle: {\r\n                    color: '#bbb'\r\n                }\r\n            }, valueAxisDefault.axisLine),\r\n            axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\r\n            axisTick: defaultsShow(valueAxisDefault.axisTick, false),\r\n            splitLine: defaultsShow(valueAxisDefault.splitLine, true),\r\n            splitArea: defaultsShow(valueAxisDefault.splitArea, true),\r\n            indicator: []\r\n        };\r\n        return RadarModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(RadarModel);\n\n    var axisBuilderAttrs$1 = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var RadarView = (function (_super) {\r\n        __extends(RadarView, _super);\r\n        function RadarView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = RadarView.type;\r\n            return _this;\r\n        }\r\n        RadarView.prototype.render = function (radarModel, ecModel, api) {\r\n            var group = this.group;\r\n            group.removeAll();\r\n            this._buildAxes(radarModel);\r\n            this._buildSplitLineAndArea(radarModel);\r\n        };\r\n        RadarView.prototype._buildAxes = function (radarModel) {\r\n            var radar = radarModel.coordinateSystem;\r\n            var indicatorAxes = radar.getIndicatorAxes();\r\n            var axisBuilders = map(indicatorAxes, function (indicatorAxis) {\r\n                var axisBuilder = new AxisBuilder(indicatorAxis.model, {\r\n                    position: [radar.cx, radar.cy],\r\n                    rotation: indicatorAxis.angle,\r\n                    labelDirection: -1,\r\n                    tickDirection: -1,\r\n                    nameDirection: 1\r\n                });\r\n                return axisBuilder;\r\n            });\r\n            each(axisBuilders, function (axisBuilder) {\r\n                each(axisBuilderAttrs$1, axisBuilder.add, axisBuilder);\r\n                this.group.add(axisBuilder.getGroup());\r\n            }, this);\r\n        };\r\n        RadarView.prototype._buildSplitLineAndArea = function (radarModel) {\r\n            var radar = radarModel.coordinateSystem;\r\n            var indicatorAxes = radar.getIndicatorAxes();\r\n            if (!indicatorAxes.length) {\r\n                return;\r\n            }\r\n            var shape = radarModel.get('shape');\r\n            var splitLineModel = radarModel.getModel('splitLine');\r\n            var splitAreaModel = radarModel.getModel('splitArea');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n            var showSplitLine = splitLineModel.get('show');\r\n            var showSplitArea = splitAreaModel.get('show');\r\n            var splitLineColors = lineStyleModel.get('color');\r\n            var splitAreaColors = areaStyleModel.get('color');\r\n            var splitLineColorsArr = isArray(splitLineColors) ? splitLineColors : [splitLineColors];\r\n            var splitAreaColorsArr = isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\r\n            var splitLines = [];\r\n            var splitAreas = [];\r\n            function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\r\n                var colorIndex = idx % areaOrLineColorList.length;\r\n                areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\r\n                return colorIndex;\r\n            }\r\n            if (shape === 'circle') {\r\n                var ticksRadius = indicatorAxes[0].getTicksCoords();\r\n                var cx = radar.cx;\r\n                var cy = radar.cy;\r\n                for (var i = 0; i < ticksRadius.length; i++) {\r\n                    if (showSplitLine) {\r\n                        var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);\r\n                        splitLines[colorIndex].push(new Circle({\r\n                            shape: {\r\n                                cx: cx,\r\n                                cy: cy,\r\n                                r: ticksRadius[i].coord\r\n                            }\r\n                        }));\r\n                    }\r\n                    if (showSplitArea && i < ticksRadius.length - 1) {\r\n                        var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i);\r\n                        splitAreas[colorIndex].push(new Ring({\r\n                            shape: {\r\n                                cx: cx,\r\n                                cy: cy,\r\n                                r0: ticksRadius[i].coord,\r\n                                r: ticksRadius[i + 1].coord\r\n                            }\r\n                        }));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                var realSplitNumber_1;\r\n                var axesTicksPoints = map(indicatorAxes, function (indicatorAxis, idx) {\r\n                    var ticksCoords = indicatorAxis.getTicksCoords();\r\n                    realSplitNumber_1 = realSplitNumber_1 == null\r\n                        ? ticksCoords.length - 1\r\n                        : Math.min(ticksCoords.length - 1, realSplitNumber_1);\r\n                    return map(ticksCoords, function (tickCoord) {\r\n                        return radar.coordToPoint(tickCoord.coord, idx);\r\n                    });\r\n                });\r\n                var prevPoints = [];\r\n                for (var i = 0; i <= realSplitNumber_1; i++) {\r\n                    var points = [];\r\n                    for (var j = 0; j < indicatorAxes.length; j++) {\r\n                        points.push(axesTicksPoints[j][i]);\r\n                    }\r\n                    if (points[0]) {\r\n                        points.push(points[0].slice());\r\n                    }\r\n                    else {\r\n                        if (__DEV__) {\r\n                            console.error('Can\\'t draw value axis ' + i);\r\n                        }\r\n                    }\r\n                    if (showSplitLine) {\r\n                        var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);\r\n                        splitLines[colorIndex].push(new Polyline({\r\n                            shape: {\r\n                                points: points\r\n                            }\r\n                        }));\r\n                    }\r\n                    if (showSplitArea && prevPoints) {\r\n                        var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1);\r\n                        splitAreas[colorIndex].push(new Polygon({\r\n                            shape: {\r\n                                points: points.concat(prevPoints)\r\n                            }\r\n                        }));\r\n                    }\r\n                    prevPoints = points.slice().reverse();\r\n                }\r\n            }\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            var areaStyle = areaStyleModel.getAreaStyle();\r\n            each(splitAreas, function (splitAreas, idx) {\r\n                this.group.add(mergePath$1(splitAreas, {\r\n                    style: defaults({\r\n                        stroke: 'none',\r\n                        fill: splitAreaColorsArr[idx % splitAreaColorsArr.length]\r\n                    }, areaStyle),\r\n                    silent: true\r\n                }));\r\n            }, this);\r\n            each(splitLines, function (splitLines, idx) {\r\n                this.group.add(mergePath$1(splitLines, {\r\n                    style: defaults({\r\n                        fill: 'none',\r\n                        stroke: splitLineColorsArr[idx % splitLineColorsArr.length]\r\n                    }, lineStyle),\r\n                    silent: true\r\n                }));\r\n            }, this);\r\n        };\r\n        RadarView.type = 'radar';\r\n        return RadarView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(RadarView);\n\n    var RadarSeriesModel = (function (_super) {\r\n        __extends(RadarSeriesModel, _super);\r\n        function RadarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = RadarSeriesModel.type;\r\n            _this.useColorPaletteOnData = true;\r\n            _this.hasSymbolVisual = true;\r\n            return _this;\r\n        }\r\n        RadarSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n        };\r\n        RadarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListSimply(this, {\r\n                generateCoord: 'indicator_',\r\n                generateCoordCount: Infinity\r\n            });\r\n        };\r\n        RadarSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var data = this.getData();\r\n            var coordSys = this.coordinateSystem;\r\n            var indicatorAxes = coordSys.getIndicatorAxes();\r\n            var name = this.getData().getName(dataIndex);\r\n            var nameToDisplay = name === '' ? this.name : name;\r\n            var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex);\r\n            return createTooltipMarkup('section', {\r\n                header: nameToDisplay,\r\n                sortBlocks: true,\r\n                blocks: map(indicatorAxes, function (axis) {\r\n                    var val = data.get(data.mapDimension(axis.dim), dataIndex);\r\n                    return createTooltipMarkup('nameValue', {\r\n                        markerType: 'subItem',\r\n                        markerColor: markerColor,\r\n                        name: axis.name,\r\n                        value: val,\r\n                        sortParam: val\r\n                    });\r\n                })\r\n            });\r\n        };\r\n        RadarSeriesModel.prototype.getTooltipPosition = function (dataIndex) {\r\n            if (dataIndex != null) {\r\n                var data_1 = this.getData();\r\n                var coordSys = this.coordinateSystem;\r\n                var values = data_1.getValues(map(coordSys.dimensions, function (dim) {\r\n                    return data_1.mapDimension(dim);\r\n                }), dataIndex);\r\n                for (var i = 0, len = values.length; i < len; i++) {\r\n                    if (!isNaN(values[i])) {\r\n                        var indicatorAxes = coordSys.getIndicatorAxes();\r\n                        return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        RadarSeriesModel.type = 'series.radar';\r\n        RadarSeriesModel.dependencies = ['radar'];\r\n        RadarSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'radar',\r\n            legendHoverLink: true,\r\n            radarIndex: 0,\r\n            lineStyle: {\r\n                width: 2,\r\n                type: 'solid'\r\n            },\r\n            label: {\r\n                position: 'top'\r\n            },\r\n            symbol: 'emptyCircle',\r\n            symbolSize: 4\r\n        };\r\n        return RadarSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(RadarSeriesModel);\n\n    function normalizeSymbolSize(symbolSize) {\r\n        if (!isArray(symbolSize)) {\r\n            symbolSize = [+symbolSize, +symbolSize];\r\n        }\r\n        return symbolSize;\r\n    }\r\n    var RadarView$1 = (function (_super) {\r\n        __extends(RadarView, _super);\r\n        function RadarView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = RadarView.type;\r\n            return _this;\r\n        }\r\n        RadarView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var polar = seriesModel.coordinateSystem;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            function createSymbol$1(data, idx) {\r\n                var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n                if (symbolType === 'none') {\r\n                    return;\r\n                }\r\n                var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\r\n                var symbolPath = createSymbol(symbolType, -1, -1, 2, 2);\r\n                var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\r\n                symbolPath.attr({\r\n                    style: {\r\n                        strokeNoScale: true\r\n                    },\r\n                    z2: 100,\r\n                    scaleX: symbolSize[0] / 2,\r\n                    scaleY: symbolSize[1] / 2,\r\n                    rotation: symbolRotate * Math.PI / 180 || 0\r\n                });\r\n                return symbolPath;\r\n            }\r\n            function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\r\n                symbolGroup.removeAll();\r\n                for (var i = 0; i < newPoints.length - 1; i++) {\r\n                    var symbolPath = createSymbol$1(data, idx);\r\n                    if (symbolPath) {\r\n                        symbolPath.__dimIdx = i;\r\n                        if (oldPoints[i]) {\r\n                            symbolPath.setPosition(oldPoints[i]);\r\n                            graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\r\n                                x: newPoints[i][0],\r\n                                y: newPoints[i][1]\r\n                            }, seriesModel, idx);\r\n                        }\r\n                        else {\r\n                            symbolPath.setPosition(newPoints[i]);\r\n                        }\r\n                        symbolGroup.add(symbolPath);\r\n                    }\r\n                }\r\n            }\r\n            function getInitialPoints(points) {\r\n                return map(points, function (pt) {\r\n                    return [polar.cx, polar.cy];\r\n                });\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (idx) {\r\n                var points = data.getItemLayout(idx);\r\n                if (!points) {\r\n                    return;\r\n                }\r\n                var polygon = new Polygon();\r\n                var polyline = new Polyline();\r\n                var target = {\r\n                    shape: {\r\n                        points: points\r\n                    }\r\n                };\r\n                polygon.shape.points = getInitialPoints(points);\r\n                polyline.shape.points = getInitialPoints(points);\r\n                initProps(polygon, target, seriesModel, idx);\r\n                initProps(polyline, target, seriesModel, idx);\r\n                var itemGroup = new Group();\r\n                var symbolGroup = new Group();\r\n                itemGroup.add(polyline);\r\n                itemGroup.add(polygon);\r\n                itemGroup.add(symbolGroup);\r\n                updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\r\n                data.setItemGraphicEl(idx, itemGroup);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var itemGroup = oldData.getItemGraphicEl(oldIdx);\r\n                var polyline = itemGroup.childAt(0);\r\n                var polygon = itemGroup.childAt(1);\r\n                var symbolGroup = itemGroup.childAt(2);\r\n                var target = {\r\n                    shape: {\r\n                        points: data.getItemLayout(newIdx)\r\n                    }\r\n                };\r\n                if (!target.shape.points) {\r\n                    return;\r\n                }\r\n                updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\r\n                updateProps(polyline, target, seriesModel);\r\n                updateProps(polygon, target, seriesModel);\r\n                data.setItemGraphicEl(newIdx, itemGroup);\r\n            })\r\n                .remove(function (idx) {\r\n                group.remove(oldData.getItemGraphicEl(idx));\r\n            })\r\n                .execute();\r\n            data.eachItemGraphicEl(function (itemGroup, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var polyline = itemGroup.childAt(0);\r\n                var polygon = itemGroup.childAt(1);\r\n                var symbolGroup = itemGroup.childAt(2);\r\n                var itemStyle = data.getItemVisual(idx, 'style');\r\n                var color = itemStyle.fill;\r\n                group.add(itemGroup);\r\n                polyline.useStyle(defaults(itemModel.getModel('lineStyle').getLineStyle(), {\r\n                    fill: 'none',\r\n                    stroke: color\r\n                }));\r\n                setStatesStylesFromModel(polyline, itemModel, 'lineStyle');\r\n                setStatesStylesFromModel(polygon, itemModel, 'areaStyle');\r\n                var areaStyleModel = itemModel.getModel('areaStyle');\r\n                var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\r\n                polygon.ignore = polygonIgnore;\r\n                each(['emphasis', 'select', 'blur'], function (stateName) {\r\n                    var stateModel = itemModel.getModel([stateName, 'areaStyle']);\r\n                    var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty();\r\n                    polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;\r\n                });\r\n                polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n                    fill: color,\r\n                    opacity: 0.7,\r\n                    decal: itemStyle.decal\r\n                }));\r\n                var emphasisModel = itemModel.getModel('emphasis');\r\n                var itemHoverStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n                symbolGroup.eachChild(function (symbolPath) {\r\n                    if (symbolPath instanceof ZRImage) {\r\n                        var pathStyle = symbolPath.style;\r\n                        symbolPath.useStyle(extend({\r\n                            image: pathStyle.image,\r\n                            x: pathStyle.x, y: pathStyle.y,\r\n                            width: pathStyle.width, height: pathStyle.height\r\n                        }, itemStyle));\r\n                    }\r\n                    else {\r\n                        symbolPath.useStyle(itemStyle);\r\n                        symbolPath.setColor(color);\r\n                    }\r\n                    var pathEmphasisState = symbolPath.ensureState('emphasis');\r\n                    pathEmphasisState.style = clone(itemHoverStyle);\r\n                    var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx);\r\n                    (defaultText == null || isNaN(defaultText)) && (defaultText = '');\r\n                    setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {\r\n                        labelFetcher: data.hostModel,\r\n                        labelDataIndex: idx,\r\n                        labelDimIndex: symbolPath.__dimIdx,\r\n                        defaultText: defaultText,\r\n                        inheritColor: color,\r\n                        defaultOpacity: itemStyle.opacity\r\n                    });\r\n                });\r\n                enableHoverEmphasis(itemGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n            });\r\n            this._data = data;\r\n        };\r\n        RadarView.prototype.remove = function () {\r\n            this.group.removeAll();\r\n            this._data = null;\r\n        };\r\n        RadarView.type = 'radar';\r\n        return RadarView;\r\n    }(ChartView));\r\n    ChartView.registerClass(RadarView$1);\n\n    function radarLayout(ecModel) {\r\n        ecModel.eachSeriesByType('radar', function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var points = [];\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (!coordSys) {\r\n                return;\r\n            }\r\n            var axes = coordSys.getIndicatorAxes();\r\n            each(axes, function (axis, axisIndex) {\r\n                data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\r\n                    points[dataIndex] = points[dataIndex] || [];\r\n                    var point = coordSys.dataToPoint(val, axisIndex);\r\n                    points[dataIndex][axisIndex] = isValidPoint(point)\r\n                        ? point : getValueMissingPoint(coordSys);\r\n                });\r\n            });\r\n            data.each(function (idx) {\r\n                var firstPoint = find(points[idx], function (point) {\r\n                    return isValidPoint(point);\r\n                }) || getValueMissingPoint(coordSys);\r\n                points[idx].push(firstPoint.slice());\r\n                data.setItemLayout(idx, points[idx]);\r\n            });\r\n        });\r\n    }\r\n    function isValidPoint(point) {\r\n        return !isNaN(point[0]) && !isNaN(point[1]);\r\n    }\r\n    function getValueMissingPoint(coordSys) {\r\n        return [coordSys.cx, coordSys.cy];\r\n    }\n\n    function radarBackwardCompat(option) {\r\n        var polarOptArr = option.polar;\r\n        if (polarOptArr) {\r\n            if (!isArray(polarOptArr)) {\r\n                polarOptArr = [polarOptArr];\r\n            }\r\n            var polarNotRadar_1 = [];\r\n            each(polarOptArr, function (polarOpt, idx) {\r\n                if (polarOpt.indicator) {\r\n                    if (polarOpt.type && !polarOpt.shape) {\r\n                        polarOpt.shape = polarOpt.type;\r\n                    }\r\n                    option.radar = option.radar || [];\r\n                    if (!isArray(option.radar)) {\r\n                        option.radar = [option.radar];\r\n                    }\r\n                    option.radar.push(polarOpt);\r\n                }\r\n                else {\r\n                    polarNotRadar_1.push(polarOpt);\r\n                }\r\n            });\r\n            option.polar = polarNotRadar_1;\r\n        }\r\n        each(option.series, function (seriesOpt) {\r\n            if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\r\n                seriesOpt.radarIndex = seriesOpt.polarIndex;\r\n            }\r\n        });\r\n    }\n\n    registerLayout(radarLayout);\r\n    registerProcessor(dataFilter('radar'));\r\n    registerPreprocessor(radarBackwardCompat);\n\n    var geoCoord = [126, 25];\r\n    var points$1 = [\r\n        [[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7],\r\n            [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]],\r\n        [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]],\r\n        [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]],\r\n        [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]],\r\n        [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]],\r\n        [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]],\r\n        [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]],\r\n        [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]],\r\n        [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]],\r\n        [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]],\r\n        [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]],\r\n        [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4],\r\n            [1, 92.4], [1, 3.5], [0, 3.5]]\r\n    ];\r\n    for (var i = 0; i < points$1.length; i++) {\r\n        for (var k = 0; k < points$1[i].length; k++) {\r\n            points$1[i][k][0] /= 10.5;\r\n            points$1[i][k][1] /= -10.5 / 0.75;\r\n            points$1[i][k][0] += geoCoord[0];\r\n            points$1[i][k][1] += geoCoord[1];\r\n        }\r\n    }\r\n    function fixNanhai(mapType, regions) {\r\n        if (mapType === 'china') {\r\n            regions.push(new Region('南海诸岛', map(points$1, function (exterior) {\r\n                return {\r\n                    type: 'polygon',\r\n                    exterior: exterior\r\n                };\r\n            }), geoCoord));\r\n        }\r\n    }\n\n    var coordsOffsetMap = {\r\n        '南海诸岛': [32, 80],\r\n        '广东': [0, -10],\r\n        '香港': [10, 5],\r\n        '澳门': [-10, 10],\r\n        '天津': [5, 5]\r\n    };\r\n    function fixTextCoords(mapType, region) {\r\n        if (mapType === 'china') {\r\n            var coordFix = coordsOffsetMap[region.name];\r\n            if (coordFix) {\r\n                var cp = region.center;\r\n                cp[0] += coordFix[0] / 10.5;\r\n                cp[1] += -coordFix[1] / (10.5 / 0.75);\r\n            }\r\n        }\r\n    }\n\n    var geoCoordMap = {\r\n        'Russia': [100, 60],\r\n        'United States': [-99, 38],\r\n        'United States of America': [-99, 38]\r\n    };\r\n    function fixGeoCoords(mapType, region) {\r\n        if (mapType === 'world') {\r\n            var geoCoord = geoCoordMap[region.name];\r\n            if (geoCoord) {\r\n                var cp = region.center;\r\n                cp[0] = geoCoord[0];\r\n                cp[1] = geoCoord[1];\r\n            }\r\n        }\r\n    }\n\n    var points$2 = [\r\n        [\r\n            [123.45165252685547, 25.73527164402261],\r\n            [123.49731445312499, 25.73527164402261],\r\n            [123.49731445312499, 25.750734064600884],\r\n            [123.45165252685547, 25.750734064600884],\r\n            [123.45165252685547, 25.73527164402261]\r\n        ]\r\n    ];\r\n    function fixDiaoyuIsland(mapType, region) {\r\n        if (mapType === 'china' && region.name === '台湾') {\r\n            region.geometries.push({\r\n                type: 'polygon',\r\n                exterior: points$2[0]\r\n            });\r\n        }\r\n    }\n\n    var inner$6 = makeInner();\r\n    var geoJSONLoader = {\r\n        load: function (mapName, mapRecord, nameProperty) {\r\n            var parsed = inner$6(mapRecord).parsed;\r\n            if (parsed) {\r\n                return parsed;\r\n            }\r\n            var specialAreas = mapRecord.specialAreas || {};\r\n            var geoJSON = mapRecord.geoJSON;\r\n            var regions;\r\n            try {\r\n                regions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : [];\r\n            }\r\n            catch (e) {\r\n                throw new Error('Invalid geoJson format\\n' + e.message);\r\n            }\r\n            fixNanhai(mapName, regions);\r\n            each(regions, function (region) {\r\n                var regionName = region.name;\r\n                fixTextCoords(mapName, region);\r\n                fixGeoCoords(mapName, region);\r\n                fixDiaoyuIsland(mapName, region);\r\n                var specialArea = specialAreas[regionName];\r\n                if (specialArea) {\r\n                    region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\r\n                }\r\n            });\r\n            return (inner$6(mapRecord).parsed = {\r\n                regions: regions,\r\n                boundingRect: getBoundingRect$1(regions)\r\n            });\r\n        }\r\n    };\r\n    function getBoundingRect$1(regions) {\r\n        var rect;\r\n        for (var i = 0; i < regions.length; i++) {\r\n            var regionRect = regions[i].getBoundingRect();\r\n            rect = rect || regionRect.clone();\r\n            rect.union(regionRect);\r\n        }\r\n        return rect;\r\n    }\n\n    var inner$7 = makeInner();\r\n    var geoSVGLoader = {\r\n        load: function (mapName, mapRecord) {\r\n            var originRoot = inner$7(mapRecord).originRoot;\r\n            if (originRoot) {\r\n                return {\r\n                    root: originRoot,\r\n                    boundingRect: inner$7(mapRecord).boundingRect\r\n                };\r\n            }\r\n            var graphic = buildGraphic(mapRecord);\r\n            inner$7(mapRecord).originRoot = graphic.root;\r\n            inner$7(mapRecord).boundingRect = graphic.boundingRect;\r\n            return graphic;\r\n        },\r\n        makeGraphic: function (mapName, mapRecord, hostKey) {\r\n            var field = inner$7(mapRecord);\r\n            var rootMap = field.rootMap || (field.rootMap = createHashMap());\r\n            var root = rootMap.get(hostKey);\r\n            if (root) {\r\n                return root;\r\n            }\r\n            var originRoot = field.originRoot;\r\n            var boundingRect = field.boundingRect;\r\n            if (!field.originRootHostKey) {\r\n                field.originRootHostKey = hostKey;\r\n                root = originRoot;\r\n            }\r\n            else {\r\n                root = buildGraphic(mapRecord, boundingRect).root;\r\n            }\r\n            return rootMap.set(hostKey, root);\r\n        },\r\n        removeGraphic: function (mapName, mapRecord, hostKey) {\r\n            var field = inner$7(mapRecord);\r\n            var rootMap = field.rootMap;\r\n            rootMap && rootMap.removeKey(hostKey);\r\n            if (hostKey === field.originRootHostKey) {\r\n                field.originRootHostKey = null;\r\n            }\r\n        }\r\n    };\r\n    function buildGraphic(mapRecord, boundingRect) {\r\n        var svgXML = mapRecord.svgXML;\r\n        var result;\r\n        var root;\r\n        try {\r\n            result = svgXML && parseSVG(svgXML, {\r\n                ignoreViewBox: true,\r\n                ignoreRootClip: true\r\n            }) || {};\r\n            root = result.root;\r\n            assert(root != null);\r\n        }\r\n        catch (e) {\r\n            throw new Error('Invalid svg format\\n' + e.message);\r\n        }\r\n        var svgWidth = result.width;\r\n        var svgHeight = result.height;\r\n        var viewBoxRect = result.viewBoxRect;\r\n        if (!boundingRect) {\r\n            boundingRect = (svgWidth == null || svgHeight == null)\r\n                ? root.getBoundingRect()\r\n                : new BoundingRect(0, 0, 0, 0);\r\n            if (svgWidth != null) {\r\n                boundingRect.width = svgWidth;\r\n            }\r\n            if (svgHeight != null) {\r\n                boundingRect.height = svgHeight;\r\n            }\r\n        }\r\n        if (viewBoxRect) {\r\n            var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect.width, boundingRect.height);\r\n            var elRoot = root;\r\n            root = new Group();\r\n            root.add(elRoot);\r\n            elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;\r\n            elRoot.x = viewBoxTransform.x;\r\n            elRoot.y = viewBoxTransform.y;\r\n        }\r\n        root.setClipPath(new Rect({\r\n            shape: boundingRect.plain()\r\n        }));\r\n        return {\r\n            root: root,\r\n            boundingRect: boundingRect\r\n        };\r\n    }\n\n    var loaders = {\r\n        geoJSON: geoJSONLoader,\r\n        svg: geoSVGLoader\r\n    };\r\n    var geoSourceManager = {\r\n        load: function (mapName, nameMap, nameProperty) {\r\n            var regions = [];\r\n            var regionsMap = createHashMap();\r\n            var nameCoordMap = createHashMap();\r\n            var boundingRect;\r\n            var mapRecords = retrieveMap(mapName);\r\n            each(mapRecords, function (record) {\r\n                var singleSource = loaders[record.type].load(mapName, record, nameProperty);\r\n                each(singleSource.regions, function (region) {\r\n                    var regionName = region.name;\r\n                    if (nameMap && nameMap.hasOwnProperty(regionName)) {\r\n                        region = region.cloneShallow(regionName = nameMap[regionName]);\r\n                    }\r\n                    regions.push(region);\r\n                    regionsMap.set(regionName, region);\r\n                    nameCoordMap.set(regionName, region.center);\r\n                });\r\n                var rect = singleSource.boundingRect;\r\n                if (rect) {\r\n                    boundingRect\r\n                        ? boundingRect.union(rect)\r\n                        : (boundingRect = rect.clone());\r\n                }\r\n            });\r\n            return {\r\n                regions: regions,\r\n                regionsMap: regionsMap,\r\n                nameCoordMap: nameCoordMap,\r\n                boundingRect: boundingRect || new BoundingRect(0, 0, 0, 0)\r\n            };\r\n        },\r\n        makeGraphic: function (mapName, hostKey) {\r\n            var mapRecords = retrieveMap(mapName);\r\n            var results = [];\r\n            each(mapRecords, function (record) {\r\n                var method = loaders[record.type].makeGraphic;\r\n                method && results.push(method(mapName, record, hostKey));\r\n            });\r\n            return results;\r\n        },\r\n        removeGraphic: function (mapName, hostKey) {\r\n            var mapRecords = retrieveMap(mapName);\r\n            each(mapRecords, function (record) {\r\n                var method = loaders[record.type].makeGraphic;\r\n                method && method(mapName, record, hostKey);\r\n            });\r\n        }\r\n    };\r\n    function mapNotExistsError(mapName) {\r\n        if (__DEV__) {\r\n            console.error('Map ' + mapName + ' not exists. The GeoJSON of the map must be provided.');\r\n        }\r\n    }\r\n    function retrieveMap(mapName) {\r\n        var mapRecords = mapDataStorage.retrieveMap(mapName) || [];\r\n        if (__DEV__) {\r\n            if (!mapRecords.length) {\r\n                mapNotExistsError(mapName);\r\n            }\r\n        }\r\n        return mapRecords;\r\n    }\n\n    var MapSeries = (function (_super) {\r\n        __extends(MapSeries, _super);\r\n        function MapSeries() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MapSeries.type;\r\n            _this.needsDrawMap = false;\r\n            _this.seriesGroup = [];\r\n            _this.getTooltipPosition = function (dataIndex) {\r\n                if (dataIndex != null) {\r\n                    var name_1 = this.getData().getName(dataIndex);\r\n                    var geo = this.coordinateSystem;\r\n                    var region = geo.getRegion(name_1);\r\n                    return region && geo.dataToPoint(region.center);\r\n                }\r\n            };\r\n            return _this;\r\n        }\r\n        MapSeries.prototype.getInitialData = function (option) {\r\n            var data = createListSimply(this, {\r\n                coordDimensions: ['value'],\r\n                encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n            });\r\n            var dataNameMap = createHashMap();\r\n            var toAppendNames = [];\r\n            for (var i = 0, len = data.count(); i < len; i++) {\r\n                var name_2 = data.getName(i);\r\n                dataNameMap.set(name_2, true);\r\n            }\r\n            var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\r\n            each(geoSource.regions, function (region) {\r\n                var name = region.name;\r\n                if (!dataNameMap.get(name)) {\r\n                    toAppendNames.push(name);\r\n                }\r\n            });\r\n            data.appendValues([], toAppendNames);\r\n            return data;\r\n        };\r\n        MapSeries.prototype.getHostGeoModel = function () {\r\n            var geoIndex = this.option.geoIndex;\r\n            return geoIndex != null\r\n                ? this.ecModel.getComponent('geo', geoIndex)\r\n                : null;\r\n        };\r\n        MapSeries.prototype.getMapType = function () {\r\n            return (this.getHostGeoModel() || this).option.map;\r\n        };\r\n        MapSeries.prototype.getRawValue = function (dataIndex) {\r\n            var data = this.getData();\r\n            return data.get(data.mapDimension('value'), dataIndex);\r\n        };\r\n        MapSeries.prototype.getRegionModel = function (regionName) {\r\n            var data = this.getData();\r\n            return data.getItemModel(data.indexOfName(regionName));\r\n        };\r\n        MapSeries.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var data = this.getData();\r\n            var value = this.getRawValue(dataIndex);\r\n            var name = data.getName(dataIndex);\r\n            var seriesGroup = this.seriesGroup;\r\n            var seriesNames = [];\r\n            for (var i = 0; i < seriesGroup.length; i++) {\r\n                var otherIndex = seriesGroup[i].originalData.indexOfName(name);\r\n                var valueDim = data.mapDimension('value');\r\n                if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\r\n                    seriesNames.push(seriesGroup[i].name);\r\n                }\r\n            }\r\n            return createTooltipMarkup('section', {\r\n                header: seriesNames.join(', '),\r\n                noHeader: !seriesNames.length,\r\n                blocks: [createTooltipMarkup('nameValue', {\r\n                        name: name, value: value\r\n                    })]\r\n            });\r\n        };\r\n        MapSeries.prototype.setZoom = function (zoom) {\r\n            this.option.zoom = zoom;\r\n        };\r\n        MapSeries.prototype.setCenter = function (center) {\r\n            this.option.center = center;\r\n        };\r\n        MapSeries.type = 'series.map';\r\n        MapSeries.dependencies = ['geo'];\r\n        MapSeries.layoutMode = 'box';\r\n        MapSeries.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'geo',\r\n            map: '',\r\n            left: 'center',\r\n            top: 'center',\r\n            aspectScale: 0.75,\r\n            showLegendSymbol: true,\r\n            boundingCoords: null,\r\n            center: null,\r\n            zoom: 1,\r\n            scaleLimit: null,\r\n            selectedMode: true,\r\n            label: {\r\n                show: false,\r\n                color: '#000'\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 0.5,\r\n                borderColor: '#444',\r\n                areaColor: '#eee'\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true,\r\n                    color: 'rgb(100,0,0)'\r\n                },\r\n                itemStyle: {\r\n                    areaColor: 'rgba(255,215,0,0.8)'\r\n                }\r\n            },\r\n            select: {\r\n                label: {\r\n                    show: true,\r\n                    color: 'rgb(100,0,0)'\r\n                },\r\n                itemStyle: {\r\n                    color: 'rgba(255,215,0,0.8)'\r\n                }\r\n            },\r\n            nameProperty: 'name'\r\n        };\r\n        return MapSeries;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(MapSeries);\n\n    var ATTR = '\\0_ec_interaction_mutex';\r\n    function take(zr, resourceKey, userKey) {\r\n        var store = getStore(zr);\r\n        store[resourceKey] = userKey;\r\n    }\r\n    function release(zr, resourceKey, userKey) {\r\n        var store = getStore(zr);\r\n        var uKey = store[resourceKey];\r\n        if (uKey === userKey) {\r\n            store[resourceKey] = null;\r\n        }\r\n    }\r\n    function isTaken(zr, resourceKey) {\r\n        return !!getStore(zr)[resourceKey];\r\n    }\r\n    function getStore(zr) {\r\n        return zr[ATTR] || (zr[ATTR] = {});\r\n    }\r\n    registerAction({ type: 'takeGlobalCursor', event: 'globalCursorTaken', update: 'update' }, function () { });\n\n    var RoamController = (function (_super) {\r\n        __extends(RoamController, _super);\r\n        function RoamController(zr) {\r\n            var _this = _super.call(this) || this;\r\n            _this._zr = zr;\r\n            var mousedownHandler = bind(_this._mousedownHandler, _this);\r\n            var mousemoveHandler = bind(_this._mousemoveHandler, _this);\r\n            var mouseupHandler = bind(_this._mouseupHandler, _this);\r\n            var mousewheelHandler = bind(_this._mousewheelHandler, _this);\r\n            var pinchHandler = bind(_this._pinchHandler, _this);\r\n            _this.enable = function (controlType, opt) {\r\n                this.disable();\r\n                this._opt = defaults(clone(opt) || {}, {\r\n                    zoomOnMouseWheel: true,\r\n                    moveOnMouseMove: true,\r\n                    moveOnMouseWheel: false,\r\n                    preventDefaultMouseMove: true\r\n                });\r\n                if (controlType == null) {\r\n                    controlType = true;\r\n                }\r\n                if (controlType === true || (controlType === 'move' || controlType === 'pan')) {\r\n                    zr.on('mousedown', mousedownHandler);\r\n                    zr.on('mousemove', mousemoveHandler);\r\n                    zr.on('mouseup', mouseupHandler);\r\n                }\r\n                if (controlType === true || (controlType === 'scale' || controlType === 'zoom')) {\r\n                    zr.on('mousewheel', mousewheelHandler);\r\n                    zr.on('pinch', pinchHandler);\r\n                }\r\n            };\r\n            _this.disable = function () {\r\n                zr.off('mousedown', mousedownHandler);\r\n                zr.off('mousemove', mousemoveHandler);\r\n                zr.off('mouseup', mouseupHandler);\r\n                zr.off('mousewheel', mousewheelHandler);\r\n                zr.off('pinch', pinchHandler);\r\n            };\r\n            return _this;\r\n        }\r\n        RoamController.prototype.isDragging = function () {\r\n            return this._dragging;\r\n        };\r\n        RoamController.prototype.isPinching = function () {\r\n            return this._pinching;\r\n        };\r\n        RoamController.prototype.setPointerChecker = function (pointerChecker) {\r\n            this.pointerChecker = pointerChecker;\r\n        };\r\n        RoamController.prototype.dispose = function () {\r\n            this.disable();\r\n        };\r\n        RoamController.prototype._mousedownHandler = function (e) {\r\n            if (isMiddleOrRightButtonOnMouseUpDown(e)\r\n                || (e.target && e.target.draggable)) {\r\n                return;\r\n            }\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            if (this.pointerChecker && this.pointerChecker(e, x, y)) {\r\n                this._x = x;\r\n                this._y = y;\r\n                this._dragging = true;\r\n            }\r\n        };\r\n        RoamController.prototype._mousemoveHandler = function (e) {\r\n            if (!this._dragging\r\n                || !isAvailableBehavior('moveOnMouseMove', e, this._opt)\r\n                || e.gestureEvent === 'pinch'\r\n                || isTaken(this._zr, 'globalPan')) {\r\n                return;\r\n            }\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            var oldX = this._x;\r\n            var oldY = this._y;\r\n            var dx = x - oldX;\r\n            var dy = y - oldY;\r\n            this._x = x;\r\n            this._y = y;\r\n            this._opt.preventDefaultMouseMove && stop(e.event);\r\n            trigger(this, 'pan', 'moveOnMouseMove', e, {\r\n                dx: dx, dy: dy, oldX: oldX, oldY: oldY, newX: x, newY: y, isAvailableBehavior: null\r\n            });\r\n        };\r\n        RoamController.prototype._mouseupHandler = function (e) {\r\n            if (!isMiddleOrRightButtonOnMouseUpDown(e)) {\r\n                this._dragging = false;\r\n            }\r\n        };\r\n        RoamController.prototype._mousewheelHandler = function (e) {\r\n            var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\r\n            var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\r\n            var wheelDelta = e.wheelDelta;\r\n            var absWheelDeltaDelta = Math.abs(wheelDelta);\r\n            var originX = e.offsetX;\r\n            var originY = e.offsetY;\r\n            if (wheelDelta === 0 || (!shouldZoom && !shouldMove)) {\r\n                return;\r\n            }\r\n            if (shouldZoom) {\r\n                var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\r\n                var scale = wheelDelta > 0 ? factor : 1 / factor;\r\n                checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\r\n                    scale: scale, originX: originX, originY: originY, isAvailableBehavior: null\r\n                });\r\n            }\r\n            if (shouldMove) {\r\n                var absDelta = Math.abs(wheelDelta);\r\n                var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\r\n                checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\r\n                    scrollDelta: scrollDelta, originX: originX, originY: originY, isAvailableBehavior: null\r\n                });\r\n            }\r\n        };\r\n        RoamController.prototype._pinchHandler = function (e) {\r\n            if (isTaken(this._zr, 'globalPan')) {\r\n                return;\r\n            }\r\n            var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\r\n            checkPointerAndTrigger(this, 'zoom', null, e, {\r\n                scale: scale, originX: e.pinchX, originY: e.pinchY, isAvailableBehavior: null\r\n            });\r\n        };\r\n        return RoamController;\r\n    }(Eventful));\r\n    function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n        if (controller.pointerChecker\r\n            && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\r\n            stop(e.event);\r\n            trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\r\n        }\r\n    }\r\n    function trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n        contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e);\r\n        controller.trigger(eventName, contollerEvent);\r\n    }\r\n    function isAvailableBehavior(behaviorToCheck, e, settings) {\r\n        var setting = settings[behaviorToCheck];\r\n        return !behaviorToCheck || (setting && (!isString(setting) || e.event[setting + 'Key']));\r\n    }\n\n    function updateViewOnPan(controllerHost, dx, dy) {\r\n        var target = controllerHost.target;\r\n        target.x += dx;\r\n        target.y += dy;\r\n        target.dirty();\r\n    }\r\n    function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\r\n        var target = controllerHost.target;\r\n        var zoomLimit = controllerHost.zoomLimit;\r\n        var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\r\n        newZoom *= zoomDelta;\r\n        if (zoomLimit) {\r\n            var zoomMin = zoomLimit.min || 0;\r\n            var zoomMax = zoomLimit.max || Infinity;\r\n            newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\r\n        }\r\n        var zoomScale = newZoom / controllerHost.zoom;\r\n        controllerHost.zoom = newZoom;\r\n        target.x -= (zoomX - target.x) * (zoomScale - 1);\r\n        target.y -= (zoomY - target.y) * (zoomScale - 1);\r\n        target.scaleX *= zoomScale;\r\n        target.scaleY *= zoomScale;\r\n        target.dirty();\r\n    }\n\n    var IRRELEVANT_EXCLUDES = { 'axisPointer': 1, 'tooltip': 1, 'brush': 1 };\r\n    function onIrrelevantElement(e, api, targetCoordSysModel) {\r\n        var model = api.getComponentByElement(e.topTarget);\r\n        var coordSys = model && model.coordinateSystem;\r\n        return model\r\n            && model !== targetCoordSysModel\r\n            && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType)\r\n            && (coordSys && coordSys.model !== targetCoordSysModel);\r\n    }\n\n    function getFixedItemStyle(model) {\r\n        var itemStyle = model.getItemStyle();\r\n        var areaColor = model.get('areaColor');\r\n        if (areaColor != null) {\r\n            itemStyle.fill = areaColor;\r\n        }\r\n        return itemStyle;\r\n    }\r\n    var MapDraw = (function () {\r\n        function MapDraw(api) {\r\n            var group = new Group();\r\n            this.uid = getUID('ec_map_draw');\r\n            this._controller = new RoamController(api.getZr());\r\n            this._controllerHost = { target: group };\r\n            this.group = group;\r\n            group.add(this._regionsGroup = new Group());\r\n            group.add(this._backgroundGroup = new Group());\r\n        }\r\n        MapDraw.prototype.draw = function (mapOrGeoModel, ecModel, api, fromView, payload) {\r\n            var isGeo = mapOrGeoModel.mainType === 'geo';\r\n            var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\r\n            isGeo && ecModel.eachComponent({ mainType: 'series', subType: 'map' }, function (mapSeries) {\r\n                if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\r\n                    data = mapSeries.getData();\r\n                }\r\n            });\r\n            var geo = mapOrGeoModel.coordinateSystem;\r\n            this._updateBackground(geo);\r\n            var regionsGroup = this._regionsGroup;\r\n            var group = this.group;\r\n            var transformInfo = geo.getTransformInfo();\r\n            var isFirstDraw = !regionsGroup.childAt(0) || payload;\r\n            var targetScaleX;\r\n            var targetScaleY;\r\n            if (isFirstDraw) {\r\n                group.transform = transformInfo.roamTransform;\r\n                group.decomposeTransform();\r\n                group.dirty();\r\n            }\r\n            else {\r\n                var target = new Transformable();\r\n                target.transform = transformInfo.roamTransform;\r\n                target.decomposeTransform();\r\n                var props = {\r\n                    scaleX: target.scaleX,\r\n                    scaleY: target.scaleY,\r\n                    x: target.x,\r\n                    y: target.y\r\n                };\r\n                targetScaleX = target.scaleX;\r\n                targetScaleY = target.scaleY;\r\n                updateProps(group, props, mapOrGeoModel);\r\n            }\r\n            regionsGroup.removeAll();\r\n            var nameMap = createHashMap();\r\n            var isVisualEncodedByVisualMap = data\r\n                && data.getVisual('visualMeta')\r\n                && data.getVisual('visualMeta').length > 0;\r\n            each(geo.regions, function (region) {\r\n                var regionGroup = nameMap.get(region.name)\r\n                    || nameMap.set(region.name, new Group());\r\n                var compoundPath = new CompoundPath({\r\n                    segmentIgnoreThreshold: 1,\r\n                    shape: {\r\n                        paths: []\r\n                    }\r\n                });\r\n                regionGroup.add(compoundPath);\r\n                var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\r\n                var itemStyleModel = regionModel.getModel('itemStyle');\r\n                var emphasisModel = regionModel.getModel('emphasis');\r\n                var emphasisItemStyleModel = emphasisModel.getModel('itemStyle');\r\n                var blurItemStyleModel = regionModel.getModel(['blur', 'itemStyle']);\r\n                var selectItemStyleModel = regionModel.getModel(['select', 'itemStyle']);\r\n                var itemStyle = getFixedItemStyle(itemStyleModel);\r\n                var emphasisItemStyle = getFixedItemStyle(emphasisItemStyleModel);\r\n                var blurItemStyle = getFixedItemStyle(blurItemStyleModel);\r\n                var selectItemStyle = getFixedItemStyle(selectItemStyleModel);\r\n                var dataIdx;\r\n                if (data) {\r\n                    dataIdx = data.indexOfName(region.name);\r\n                    var style = data.getItemVisual(dataIdx, 'style');\r\n                    var decal = data.getItemVisual(dataIdx, 'decal');\r\n                    if (isVisualEncodedByVisualMap && style.fill) {\r\n                        itemStyle.fill = style.fill;\r\n                    }\r\n                    if (decal) {\r\n                        itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n                    }\r\n                }\r\n                var sx = transformInfo.rawScaleX;\r\n                var sy = transformInfo.rawScaleY;\r\n                var offsetX = transformInfo.rawX;\r\n                var offsetY = transformInfo.rawY;\r\n                var transformPoint = function (point) {\r\n                    return [\r\n                        point[0] * sx + offsetX,\r\n                        point[1] * sy + offsetY\r\n                    ];\r\n                };\r\n                each(region.geometries, function (geometry) {\r\n                    if (geometry.type !== 'polygon') {\r\n                        return;\r\n                    }\r\n                    var points = [];\r\n                    for (var i = 0; i < geometry.exterior.length; ++i) {\r\n                        points.push(transformPoint(geometry.exterior[i]));\r\n                    }\r\n                    compoundPath.shape.paths.push(new Polygon({\r\n                        segmentIgnoreThreshold: 1,\r\n                        shape: {\r\n                            points: points\r\n                        }\r\n                    }));\r\n                    for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\r\n                        var interior = geometry.interiors[i];\r\n                        var points_1 = [];\r\n                        for (var j = 0; j < interior.length; ++j) {\r\n                            points_1.push(transformPoint(interior[j]));\r\n                        }\r\n                        compoundPath.shape.paths.push(new Polygon({\r\n                            segmentIgnoreThreshold: 1,\r\n                            shape: {\r\n                                points: points_1\r\n                            }\r\n                        }));\r\n                    }\r\n                });\r\n                compoundPath.setStyle(itemStyle);\r\n                compoundPath.style.strokeNoScale = true;\r\n                compoundPath.culling = true;\r\n                compoundPath.ensureState('emphasis').style = emphasisItemStyle;\r\n                compoundPath.ensureState('blur').style = blurItemStyle;\r\n                compoundPath.ensureState('select').style = selectItemStyle;\r\n                var showLabel = false;\r\n                for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n                    var stateName = DISPLAY_STATES[i];\r\n                    if (regionModel.get(stateName === 'normal' ? ['label', 'show'] : [stateName, 'label', 'show'])) {\r\n                        showLabel = true;\r\n                        break;\r\n                    }\r\n                }\r\n                var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\r\n                var itemLayout = data && data.getItemLayout(dataIdx);\r\n                if ((isGeo || isDataNaN && (showLabel))\r\n                    || (itemLayout && itemLayout.showLabel)) {\r\n                    var query = !isGeo ? dataIdx : region.name;\r\n                    var labelFetcher = void 0;\r\n                    if (!data || dataIdx >= 0) {\r\n                        labelFetcher = mapOrGeoModel;\r\n                    }\r\n                    var centerPt = transformPoint(region.center);\r\n                    var textEl = new ZRText({\r\n                        x: centerPt[0],\r\n                        y: centerPt[1],\r\n                        scaleX: 1 / group.scaleX,\r\n                        scaleY: 1 / group.scaleY,\r\n                        z2: 10,\r\n                        silent: true\r\n                    });\r\n                    setLabelStyle(textEl, getLabelStatesModels(regionModel), {\r\n                        labelFetcher: labelFetcher,\r\n                        labelDataIndex: query,\r\n                        defaultText: region.name\r\n                    }, { normal: {\r\n                            align: 'center',\r\n                            verticalAlign: 'middle'\r\n                        } });\r\n                    compoundPath.setTextContent(textEl);\r\n                    compoundPath.setTextConfig({\r\n                        local: true\r\n                    });\r\n                    compoundPath.disableLabelAnimation = true;\r\n                    if (!isFirstDraw) {\r\n                        updateProps(textEl, {\r\n                            scaleX: 1 / targetScaleX,\r\n                            scaleY: 1 / targetScaleY\r\n                        }, mapOrGeoModel);\r\n                    }\r\n                }\r\n                if (data) {\r\n                    data.setItemGraphicEl(dataIdx, regionGroup);\r\n                }\r\n                else {\r\n                    var regionModel_1 = mapOrGeoModel.getRegionModel(region.name);\r\n                    getECData(compoundPath).eventData = {\r\n                        componentType: 'geo',\r\n                        componentIndex: mapOrGeoModel.componentIndex,\r\n                        geoIndex: mapOrGeoModel.componentIndex,\r\n                        name: region.name,\r\n                        region: (regionModel_1 && regionModel_1.option) || {}\r\n                    };\r\n                }\r\n                var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\r\n                groupRegions.push(region);\r\n                regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\r\n                enableHoverEmphasis(regionGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n                regionsGroup.add(regionGroup);\r\n            });\r\n            this._updateController(mapOrGeoModel, ecModel, api);\r\n            this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView);\r\n        };\r\n        MapDraw.prototype.remove = function () {\r\n            this._regionsGroup.removeAll();\r\n            this._backgroundGroup.removeAll();\r\n            this._controller.dispose();\r\n            this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\r\n            this._mapName = null;\r\n            this._controllerHost = null;\r\n        };\r\n        MapDraw.prototype._updateBackground = function (geo) {\r\n            var mapName = geo.map;\r\n            if (this._mapName !== mapName) {\r\n                each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\r\n                    this._backgroundGroup.add(root);\r\n                }, this);\r\n            }\r\n            this._mapName = mapName;\r\n        };\r\n        MapDraw.prototype._updateController = function (mapOrGeoModel, ecModel, api) {\r\n            var geo = mapOrGeoModel.coordinateSystem;\r\n            var controller = this._controller;\r\n            var controllerHost = this._controllerHost;\r\n            controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\r\n            controllerHost.zoom = geo.getZoom();\r\n            controller.enable(mapOrGeoModel.get('roam') || false);\r\n            var mainType = mapOrGeoModel.mainType;\r\n            function makeActionBase() {\r\n                var action = {\r\n                    type: 'geoRoam',\r\n                    componentType: mainType\r\n                };\r\n                action[mainType + 'Id'] = mapOrGeoModel.id;\r\n                return action;\r\n            }\r\n            controller.off('pan').on('pan', function (e) {\r\n                this._mouseDownFlag = false;\r\n                updateViewOnPan(controllerHost, e.dx, e.dy);\r\n                api.dispatchAction(extend(makeActionBase(), {\r\n                    dx: e.dx,\r\n                    dy: e.dy\r\n                }));\r\n            }, this);\r\n            controller.off('zoom').on('zoom', function (e) {\r\n                this._mouseDownFlag = false;\r\n                updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\r\n                api.dispatchAction(extend(makeActionBase(), {\r\n                    zoom: e.scale,\r\n                    originX: e.originX,\r\n                    originY: e.originY\r\n                }));\r\n                var group = this.group;\r\n                this._regionsGroup.traverse(function (el) {\r\n                    var textContent = el.getTextContent();\r\n                    if (textContent) {\r\n                        textContent.scaleX = 1 / group.scaleX;\r\n                        textContent.scaleY = 1 / group.scaleY;\r\n                        textContent.markRedraw();\r\n                    }\r\n                });\r\n            }, this);\r\n            controller.setPointerChecker(function (e, x, y) {\r\n                return geo.getViewRectAfterRoam().contain(x, y)\r\n                    && !onIrrelevantElement(e, api, mapOrGeoModel);\r\n            });\r\n        };\r\n        MapDraw.prototype._updateMapSelectHandler = function (mapOrGeoModel, regionsGroup, api, fromView) {\r\n            var mapDraw = this;\r\n            regionsGroup.off('mousedown');\r\n            if (mapOrGeoModel.get('selectedMode')) {\r\n                regionsGroup.on('mousedown', function () {\r\n                    mapDraw._mouseDownFlag = true;\r\n                });\r\n                regionsGroup.on('click', function (e) {\r\n                    if (!mapDraw._mouseDownFlag) {\r\n                        return;\r\n                    }\r\n                    mapDraw._mouseDownFlag = false;\r\n                });\r\n            }\r\n        };\r\n        return MapDraw;\r\n    }());\n\n    var MapView = (function (_super) {\r\n        __extends(MapView, _super);\r\n        function MapView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MapView.type;\r\n            return _this;\r\n        }\r\n        MapView.prototype.render = function (mapModel, ecModel, api, payload) {\r\n            if (payload && payload.type === 'mapToggleSelect'\r\n                && payload.from === this.uid) {\r\n                return;\r\n            }\r\n            var group = this.group;\r\n            group.removeAll();\r\n            if (mapModel.getHostGeoModel()) {\r\n                return;\r\n            }\r\n            if (!(payload && payload.type === 'geoRoam'\r\n                && payload.componentType === 'series'\r\n                && payload.seriesId === mapModel.id)) {\r\n                if (mapModel.needsDrawMap) {\r\n                    var mapDraw = this._mapDraw || new MapDraw(api);\r\n                    group.add(mapDraw.group);\r\n                    mapDraw.draw(mapModel, ecModel, api, this, payload);\r\n                    this._mapDraw = mapDraw;\r\n                }\r\n                else {\r\n                    this._mapDraw && this._mapDraw.remove();\r\n                    this._mapDraw = null;\r\n                }\r\n            }\r\n            else {\r\n                var mapDraw = this._mapDraw;\r\n                mapDraw && group.add(mapDraw.group);\r\n            }\r\n            mapModel.get('showLegendSymbol') && ecModel.getComponent('legend')\r\n                && this._renderSymbols(mapModel, ecModel, api);\r\n        };\r\n        MapView.prototype.remove = function () {\r\n            this._mapDraw && this._mapDraw.remove();\r\n            this._mapDraw = null;\r\n            this.group.removeAll();\r\n        };\r\n        MapView.prototype.dispose = function () {\r\n            this._mapDraw && this._mapDraw.remove();\r\n            this._mapDraw = null;\r\n        };\r\n        MapView.prototype._renderSymbols = function (mapModel, ecModel, api) {\r\n            var originalData = mapModel.originalData;\r\n            var group = this.group;\r\n            originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\r\n                if (isNaN(value)) {\r\n                    return;\r\n                }\r\n                var layout = originalData.getItemLayout(originalDataIndex);\r\n                if (!layout || !layout.point) {\r\n                    return;\r\n                }\r\n                var point = layout.point;\r\n                var offset = layout.offset;\r\n                var circle = new Circle({\r\n                    style: {\r\n                        fill: mapModel.getData().getVisual('style').fill\r\n                    },\r\n                    shape: {\r\n                        cx: point[0] + offset * 9,\r\n                        cy: point[1],\r\n                        r: 3\r\n                    },\r\n                    silent: true,\r\n                    z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0)\r\n                });\r\n                if (!offset) {\r\n                    var fullData = mapModel.mainSeries.getData();\r\n                    var name_1 = originalData.getName(originalDataIndex);\r\n                    var fullIndex_1 = fullData.indexOfName(name_1);\r\n                    var itemModel = originalData.getItemModel(originalDataIndex);\r\n                    var labelModel = itemModel.getModel('label');\r\n                    var regionGroup = fullData.getItemGraphicEl(fullIndex_1);\r\n                    setLabelStyle(circle, getLabelStatesModels(itemModel), {\r\n                        labelFetcher: {\r\n                            getFormattedLabel: function (idx, state) {\r\n                                return mapModel.getFormattedLabel(fullIndex_1, state);\r\n                            }\r\n                        }\r\n                    });\r\n                    circle.disableLabelAnimation = true;\r\n                    if (!labelModel.get('position')) {\r\n                        circle.setTextConfig({\r\n                            position: 'bottom'\r\n                        });\r\n                    }\r\n                    regionGroup.onHoverStateChange = function (toState) {\r\n                        circle.useState(toState);\r\n                    };\r\n                }\r\n                group.add(circle);\r\n            });\r\n        };\r\n        MapView.type = 'map';\r\n        return MapView;\r\n    }(ChartView));\r\n    ChartView.registerClass(MapView);\n\n    function updateCenterAndZoom(view, payload, zoomLimit) {\r\n        var previousZoom = view.getZoom();\r\n        var center = view.getCenter();\r\n        var zoom = payload.zoom;\r\n        var point = view.dataToPoint(center);\r\n        if (payload.dx != null && payload.dy != null) {\r\n            point[0] -= payload.dx;\r\n            point[1] -= payload.dy;\r\n            view.setCenter(view.pointToData(point));\r\n        }\r\n        if (zoom != null) {\r\n            if (zoomLimit) {\r\n                var zoomMin = zoomLimit.min || 0;\r\n                var zoomMax = zoomLimit.max || Infinity;\r\n                zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\r\n            }\r\n            view.scaleX *= zoom;\r\n            view.scaleY *= zoom;\r\n            var fixX = (payload.originX - view.x) * (zoom - 1);\r\n            var fixY = (payload.originY - view.y) * (zoom - 1);\r\n            view.x -= fixX;\r\n            view.y -= fixY;\r\n            view.updateTransform();\r\n            view.setCenter(view.pointToData(point));\r\n            view.setZoom(zoom * previousZoom);\r\n        }\r\n        return {\r\n            center: view.getCenter(),\r\n            zoom: view.getZoom()\r\n        };\r\n    }\n\n    registerAction({\r\n        type: 'geoRoam',\r\n        event: 'geoRoam',\r\n        update: 'updateTransform'\r\n    }, function (payload, ecModel) {\r\n        var componentType = payload.componentType || 'series';\r\n        ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n            var geo = componentModel.coordinateSystem;\r\n            if (geo.type !== 'geo') {\r\n                return;\r\n            }\r\n            var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));\r\n            componentModel.setCenter\r\n                && componentModel.setCenter(res.center);\r\n            componentModel.setZoom\r\n                && componentModel.setZoom(res.zoom);\r\n            if (componentType === 'series') {\r\n                each(componentModel.seriesGroup, function (seriesModel) {\r\n                    seriesModel.setCenter(res.center);\r\n                    seriesModel.setZoom(res.zoom);\r\n                });\r\n            }\r\n        });\r\n    });\n\n    var v2ApplyTransform = applyTransform;\r\n    var View = (function (_super) {\r\n        __extends(View, _super);\r\n        function View(name) {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = 'view';\r\n            _this.dimensions = ['x', 'y'];\r\n            _this._roamTransformable = new Transformable();\r\n            _this._rawTransformable = new Transformable();\r\n            _this.name = name;\r\n            return _this;\r\n        }\r\n        View.prototype.setBoundingRect = function (x, y, width, height) {\r\n            this._rect = new BoundingRect(x, y, width, height);\r\n            return this._rect;\r\n        };\r\n        View.prototype.getBoundingRect = function () {\r\n            return this._rect;\r\n        };\r\n        View.prototype.setViewRect = function (x, y, width, height) {\r\n            this.transformTo(x, y, width, height);\r\n            this._viewRect = new BoundingRect(x, y, width, height);\r\n        };\r\n        View.prototype.transformTo = function (x, y, width, height) {\r\n            var rect = this.getBoundingRect();\r\n            var rawTransform = this._rawTransformable;\r\n            rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\r\n            rawTransform.decomposeTransform();\r\n            this._updateTransform();\r\n        };\r\n        View.prototype.setCenter = function (centerCoord) {\r\n            if (!centerCoord) {\r\n                return;\r\n            }\r\n            this._center = centerCoord;\r\n            this._updateCenterAndZoom();\r\n        };\r\n        View.prototype.setZoom = function (zoom) {\r\n            zoom = zoom || 1;\r\n            var zoomLimit = this.zoomLimit;\r\n            if (zoomLimit) {\r\n                if (zoomLimit.max != null) {\r\n                    zoom = Math.min(zoomLimit.max, zoom);\r\n                }\r\n                if (zoomLimit.min != null) {\r\n                    zoom = Math.max(zoomLimit.min, zoom);\r\n                }\r\n            }\r\n            this._zoom = zoom;\r\n            this._updateCenterAndZoom();\r\n        };\r\n        View.prototype.getDefaultCenter = function () {\r\n            var rawRect = this.getBoundingRect();\r\n            var cx = rawRect.x + rawRect.width / 2;\r\n            var cy = rawRect.y + rawRect.height / 2;\r\n            return [cx, cy];\r\n        };\r\n        View.prototype.getCenter = function () {\r\n            return this._center || this.getDefaultCenter();\r\n        };\r\n        View.prototype.getZoom = function () {\r\n            return this._zoom || 1;\r\n        };\r\n        View.prototype.getRoamTransform = function () {\r\n            return this._roamTransformable.getLocalTransform();\r\n        };\r\n        View.prototype._updateCenterAndZoom = function () {\r\n            var rawTransformMatrix = this._rawTransformable.getLocalTransform();\r\n            var roamTransform = this._roamTransformable;\r\n            var defaultCenter = this.getDefaultCenter();\r\n            var center = this.getCenter();\r\n            var zoom = this.getZoom();\r\n            center = applyTransform([], center, rawTransformMatrix);\r\n            defaultCenter = applyTransform([], defaultCenter, rawTransformMatrix);\r\n            roamTransform.originX = center[0];\r\n            roamTransform.originY = center[1];\r\n            roamTransform.x = defaultCenter[0] - center[0];\r\n            roamTransform.y = defaultCenter[1] - center[1];\r\n            roamTransform.scaleX = roamTransform.scaleY = zoom;\r\n            this._updateTransform();\r\n        };\r\n        View.prototype._updateTransform = function () {\r\n            var roamTransformable = this._roamTransformable;\r\n            var rawTransformable = this._rawTransformable;\r\n            rawTransformable.parent = roamTransformable;\r\n            roamTransformable.updateTransform();\r\n            rawTransformable.updateTransform();\r\n            copy$1(this.transform || (this.transform = []), rawTransformable.transform || create$1());\r\n            this._rawTransform = rawTransformable.getLocalTransform();\r\n            this.invTransform = this.invTransform || [];\r\n            invert(this.invTransform, this.transform);\r\n            this.decomposeTransform();\r\n        };\r\n        View.prototype.getTransformInfo = function () {\r\n            var roamTransform = this._roamTransformable.transform;\r\n            var rawTransformable = this._rawTransformable;\r\n            return {\r\n                roamTransform: roamTransform ? slice(roamTransform) : create$1(),\r\n                rawScaleX: rawTransformable.scaleX,\r\n                rawScaleY: rawTransformable.scaleY,\r\n                rawX: rawTransformable.x,\r\n                rawY: rawTransformable.y\r\n            };\r\n        };\r\n        View.prototype.getViewRect = function () {\r\n            return this._viewRect;\r\n        };\r\n        View.prototype.getViewRectAfterRoam = function () {\r\n            var rect = this.getBoundingRect().clone();\r\n            rect.applyTransform(this.transform);\r\n            return rect;\r\n        };\r\n        View.prototype.dataToPoint = function (data, noRoam, out) {\r\n            var transform = noRoam ? this._rawTransform : this.transform;\r\n            out = out || [];\r\n            return transform\r\n                ? v2ApplyTransform(out, data, transform)\r\n                : copy(out, data);\r\n        };\r\n        View.prototype.pointToData = function (point) {\r\n            var invTransform = this.invTransform;\r\n            return invTransform\r\n                ? v2ApplyTransform([], point, invTransform)\r\n                : [point[0], point[1]];\r\n        };\r\n        View.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var coordSys = getCoordSys(finder);\r\n            return coordSys === this ? coordSys.dataToPoint(value) : null;\r\n        };\r\n        View.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n            var coordSys = getCoordSys(finder);\r\n            return coordSys === this ? coordSys.pointToData(pixel) : null;\r\n        };\r\n        View.prototype.containPoint = function (point) {\r\n            return this.getViewRectAfterRoam().contain(point[0], point[1]);\r\n        };\r\n        View.dimensions = ['x', 'y'];\r\n        return View;\r\n    }(Transformable));\r\n    function getCoordSys(finder) {\r\n        var seriesModel = finder.seriesModel;\r\n        return seriesModel ? seriesModel.coordinateSystem : null;\r\n    }\n\n    var Geo = (function (_super) {\r\n        __extends(Geo, _super);\r\n        function Geo(name, map, nameMap, invertLongitute) {\r\n            var _this = _super.call(this, name) || this;\r\n            _this.dimensions = ['lng', 'lat'];\r\n            _this.type = 'geo';\r\n            _this.map = map;\r\n            var source = geoSourceManager.load(map, nameMap);\r\n            _this._nameCoordMap = source.nameCoordMap;\r\n            _this._regionsMap = source.regionsMap;\r\n            _this._invertLongitute = invertLongitute == null ? true : invertLongitute;\r\n            _this.regions = source.regions;\r\n            _this._rect = source.boundingRect;\r\n            return _this;\r\n        }\r\n        Geo.prototype.containCoord = function (coord) {\r\n            var regions = this.regions;\r\n            for (var i = 0; i < regions.length; i++) {\r\n                if (regions[i].contain(coord)) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Geo.prototype.transformTo = function (x, y, width, height) {\r\n            var rect = this.getBoundingRect();\r\n            var invertLongitute = this._invertLongitute;\r\n            rect = rect.clone();\r\n            if (invertLongitute) {\r\n                rect.y = -rect.y - rect.height;\r\n            }\r\n            var rawTransformable = this._rawTransformable;\r\n            rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\r\n            rawTransformable.decomposeTransform();\r\n            if (invertLongitute) {\r\n                rawTransformable.scaleY = -rawTransformable.scaleY;\r\n            }\r\n            rawTransformable.updateTransform();\r\n            this._updateTransform();\r\n        };\r\n        Geo.prototype.getRegion = function (name) {\r\n            return this._regionsMap.get(name);\r\n        };\r\n        Geo.prototype.getRegionByCoord = function (coord) {\r\n            var regions = this.regions;\r\n            for (var i = 0; i < regions.length; i++) {\r\n                if (regions[i].contain(coord)) {\r\n                    return regions[i];\r\n                }\r\n            }\r\n        };\r\n        Geo.prototype.addGeoCoord = function (name, geoCoord) {\r\n            this._nameCoordMap.set(name, geoCoord);\r\n        };\r\n        Geo.prototype.getGeoCoord = function (name) {\r\n            return this._nameCoordMap.get(name);\r\n        };\r\n        Geo.prototype.getBoundingRect = function () {\r\n            return this._rect;\r\n        };\r\n        Geo.prototype.dataToPoint = function (data, noRoam, out) {\r\n            if (typeof data === 'string') {\r\n                data = this.getGeoCoord(data);\r\n            }\r\n            if (data) {\r\n                return View.prototype.dataToPoint.call(this, data, noRoam, out);\r\n            }\r\n        };\r\n        Geo.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var coordSys = getCoordSys$1(finder);\r\n            return coordSys === this ? coordSys.dataToPoint(value) : null;\r\n        };\r\n        Geo.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n            var coordSys = getCoordSys$1(finder);\r\n            return coordSys === this ? coordSys.pointToData(pixel) : null;\r\n        };\r\n        return Geo;\r\n    }(View));\r\n    mixin(Geo, View);\r\n    function getCoordSys$1(finder) {\r\n        var geoModel = finder.geoModel;\r\n        var seriesModel = finder.seriesModel;\r\n        return geoModel\r\n            ? geoModel.coordinateSystem\r\n            : seriesModel\r\n                ? (seriesModel.coordinateSystem\r\n                    || (seriesModel.getReferringComponents('geo', SINGLE_REFERRING).models[0] || {}).coordinateSystem)\r\n                : null;\r\n    }\n\n    function resizeGeo(geoModel, api) {\r\n        var boundingCoords = geoModel.get('boundingCoords');\r\n        if (boundingCoords != null) {\r\n            var leftTop = boundingCoords[0];\r\n            var rightBottom = boundingCoords[1];\r\n            if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {\r\n                if (__DEV__) {\r\n                    console.error('Invalid boundingCoords');\r\n                }\r\n            }\r\n            else {\r\n                this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\r\n            }\r\n        }\r\n        var rect = this.getBoundingRect();\r\n        var centerOption = geoModel.get('layoutCenter');\r\n        var sizeOption = geoModel.get('layoutSize');\r\n        var viewWidth = api.getWidth();\r\n        var viewHeight = api.getHeight();\r\n        var aspect = rect.width / rect.height * this.aspectScale;\r\n        var useCenterAndSize = false;\r\n        var center;\r\n        var size;\r\n        if (centerOption && sizeOption) {\r\n            center = [\r\n                parsePercent$2(centerOption[0], viewWidth),\r\n                parsePercent$2(centerOption[1], viewHeight)\r\n            ];\r\n            size = parsePercent$2(sizeOption, Math.min(viewWidth, viewHeight));\r\n            if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\r\n                useCenterAndSize = true;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    console.warn('Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead.');\r\n                }\r\n            }\r\n        }\r\n        var viewRect;\r\n        if (useCenterAndSize) {\r\n            viewRect = {};\r\n            if (aspect > 1) {\r\n                viewRect.width = size;\r\n                viewRect.height = size / aspect;\r\n            }\r\n            else {\r\n                viewRect.height = size;\r\n                viewRect.width = size * aspect;\r\n            }\r\n            viewRect.y = center[1] - viewRect.height / 2;\r\n            viewRect.x = center[0] - viewRect.width / 2;\r\n        }\r\n        else {\r\n            var boxLayoutOption = geoModel.getBoxLayoutParams();\r\n            boxLayoutOption.aspect = aspect;\r\n            viewRect = getLayoutRect(boxLayoutOption, {\r\n                width: viewWidth,\r\n                height: viewHeight\r\n            });\r\n        }\r\n        this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\r\n        this.setCenter(geoModel.get('center'));\r\n        this.setZoom(geoModel.get('zoom'));\r\n    }\r\n    function setGeoCoords(geo, model) {\r\n        each(model.get('geoCoord'), function (geoCoord, name) {\r\n            geo.addGeoCoord(name, geoCoord);\r\n        });\r\n    }\r\n    var GeoCreator = (function () {\r\n        function GeoCreator() {\r\n            this.dimensions = Geo.prototype.dimensions;\r\n        }\r\n        GeoCreator.prototype.create = function (ecModel, api) {\r\n            var geoList = [];\r\n            ecModel.eachComponent('geo', function (geoModel, idx) {\r\n                var name = geoModel.get('map');\r\n                var aspectScale = geoModel.get('aspectScale');\r\n                var invertLongitute = true;\r\n                var mapRecords = mapDataStorage.retrieveMap(name);\r\n                if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\r\n                    aspectScale == null && (aspectScale = 1);\r\n                    invertLongitute = false;\r\n                }\r\n                else {\r\n                    aspectScale == null && (aspectScale = 0.75);\r\n                }\r\n                var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\r\n                geo.aspectScale = aspectScale;\r\n                geo.zoomLimit = geoModel.get('scaleLimit');\r\n                geoList.push(geo);\r\n                geoModel.coordinateSystem = geo;\r\n                geo.model = geoModel;\r\n                geo.resize = resizeGeo;\r\n                geo.resize(geoModel, api);\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var coordSys = seriesModel.get('coordinateSystem');\r\n                if (coordSys === 'geo') {\r\n                    var geoIndex = seriesModel.get('geoIndex') || 0;\r\n                    seriesModel.coordinateSystem = geoList[geoIndex];\r\n                }\r\n            });\r\n            var mapModelGroupBySeries = {};\r\n            ecModel.eachSeriesByType('map', function (seriesModel) {\r\n                if (!seriesModel.getHostGeoModel()) {\r\n                    var mapType = seriesModel.getMapType();\r\n                    mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\r\n                    mapModelGroupBySeries[mapType].push(seriesModel);\r\n                }\r\n            });\r\n            each(mapModelGroupBySeries, function (mapSeries, mapType) {\r\n                var nameMapList = map(mapSeries, function (singleMapSeries) {\r\n                    return singleMapSeries.get('nameMap');\r\n                });\r\n                var geo = new Geo(mapType, mapType, mergeAll(nameMapList));\r\n                geo.zoomLimit = retrieve.apply(null, map(mapSeries, function (singleMapSeries) {\r\n                    return singleMapSeries.get('scaleLimit');\r\n                }));\r\n                geoList.push(geo);\r\n                geo.resize = resizeGeo;\r\n                geo.aspectScale = mapSeries[0].get('aspectScale');\r\n                geo.resize(mapSeries[0], api);\r\n                each(mapSeries, function (singleMapSeries) {\r\n                    singleMapSeries.coordinateSystem = geo;\r\n                    setGeoCoords(geo, singleMapSeries);\r\n                });\r\n            });\r\n            return geoList;\r\n        };\r\n        GeoCreator.prototype.getFilledRegions = function (originRegionArr, mapName, nameMap) {\r\n            var regionsArr = (originRegionArr || []).slice();\r\n            var dataNameMap = createHashMap();\r\n            for (var i = 0; i < regionsArr.length; i++) {\r\n                dataNameMap.set(regionsArr[i].name, regionsArr[i]);\r\n            }\r\n            var source = geoSourceManager.load(mapName, nameMap);\r\n            each(source.regions, function (region) {\r\n                var name = region.name;\r\n                !dataNameMap.get(name) && regionsArr.push({ name: name });\r\n            });\r\n            return regionsArr;\r\n        };\r\n        return GeoCreator;\r\n    }());\r\n    var geoCreator = new GeoCreator();\r\n    registerCoordinateSystem('geo', geoCreator);\n\n    function mapSymbolLayout(ecModel) {\r\n        var processedMapType = {};\r\n        ecModel.eachSeriesByType('map', function (mapSeries) {\r\n            var mapType = mapSeries.getMapType();\r\n            if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\r\n                return;\r\n            }\r\n            var mapSymbolOffsets = {};\r\n            each(mapSeries.seriesGroup, function (subMapSeries) {\r\n                var geo = subMapSeries.coordinateSystem;\r\n                var data = subMapSeries.originalData;\r\n                if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\r\n                    data.each(data.mapDimension('value'), function (value, idx) {\r\n                        var name = data.getName(idx);\r\n                        var region = geo.getRegion(name);\r\n                        if (!region || isNaN(value)) {\r\n                            return;\r\n                        }\r\n                        var offset = mapSymbolOffsets[name] || 0;\r\n                        var point = geo.dataToPoint(region.center);\r\n                        mapSymbolOffsets[name] = offset + 1;\r\n                        data.setItemLayout(idx, {\r\n                            point: point,\r\n                            offset: offset\r\n                        });\r\n                    });\r\n                }\r\n            });\r\n            var data = mapSeries.getData();\r\n            data.each(function (idx) {\r\n                var name = data.getName(idx);\r\n                var layout = data.getItemLayout(idx) || {};\r\n                layout.showLabel = !mapSymbolOffsets[name];\r\n                data.setItemLayout(idx, layout);\r\n            });\r\n            processedMapType[mapType] = true;\r\n        });\r\n    }\n\n    function dataStatistics(datas, statisticType) {\r\n        var dataNameMap = {};\r\n        each(datas, function (data) {\r\n            data.each(data.mapDimension('value'), function (value, idx) {\r\n                var mapKey = 'ec-' + data.getName(idx);\r\n                dataNameMap[mapKey] = dataNameMap[mapKey] || [];\r\n                if (!isNaN(value)) {\r\n                    dataNameMap[mapKey].push(value);\r\n                }\r\n            });\r\n        });\r\n        return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\r\n            var mapKey = 'ec-' + datas[0].getName(idx);\r\n            var sum = 0;\r\n            var min = Infinity;\r\n            var max = -Infinity;\r\n            var len = dataNameMap[mapKey].length;\r\n            for (var i = 0; i < len; i++) {\r\n                min = Math.min(min, dataNameMap[mapKey][i]);\r\n                max = Math.max(max, dataNameMap[mapKey][i]);\r\n                sum += dataNameMap[mapKey][i];\r\n            }\r\n            var result;\r\n            if (statisticType === 'min') {\r\n                result = min;\r\n            }\r\n            else if (statisticType === 'max') {\r\n                result = max;\r\n            }\r\n            else if (statisticType === 'average') {\r\n                result = sum / len;\r\n            }\r\n            else {\r\n                result = sum;\r\n            }\r\n            return len === 0 ? NaN : result;\r\n        });\r\n    }\r\n    function mapDataStatistic(ecModel) {\r\n        var seriesGroups = {};\r\n        ecModel.eachSeriesByType('map', function (seriesModel) {\r\n            var hostGeoModel = seriesModel.getHostGeoModel();\r\n            var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\r\n            (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\r\n        });\r\n        each(seriesGroups, function (seriesList, key) {\r\n            var data = dataStatistics(map(seriesList, function (seriesModel) {\r\n                return seriesModel.getData();\r\n            }), seriesList[0].get('mapValueCalculation'));\r\n            for (var i = 0; i < seriesList.length; i++) {\r\n                seriesList[i].originalData = seriesList[i].getData();\r\n            }\r\n            for (var i = 0; i < seriesList.length; i++) {\r\n                seriesList[i].seriesGroup = seriesList;\r\n                seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\r\n                seriesList[i].setData(data.cloneShallow());\r\n                seriesList[i].mainSeries = seriesList[0];\r\n            }\r\n        });\r\n    }\n\n    registerLayout(mapSymbolLayout);\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\r\n    createLegacyDataSelectAction('map', registerAction);\n\n    var inner$8 = makeInner();\r\n    function linkList(opt) {\r\n        var mainData = opt.mainData;\r\n        var datas = opt.datas;\r\n        if (!datas) {\r\n            datas = { main: mainData };\r\n            opt.datasAttr = { main: 'data' };\r\n        }\r\n        opt.datas = opt.mainData = null;\r\n        linkAll(mainData, datas, opt);\r\n        each(datas, function (data) {\r\n            each(mainData.TRANSFERABLE_METHODS, function (methodName) {\r\n                data.wrapMethod(methodName, curry(transferInjection, opt));\r\n            });\r\n        });\r\n        mainData.wrapMethod('cloneShallow', curry(cloneShallowInjection, opt));\r\n        each(mainData.CHANGABLE_METHODS, function (methodName) {\r\n            mainData.wrapMethod(methodName, curry(changeInjection, opt));\r\n        });\r\n        assert(datas[mainData.dataType] === mainData);\r\n    }\r\n    function transferInjection(opt, res) {\r\n        if (isMainData(this)) {\r\n            var datas = extend({}, inner$8(this).datas);\r\n            datas[this.dataType] = res;\r\n            linkAll(res, datas, opt);\r\n        }\r\n        else {\r\n            linkSingle(res, this.dataType, inner$8(this).mainData, opt);\r\n        }\r\n        return res;\r\n    }\r\n    function changeInjection(opt, res) {\r\n        opt.struct && opt.struct.update();\r\n        return res;\r\n    }\r\n    function cloneShallowInjection(opt, res) {\r\n        each(inner$8(res).datas, function (data, dataType) {\r\n            data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\r\n        });\r\n        return res;\r\n    }\r\n    function getLinkedData(dataType) {\r\n        var mainData = inner$8(this).mainData;\r\n        return (dataType == null || mainData == null)\r\n            ? mainData\r\n            : inner$8(mainData).datas[dataType];\r\n    }\r\n    function getLinkedDataAll() {\r\n        var mainData = inner$8(this).mainData;\r\n        return (mainData == null)\r\n            ? [{ data: mainData }]\r\n            : map(keys(inner$8(mainData).datas), function (type) {\r\n                return {\r\n                    type: type,\r\n                    data: inner$8(mainData).datas[type]\r\n                };\r\n            });\r\n    }\r\n    function isMainData(data) {\r\n        return inner$8(data).mainData === data;\r\n    }\r\n    function linkAll(mainData, datas, opt) {\r\n        inner$8(mainData).datas = {};\r\n        each(datas, function (data, dataType) {\r\n            linkSingle(data, dataType, mainData, opt);\r\n        });\r\n    }\r\n    function linkSingle(data, dataType, mainData, opt) {\r\n        inner$8(mainData).datas[dataType] = data;\r\n        inner$8(data).mainData = mainData;\r\n        data.dataType = dataType;\r\n        if (opt.struct) {\r\n            data[opt.structAttr] = opt.struct;\r\n            opt.struct[opt.datasAttr[dataType]] = data;\r\n        }\r\n        data.getLinkedData = getLinkedData;\r\n        data.getLinkedDataAll = getLinkedDataAll;\r\n    }\n\n    var TreeNode = (function () {\r\n        function TreeNode(name, hostTree) {\r\n            this.depth = 0;\r\n            this.height = 0;\r\n            this.dataIndex = -1;\r\n            this.children = [];\r\n            this.viewChildren = [];\r\n            this.isExpand = false;\r\n            this.name = name || '';\r\n            this.hostTree = hostTree;\r\n        }\r\n        TreeNode.prototype.isRemoved = function () {\r\n            return this.dataIndex < 0;\r\n        };\r\n        TreeNode.prototype.eachNode = function (options, cb, context) {\r\n            if (typeof options === 'function') {\r\n                context = cb;\r\n                cb = options;\r\n                options = null;\r\n            }\r\n            options = options || {};\r\n            if (isString(options)) {\r\n                options = { order: options };\r\n            }\r\n            var order = options.order || 'preorder';\r\n            var children = this[options.attr || 'children'];\r\n            var suppressVisitSub;\r\n            order === 'preorder' && (suppressVisitSub = cb.call(context, this));\r\n            for (var i = 0; !suppressVisitSub && i < children.length; i++) {\r\n                children[i].eachNode(options, cb, context);\r\n            }\r\n            order === 'postorder' && cb.call(context, this);\r\n        };\r\n        TreeNode.prototype.updateDepthAndHeight = function (depth) {\r\n            var height = 0;\r\n            this.depth = depth;\r\n            for (var i = 0; i < this.children.length; i++) {\r\n                var child = this.children[i];\r\n                child.updateDepthAndHeight(depth + 1);\r\n                if (child.height > height) {\r\n                    height = child.height;\r\n                }\r\n            }\r\n            this.height = height + 1;\r\n        };\r\n        TreeNode.prototype.getNodeById = function (id) {\r\n            if (this.getId() === id) {\r\n                return this;\r\n            }\r\n            for (var i = 0, children = this.children, len = children.length; i < len; i++) {\r\n                var res = children[i].getNodeById(id);\r\n                if (res) {\r\n                    return res;\r\n                }\r\n            }\r\n        };\r\n        TreeNode.prototype.contains = function (node) {\r\n            if (node === this) {\r\n                return true;\r\n            }\r\n            for (var i = 0, children = this.children, len = children.length; i < len; i++) {\r\n                var res = children[i].contains(node);\r\n                if (res) {\r\n                    return res;\r\n                }\r\n            }\r\n        };\r\n        TreeNode.prototype.getAncestors = function (includeSelf) {\r\n            var ancestors = [];\r\n            var node = includeSelf ? this : this.parentNode;\r\n            while (node) {\r\n                ancestors.push(node);\r\n                node = node.parentNode;\r\n            }\r\n            ancestors.reverse();\r\n            return ancestors;\r\n        };\r\n        TreeNode.prototype.getAncestorsIndices = function () {\r\n            var indices = [];\r\n            var currNode = this;\r\n            while (currNode) {\r\n                indices.push(currNode.dataIndex);\r\n                currNode = currNode.parentNode;\r\n            }\r\n            indices.reverse();\r\n            return indices;\r\n        };\r\n        TreeNode.prototype.getDescendantIndices = function () {\r\n            var indices = [];\r\n            this.eachNode(function (childNode) {\r\n                indices.push(childNode.dataIndex);\r\n            });\r\n            return indices;\r\n        };\r\n        TreeNode.prototype.getValue = function (dimension) {\r\n            var data = this.hostTree.data;\r\n            return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\r\n        };\r\n        TreeNode.prototype.setLayout = function (layout, merge) {\r\n            this.dataIndex >= 0\r\n                && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\r\n        };\r\n        TreeNode.prototype.getLayout = function () {\r\n            return this.hostTree.data.getItemLayout(this.dataIndex);\r\n        };\r\n        TreeNode.prototype.getModel = function (path) {\r\n            if (this.dataIndex < 0) {\r\n                return;\r\n            }\r\n            var hostTree = this.hostTree;\r\n            var itemModel = hostTree.data.getItemModel(this.dataIndex);\r\n            return itemModel.getModel(path);\r\n        };\r\n        TreeNode.prototype.getLevelModel = function () {\r\n            return (this.hostTree.levelModels || [])[this.depth];\r\n        };\r\n        TreeNode.prototype.setVisual = function (key, value) {\r\n            this.dataIndex >= 0\r\n                && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\r\n        };\r\n        TreeNode.prototype.getVisual = function (key) {\r\n            return this.hostTree.data.getItemVisual(this.dataIndex, key);\r\n        };\r\n        TreeNode.prototype.getRawIndex = function () {\r\n            return this.hostTree.data.getRawIndex(this.dataIndex);\r\n        };\r\n        TreeNode.prototype.getId = function () {\r\n            return this.hostTree.data.getId(this.dataIndex);\r\n        };\r\n        TreeNode.prototype.isAncestorOf = function (node) {\r\n            var parent = node.parentNode;\r\n            while (parent) {\r\n                if (parent === this) {\r\n                    return true;\r\n                }\r\n                parent = parent.parentNode;\r\n            }\r\n            return false;\r\n        };\r\n        TreeNode.prototype.isDescendantOf = function (node) {\r\n            return node !== this && node.isAncestorOf(this);\r\n        };\r\n        return TreeNode;\r\n    }());\r\n    var Tree = (function () {\r\n        function Tree(hostModel) {\r\n            this.type = 'tree';\r\n            this._nodes = [];\r\n            this.hostModel = hostModel;\r\n        }\r\n        Tree.prototype.eachNode = function (options, cb, context) {\r\n            this.root.eachNode(options, cb, context);\r\n        };\r\n        Tree.prototype.getNodeByDataIndex = function (dataIndex) {\r\n            var rawIndex = this.data.getRawIndex(dataIndex);\r\n            return this._nodes[rawIndex];\r\n        };\r\n        Tree.prototype.getNodeById = function (name) {\r\n            return this.root.getNodeById(name);\r\n        };\r\n        Tree.prototype.update = function () {\r\n            var data = this.data;\r\n            var nodes = this._nodes;\r\n            for (var i = 0, len = nodes.length; i < len; i++) {\r\n                nodes[i].dataIndex = -1;\r\n            }\r\n            for (var i = 0, len = data.count(); i < len; i++) {\r\n                nodes[data.getRawIndex(i)].dataIndex = i;\r\n            }\r\n        };\r\n        Tree.prototype.clearLayouts = function () {\r\n            this.data.clearItemLayouts();\r\n        };\r\n        Tree.createTree = function (dataRoot, hostModel, beforeLink) {\r\n            var tree = new Tree(hostModel);\r\n            var listData = [];\r\n            var dimMax = 1;\r\n            buildHierarchy(dataRoot);\r\n            function buildHierarchy(dataNode, parentNode) {\r\n                var value = dataNode.value;\r\n                dimMax = Math.max(dimMax, isArray(value) ? value.length : 1);\r\n                listData.push(dataNode);\r\n                var node = new TreeNode(convertOptionIdName(dataNode.name, ''), tree);\r\n                parentNode\r\n                    ? addChild(node, parentNode)\r\n                    : (tree.root = node);\r\n                tree._nodes.push(node);\r\n                var children = dataNode.children;\r\n                if (children) {\r\n                    for (var i = 0; i < children.length; i++) {\r\n                        buildHierarchy(children[i], node);\r\n                    }\r\n                }\r\n            }\r\n            tree.root.updateDepthAndHeight(0);\r\n            var dimensionsInfo = createDimensions(listData, {\r\n                coordDimensions: ['value'],\r\n                dimensionsCount: dimMax\r\n            });\r\n            var list = new List(dimensionsInfo, hostModel);\r\n            list.initData(listData);\r\n            beforeLink && beforeLink(list);\r\n            linkList({\r\n                mainData: list,\r\n                struct: tree,\r\n                structAttr: 'tree'\r\n            });\r\n            tree.update();\r\n            return tree;\r\n        };\r\n        return Tree;\r\n    }());\r\n    function addChild(child, node) {\r\n        var children = node.children;\r\n        if (child.parentNode === node) {\r\n            return;\r\n        }\r\n        children.push(child);\r\n        child.parentNode = node;\r\n    }\n\n    var TreeSeriesModel = (function (_super) {\r\n        __extends(TreeSeriesModel, _super);\r\n        function TreeSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.hasSymbolVisual = true;\r\n            _this.ignoreStyleOnData = true;\r\n            return _this;\r\n        }\r\n        TreeSeriesModel.prototype.getInitialData = function (option) {\r\n            var root = {\r\n                name: option.name,\r\n                children: option.data\r\n            };\r\n            var leaves = option.leaves || {};\r\n            var leavesModel = new Model(leaves, this, this.ecModel);\r\n            var tree = Tree.createTree(root, this, beforeLink);\r\n            function beforeLink(nodeData) {\r\n                nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n                    var node = tree.getNodeByDataIndex(idx);\r\n                    if (!node.children.length || !node.isExpand) {\r\n                        model.parentModel = leavesModel;\r\n                    }\r\n                    return model;\r\n                });\r\n            }\r\n            var treeDepth = 0;\r\n            tree.eachNode('preorder', function (node) {\r\n                if (node.depth > treeDepth) {\r\n                    treeDepth = node.depth;\r\n                }\r\n            });\r\n            var expandAndCollapse = option.expandAndCollapse;\r\n            var expandTreeDepth = (expandAndCollapse && option.initialTreeDepth >= 0)\r\n                ? option.initialTreeDepth : treeDepth;\r\n            tree.root.eachNode('preorder', function (node) {\r\n                var item = node.hostTree.data.getRawDataItem(node.dataIndex);\r\n                node.isExpand = (item && item.collapsed != null)\r\n                    ? !item.collapsed\r\n                    : node.depth <= expandTreeDepth;\r\n            });\r\n            return tree.data;\r\n        };\r\n        TreeSeriesModel.prototype.getOrient = function () {\r\n            var orient = this.get('orient');\r\n            if (orient === 'horizontal') {\r\n                orient = 'LR';\r\n            }\r\n            else if (orient === 'vertical') {\r\n                orient = 'TB';\r\n            }\r\n            return orient;\r\n        };\r\n        TreeSeriesModel.prototype.setZoom = function (zoom) {\r\n            this.option.zoom = zoom;\r\n        };\r\n        TreeSeriesModel.prototype.setCenter = function (center) {\r\n            this.option.center = center;\r\n        };\r\n        TreeSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var tree = this.getData().tree;\r\n            var realRoot = tree.root.children[0];\r\n            var node = tree.getNodeByDataIndex(dataIndex);\r\n            var value = node.getValue();\r\n            var name = node.name;\r\n            while (node && (node !== realRoot)) {\r\n                name = node.parentNode.name + '.' + name;\r\n                node = node.parentNode;\r\n            }\r\n            return createTooltipMarkup('nameValue', {\r\n                name: name,\r\n                value: value,\r\n                noValue: isNaN(value) || value == null\r\n            });\r\n        };\r\n        TreeSeriesModel.type = 'series.tree';\r\n        TreeSeriesModel.layoutMode = 'box';\r\n        TreeSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'view',\r\n            left: '12%',\r\n            top: '12%',\r\n            right: '12%',\r\n            bottom: '12%',\r\n            layout: 'orthogonal',\r\n            edgeShape: 'curve',\r\n            edgeForkPosition: '50%',\r\n            roam: false,\r\n            nodeScaleRatio: 0.4,\r\n            center: null,\r\n            zoom: 1,\r\n            orient: 'LR',\r\n            symbol: 'emptyCircle',\r\n            symbolSize: 7,\r\n            expandAndCollapse: true,\r\n            initialTreeDepth: 2,\r\n            lineStyle: {\r\n                color: '#ccc',\r\n                width: 1.5,\r\n                curveness: 0.5\r\n            },\r\n            itemStyle: {\r\n                color: 'lightsteelblue',\r\n                borderColor: '#c23531',\r\n                borderWidth: 1.5\r\n            },\r\n            label: {\r\n                show: true\r\n            },\r\n            animationEasing: 'linear',\r\n            animationDuration: 700,\r\n            animationDurationUpdate: 500\r\n        };\r\n        return TreeSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(TreeSeriesModel);\n\n    function init$2(inRoot) {\r\n        var root = inRoot;\r\n        root.hierNode = {\r\n            defaultAncestor: null,\r\n            ancestor: root,\r\n            prelim: 0,\r\n            modifier: 0,\r\n            change: 0,\r\n            shift: 0,\r\n            i: 0,\r\n            thread: null\r\n        };\r\n        var nodes = [root];\r\n        var node;\r\n        var children;\r\n        while (node = nodes.pop()) {\r\n            children = node.children;\r\n            if (node.isExpand && children.length) {\r\n                var n = children.length;\r\n                for (var i = n - 1; i >= 0; i--) {\r\n                    var child = children[i];\r\n                    child.hierNode = {\r\n                        defaultAncestor: null,\r\n                        ancestor: child,\r\n                        prelim: 0,\r\n                        modifier: 0,\r\n                        change: 0,\r\n                        shift: 0,\r\n                        i: i,\r\n                        thread: null\r\n                    };\r\n                    nodes.push(child);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function firstWalk(node, separation) {\r\n        var children = node.isExpand ? node.children : [];\r\n        var siblings = node.parentNode.children;\r\n        var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\r\n        if (children.length) {\r\n            executeShifts(node);\r\n            var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\r\n            if (subtreeW) {\r\n                node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\r\n                node.hierNode.modifier = node.hierNode.prelim - midPoint;\r\n            }\r\n            else {\r\n                node.hierNode.prelim = midPoint;\r\n            }\r\n        }\r\n        else if (subtreeW) {\r\n            node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\r\n        }\r\n        node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\r\n    }\r\n    function secondWalk(node) {\r\n        var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\r\n        node.setLayout({ x: nodeX }, true);\r\n        node.hierNode.modifier += node.parentNode.hierNode.modifier;\r\n    }\r\n    function separation(cb) {\r\n        return arguments.length ? cb : defaultSeparation;\r\n    }\r\n    function radialCoordinate(rad, r) {\r\n        rad -= Math.PI / 2;\r\n        return {\r\n            x: r * Math.cos(rad),\r\n            y: r * Math.sin(rad)\r\n        };\r\n    }\r\n    function getViewRect$1(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function executeShifts(node) {\r\n        var children = node.children;\r\n        var n = children.length;\r\n        var shift = 0;\r\n        var change = 0;\r\n        while (--n >= 0) {\r\n            var child = children[n];\r\n            child.hierNode.prelim += shift;\r\n            child.hierNode.modifier += shift;\r\n            change += child.hierNode.change;\r\n            shift += child.hierNode.shift + change;\r\n        }\r\n    }\r\n    function apportion(subtreeV, subtreeW, ancestor, separation) {\r\n        if (subtreeW) {\r\n            var nodeOutRight = subtreeV;\r\n            var nodeInRight = subtreeV;\r\n            var nodeOutLeft = nodeInRight.parentNode.children[0];\r\n            var nodeInLeft = subtreeW;\r\n            var sumOutRight = nodeOutRight.hierNode.modifier;\r\n            var sumInRight = nodeInRight.hierNode.modifier;\r\n            var sumOutLeft = nodeOutLeft.hierNode.modifier;\r\n            var sumInLeft = nodeInLeft.hierNode.modifier;\r\n            while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\r\n                nodeOutRight = nextRight(nodeOutRight);\r\n                nodeOutLeft = nextLeft(nodeOutLeft);\r\n                nodeOutRight.hierNode.ancestor = subtreeV;\r\n                var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim\r\n                    - sumInRight + separation(nodeInLeft, nodeInRight);\r\n                if (shift > 0) {\r\n                    moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\r\n                    sumInRight += shift;\r\n                    sumOutRight += shift;\r\n                }\r\n                sumInLeft += nodeInLeft.hierNode.modifier;\r\n                sumInRight += nodeInRight.hierNode.modifier;\r\n                sumOutRight += nodeOutRight.hierNode.modifier;\r\n                sumOutLeft += nodeOutLeft.hierNode.modifier;\r\n            }\r\n            if (nodeInLeft && !nextRight(nodeOutRight)) {\r\n                nodeOutRight.hierNode.thread = nodeInLeft;\r\n                nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\r\n            }\r\n            if (nodeInRight && !nextLeft(nodeOutLeft)) {\r\n                nodeOutLeft.hierNode.thread = nodeInRight;\r\n                nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\r\n                ancestor = subtreeV;\r\n            }\r\n        }\r\n        return ancestor;\r\n    }\r\n    function nextRight(node) {\r\n        var children = node.children;\r\n        return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\r\n    }\r\n    function nextLeft(node) {\r\n        var children = node.children;\r\n        return children.length && node.isExpand ? children[0] : node.hierNode.thread;\r\n    }\r\n    function nextAncestor(nodeInLeft, node, ancestor) {\r\n        return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode\r\n            ? nodeInLeft.hierNode.ancestor : ancestor;\r\n    }\r\n    function moveSubtree(wl, wr, shift) {\r\n        var change = shift / (wr.hierNode.i - wl.hierNode.i);\r\n        wr.hierNode.change -= change;\r\n        wr.hierNode.shift += shift;\r\n        wr.hierNode.modifier += shift;\r\n        wr.hierNode.prelim += shift;\r\n        wl.hierNode.change += change;\r\n    }\r\n    function defaultSeparation(node1, node2) {\r\n        return node1.parentNode === node2.parentNode ? 1 : 2;\r\n    }\n\n    var TreeEdgeShape = (function () {\r\n        function TreeEdgeShape() {\r\n            this.parentPoint = [];\r\n            this.childPoints = [];\r\n        }\r\n        return TreeEdgeShape;\r\n    }());\r\n    var TreePath = (function (_super) {\r\n        __extends(TreePath, _super);\r\n        function TreePath(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        TreePath.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        TreePath.prototype.getDefaultShape = function () {\r\n            return new TreeEdgeShape();\r\n        };\r\n        TreePath.prototype.buildPath = function (ctx, shape) {\r\n            var childPoints = shape.childPoints;\r\n            var childLen = childPoints.length;\r\n            var parentPoint = shape.parentPoint;\r\n            var firstChildPos = childPoints[0];\r\n            var lastChildPos = childPoints[childLen - 1];\r\n            if (childLen === 1) {\r\n                ctx.moveTo(parentPoint[0], parentPoint[1]);\r\n                ctx.lineTo(firstChildPos[0], firstChildPos[1]);\r\n                return;\r\n            }\r\n            var orient = shape.orient;\r\n            var forkDim = (orient === 'TB' || orient === 'BT') ? 0 : 1;\r\n            var otherDim = 1 - forkDim;\r\n            var forkPosition = parsePercent$2(shape.forkPosition, 1);\r\n            var tmpPoint = [];\r\n            tmpPoint[forkDim] = parentPoint[forkDim];\r\n            tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;\r\n            ctx.moveTo(parentPoint[0], parentPoint[1]);\r\n            ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n            ctx.moveTo(firstChildPos[0], firstChildPos[1]);\r\n            tmpPoint[forkDim] = firstChildPos[forkDim];\r\n            ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n            tmpPoint[forkDim] = lastChildPos[forkDim];\r\n            ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n            ctx.lineTo(lastChildPos[0], lastChildPos[1]);\r\n            for (var i = 1; i < childLen - 1; i++) {\r\n                var point = childPoints[i];\r\n                ctx.moveTo(point[0], point[1]);\r\n                tmpPoint[forkDim] = point[forkDim];\r\n                ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n            }\r\n        };\r\n        return TreePath;\r\n    }(Path));\r\n    var TreeView = (function (_super) {\r\n        __extends(TreeView, _super);\r\n        function TreeView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TreeView.type;\r\n            _this._mainGroup = new Group();\r\n            return _this;\r\n        }\r\n        TreeView.prototype.init = function (ecModel, api) {\r\n            this._controller = new RoamController(api.getZr());\r\n            this._controllerHost = {\r\n                target: this.group\r\n            };\r\n            this.group.add(this._mainGroup);\r\n        };\r\n        TreeView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var layoutInfo = seriesModel.layoutInfo;\r\n            var group = this._mainGroup;\r\n            var layout = seriesModel.get('layout');\r\n            if (layout === 'radial') {\r\n                group.x = layoutInfo.x + layoutInfo.width / 2;\r\n                group.y = layoutInfo.y + layoutInfo.height / 2;\r\n            }\r\n            else {\r\n                group.x = layoutInfo.x;\r\n                group.y = layoutInfo.y;\r\n            }\r\n            this._updateViewCoordSys(seriesModel);\r\n            this._updateController(seriesModel, ecModel, api);\r\n            var oldData = this._data;\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                if (symbolNeedsDraw$1(data, newIdx)) {\r\n                    updateNode(data, newIdx, null, group, seriesModel);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                if (!symbolNeedsDraw$1(data, newIdx)) {\r\n                    symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel);\r\n                    return;\r\n                }\r\n                updateNode(data, newIdx, symbolEl, group, seriesModel);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                if (symbolEl) {\r\n                    removeNode(oldData, oldIdx, symbolEl, group, seriesModel);\r\n                }\r\n            })\r\n                .execute();\r\n            this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\r\n            this._updateNodeAndLinkScale(seriesModel);\r\n            if (seriesModel.get('expandAndCollapse') === true) {\r\n                data.eachItemGraphicEl(function (el, dataIndex) {\r\n                    el.off('click').on('click', function () {\r\n                        api.dispatchAction({\r\n                            type: 'treeExpandAndCollapse',\r\n                            seriesId: seriesModel.id,\r\n                            dataIndex: dataIndex\r\n                        });\r\n                    });\r\n                });\r\n            }\r\n            this._data = data;\r\n        };\r\n        TreeView.prototype._updateViewCoordSys = function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var points = [];\r\n            data.each(function (idx) {\r\n                var layout = data.getItemLayout(idx);\r\n                if (layout && !isNaN(layout.x) && !isNaN(layout.y)) {\r\n                    points.push([+layout.x, +layout.y]);\r\n                }\r\n            });\r\n            var min = [];\r\n            var max = [];\r\n            fromPoints(points, min, max);\r\n            var oldMin = this._min;\r\n            var oldMax = this._max;\r\n            if (max[0] - min[0] === 0) {\r\n                min[0] = oldMin ? oldMin[0] : min[0] - 1;\r\n                max[0] = oldMax ? oldMax[0] : max[0] + 1;\r\n            }\r\n            if (max[1] - min[1] === 0) {\r\n                min[1] = oldMin ? oldMin[1] : min[1] - 1;\r\n                max[1] = oldMax ? oldMax[1] : max[1] + 1;\r\n            }\r\n            var viewCoordSys = seriesModel.coordinateSystem = new View();\r\n            viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\r\n            viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\r\n            viewCoordSys.setCenter(seriesModel.get('center'));\r\n            viewCoordSys.setZoom(seriesModel.get('zoom'));\r\n            this.group.attr({\r\n                x: viewCoordSys.x,\r\n                y: viewCoordSys.y,\r\n                scaleX: viewCoordSys.scaleX,\r\n                scaleY: viewCoordSys.scaleY\r\n            });\r\n            this._min = min;\r\n            this._max = max;\r\n        };\r\n        TreeView.prototype._updateController = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var controller = this._controller;\r\n            var controllerHost = this._controllerHost;\r\n            var group = this.group;\r\n            controller.setPointerChecker(function (e, x, y) {\r\n                var rect = group.getBoundingRect();\r\n                rect.applyTransform(group.transform);\r\n                return rect.contain(x, y)\r\n                    && !onIrrelevantElement(e, api, seriesModel);\r\n            });\r\n            controller.enable(seriesModel.get('roam'));\r\n            controllerHost.zoomLimit = seriesModel.get('scaleLimit');\r\n            controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\r\n            controller\r\n                .off('pan')\r\n                .off('zoom')\r\n                .on('pan', function (e) {\r\n                updateViewOnPan(controllerHost, e.dx, e.dy);\r\n                api.dispatchAction({\r\n                    seriesId: seriesModel.id,\r\n                    type: 'treeRoam',\r\n                    dx: e.dx,\r\n                    dy: e.dy\r\n                });\r\n            })\r\n                .on('zoom', function (e) {\r\n                updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\r\n                api.dispatchAction({\r\n                    seriesId: seriesModel.id,\r\n                    type: 'treeRoam',\r\n                    zoom: e.scale,\r\n                    originX: e.originX,\r\n                    originY: e.originY\r\n                });\r\n                _this._updateNodeAndLinkScale(seriesModel);\r\n                api.updateLabelLayout();\r\n            });\r\n        };\r\n        TreeView.prototype._updateNodeAndLinkScale = function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var nodeScale = this._getNodeGlobalScale(seriesModel);\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                el.setSymbolScale(nodeScale);\r\n            });\r\n        };\r\n        TreeView.prototype._getNodeGlobalScale = function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys.type !== 'view') {\r\n                return 1;\r\n            }\r\n            var nodeScaleRatio = this._nodeScaleRatio;\r\n            var groupZoom = coordSys.scaleX || 1;\r\n            var roamZoom = coordSys.getZoom();\r\n            var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\r\n            return nodeScale / groupZoom;\r\n        };\r\n        TreeView.prototype.dispose = function () {\r\n            this._controller && this._controller.dispose();\r\n            this._controllerHost = null;\r\n        };\r\n        TreeView.prototype.remove = function () {\r\n            this._mainGroup.removeAll();\r\n            this._data = null;\r\n        };\r\n        TreeView.type = 'tree';\r\n        return TreeView;\r\n    }(ChartView));\r\n    function symbolNeedsDraw$1(data, dataIndex) {\r\n        var layout = data.getItemLayout(dataIndex);\r\n        return layout\r\n            && !isNaN(layout.x) && !isNaN(layout.y);\r\n    }\r\n    function updateNode(data, dataIndex, symbolEl, group, seriesModel) {\r\n        var isInit = !symbolEl;\r\n        var node = data.tree.getNodeByDataIndex(dataIndex);\r\n        var itemModel = node.getModel();\r\n        var visualColor = node.getVisual('style').fill;\r\n        var symbolInnerColor = node.isExpand === false && node.children.length !== 0\r\n            ? visualColor : '#fff';\r\n        var virtualRoot = data.tree.root;\r\n        var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\r\n        var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\r\n        var sourceLayout = source.getLayout();\r\n        var sourceOldLayout = sourceSymbolEl\r\n            ? {\r\n                x: sourceSymbolEl.__oldX,\r\n                y: sourceSymbolEl.__oldY,\r\n                rawX: sourceSymbolEl.__radialOldRawX,\r\n                rawY: sourceSymbolEl.__radialOldRawY\r\n            }\r\n            : sourceLayout;\r\n        var targetLayout = node.getLayout();\r\n        if (isInit) {\r\n            symbolEl = new Symbol(data, dataIndex, null, {\r\n                symbolInnerColor: symbolInnerColor,\r\n                useNameLabel: true\r\n            });\r\n            symbolEl.x = sourceOldLayout.x;\r\n            symbolEl.y = sourceOldLayout.y;\r\n        }\r\n        else {\r\n            symbolEl.updateData(data, dataIndex, null, {\r\n                symbolInnerColor: symbolInnerColor,\r\n                useNameLabel: true\r\n            });\r\n        }\r\n        symbolEl.__radialOldRawX = symbolEl.__radialRawX;\r\n        symbolEl.__radialOldRawY = symbolEl.__radialRawY;\r\n        symbolEl.__radialRawX = targetLayout.rawX;\r\n        symbolEl.__radialRawY = targetLayout.rawY;\r\n        group.add(symbolEl);\r\n        data.setItemGraphicEl(dataIndex, symbolEl);\r\n        symbolEl.__oldX = symbolEl.x;\r\n        symbolEl.__oldY = symbolEl.y;\r\n        updateProps(symbolEl, {\r\n            x: targetLayout.x,\r\n            y: targetLayout.y\r\n        }, seriesModel);\r\n        var symbolPath = symbolEl.getSymbolPath();\r\n        if (seriesModel.get('layout') === 'radial') {\r\n            var realRoot = virtualRoot.children[0];\r\n            var rootLayout = realRoot.getLayout();\r\n            var length_1 = realRoot.children.length;\r\n            var rad = void 0;\r\n            var isLeft = void 0;\r\n            if (targetLayout.x === rootLayout.x && node.isExpand === true) {\r\n                var center = {\r\n                    x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2,\r\n                    y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2\r\n                };\r\n                rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\r\n                if (rad < 0) {\r\n                    rad = Math.PI * 2 + rad;\r\n                }\r\n                isLeft = center.x < rootLayout.x;\r\n                if (isLeft) {\r\n                    rad = rad - Math.PI;\r\n                }\r\n            }\r\n            else {\r\n                rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\r\n                if (rad < 0) {\r\n                    rad = Math.PI * 2 + rad;\r\n                }\r\n                if (node.children.length === 0 || (node.children.length !== 0 && node.isExpand === false)) {\r\n                    isLeft = targetLayout.x < rootLayout.x;\r\n                    if (isLeft) {\r\n                        rad = rad - Math.PI;\r\n                    }\r\n                }\r\n                else {\r\n                    isLeft = targetLayout.x > rootLayout.x;\r\n                    if (!isLeft) {\r\n                        rad = rad - Math.PI;\r\n                    }\r\n                }\r\n            }\r\n            var textPosition = isLeft ? 'left' : 'right';\r\n            var normalLabelModel = itemModel.getModel('label');\r\n            var rotate = normalLabelModel.get('rotate');\r\n            var labelRotateRadian = rotate * (Math.PI / 180);\r\n            var textContent = symbolPath.getTextContent();\r\n            if (textContent) {\r\n                symbolPath.setTextConfig({\r\n                    position: normalLabelModel.get('position') || textPosition,\r\n                    rotation: rotate == null ? -rad : labelRotateRadian,\r\n                    origin: 'center'\r\n                });\r\n                textContent.setStyle('verticalAlign', 'middle');\r\n            }\r\n        }\r\n        var focus = itemModel.get(['emphasis', 'focus']);\r\n        var focusDataIndices = focus === 'ancestor'\r\n            ? node.getAncestorsIndices()\r\n            : focus === 'descendant' ? node.getDescendantIndices() : null;\r\n        if (focusDataIndices) {\r\n            getECData(symbolEl).focus = focusDataIndices;\r\n        }\r\n        drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group);\r\n        if (symbolEl.__edge) {\r\n            symbolEl.onHoverStateChange = function (toState) {\r\n                if (toState !== 'blur') {\r\n                    var parentEl = node.parentNode\r\n                        && data.getItemGraphicEl(node.parentNode.dataIndex);\r\n                    if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) {\r\n                        setStatesFlag(symbolEl.__edge, toState);\r\n                    }\r\n                }\r\n            };\r\n        }\r\n    }\r\n    function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) {\r\n        var itemModel = node.getModel();\r\n        var edgeShape = seriesModel.get('edgeShape');\r\n        var layout = seriesModel.get('layout');\r\n        var orient = seriesModel.getOrient();\r\n        var curvature = seriesModel.get(['lineStyle', 'curveness']);\r\n        var edgeForkPosition = seriesModel.get('edgeForkPosition');\r\n        var lineStyle = itemModel.getModel('lineStyle').getLineStyle();\r\n        var edge = symbolEl.__edge;\r\n        if (edgeShape === 'curve') {\r\n            if (node.parentNode && node.parentNode !== virtualRoot) {\r\n                if (!edge) {\r\n                    edge = symbolEl.__edge = new BezierCurve({\r\n                        shape: getEdgeShape(layout, orient, curvature, sourceOldLayout, sourceOldLayout)\r\n                    });\r\n                }\r\n                updateProps(edge, {\r\n                    shape: getEdgeShape(layout, orient, curvature, sourceLayout, targetLayout)\r\n                }, seriesModel);\r\n            }\r\n        }\r\n        else if (edgeShape === 'polyline') {\r\n            if (layout === 'orthogonal') {\r\n                if (node !== virtualRoot && node.children && (node.children.length !== 0) && (node.isExpand === true)) {\r\n                    var children = node.children;\r\n                    var childPoints = [];\r\n                    for (var i = 0; i < children.length; i++) {\r\n                        var childLayout = children[i].getLayout();\r\n                        childPoints.push([childLayout.x, childLayout.y]);\r\n                    }\r\n                    if (!edge) {\r\n                        edge = symbolEl.__edge = new TreePath({\r\n                            shape: {\r\n                                parentPoint: [targetLayout.x, targetLayout.y],\r\n                                childPoints: [[targetLayout.x, targetLayout.y]],\r\n                                orient: orient,\r\n                                forkPosition: edgeForkPosition\r\n                            }\r\n                        });\r\n                    }\r\n                    updateProps(edge, {\r\n                        shape: {\r\n                            parentPoint: [targetLayout.x, targetLayout.y],\r\n                            childPoints: childPoints\r\n                        }\r\n                    }, seriesModel);\r\n                }\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    throw new Error('The polyline edgeShape can only be used in orthogonal layout');\r\n                }\r\n            }\r\n        }\r\n        if (edge) {\r\n            edge.useStyle(defaults({\r\n                strokeNoScale: true, fill: null\r\n            }, lineStyle));\r\n            setStatesStylesFromModel(edge, itemModel, 'lineStyle');\r\n            setDefaultStateProxy(edge);\r\n            group.add(edge);\r\n        }\r\n    }\r\n    function removeNode(data, dataIndex, symbolEl, group, seriesModel) {\r\n        var node = data.tree.getNodeByDataIndex(dataIndex);\r\n        var virtualRoot = data.tree.root;\r\n        var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\r\n        var sourceLayout;\r\n        while (sourceLayout = source.getLayout(), sourceLayout == null) {\r\n            source = source.parentNode === virtualRoot ? source : source.parentNode || source;\r\n        }\r\n        var removeAnimationOpt = {\r\n            duration: seriesModel.get('animationDurationUpdate'),\r\n            easing: seriesModel.get('animationEasingUpdate')\r\n        };\r\n        removeElement(symbolEl, {\r\n            x: sourceLayout.x + 1,\r\n            y: sourceLayout.y + 1\r\n        }, seriesModel, {\r\n            cb: function () {\r\n                group.remove(symbolEl);\r\n                data.setItemGraphicEl(dataIndex, null);\r\n            },\r\n            removeOpt: removeAnimationOpt\r\n        });\r\n        symbolEl.fadeOut(null, {\r\n            fadeLabel: true,\r\n            animation: removeAnimationOpt\r\n        });\r\n        var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\r\n        var sourceEdge = sourceSymbolEl.__edge;\r\n        var edge = symbolEl.__edge\r\n            || ((source.isExpand === false || source.children.length === 1) ? sourceEdge : undefined);\r\n        var edgeShape = seriesModel.get('edgeShape');\r\n        var layoutOpt = seriesModel.get('layout');\r\n        var orient = seriesModel.get('orient');\r\n        var curvature = seriesModel.get(['lineStyle', 'curveness']);\r\n        if (edge) {\r\n            if (edgeShape === 'curve') {\r\n                removeElement(edge, {\r\n                    shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout),\r\n                    style: {\r\n                        opacity: 0\r\n                    }\r\n                }, seriesModel, {\r\n                    cb: function () {\r\n                        group.remove(edge);\r\n                    },\r\n                    removeOpt: removeAnimationOpt\r\n                });\r\n            }\r\n            else if (edgeShape === 'polyline' && seriesModel.get('layout') === 'orthogonal') {\r\n                removeElement(edge, {\r\n                    shape: {\r\n                        parentPoint: [sourceLayout.x, sourceLayout.y],\r\n                        childPoints: [[sourceLayout.x, sourceLayout.y]]\r\n                    },\r\n                    style: {\r\n                        opacity: 0\r\n                    }\r\n                }, seriesModel, {\r\n                    cb: function () {\r\n                        group.remove(edge);\r\n                    },\r\n                    removeOpt: removeAnimationOpt\r\n                });\r\n            }\r\n        }\r\n    }\r\n    function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) {\r\n        var cpx1;\r\n        var cpy1;\r\n        var cpx2;\r\n        var cpy2;\r\n        var x1;\r\n        var x2;\r\n        var y1;\r\n        var y2;\r\n        if (layoutOpt === 'radial') {\r\n            x1 = sourceLayout.rawX;\r\n            y1 = sourceLayout.rawY;\r\n            x2 = targetLayout.rawX;\r\n            y2 = targetLayout.rawY;\r\n            var radialCoor1 = radialCoordinate(x1, y1);\r\n            var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature);\r\n            var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature);\r\n            var radialCoor4 = radialCoordinate(x2, y2);\r\n            return {\r\n                x1: radialCoor1.x || 0,\r\n                y1: radialCoor1.y || 0,\r\n                x2: radialCoor4.x || 0,\r\n                y2: radialCoor4.y || 0,\r\n                cpx1: radialCoor2.x || 0,\r\n                cpy1: radialCoor2.y || 0,\r\n                cpx2: radialCoor3.x || 0,\r\n                cpy2: radialCoor3.y || 0\r\n            };\r\n        }\r\n        else {\r\n            x1 = sourceLayout.x;\r\n            y1 = sourceLayout.y;\r\n            x2 = targetLayout.x;\r\n            y2 = targetLayout.y;\r\n            if (orient === 'LR' || orient === 'RL') {\r\n                cpx1 = x1 + (x2 - x1) * curvature;\r\n                cpy1 = y1;\r\n                cpx2 = x2 + (x1 - x2) * curvature;\r\n                cpy2 = y2;\r\n            }\r\n            if (orient === 'TB' || orient === 'BT') {\r\n                cpx1 = x1;\r\n                cpy1 = y1 + (y2 - y1) * curvature;\r\n                cpx2 = x2;\r\n                cpy2 = y2 + (y1 - y2) * curvature;\r\n            }\r\n        }\r\n        return {\r\n            x1: x1,\r\n            y1: y1,\r\n            x2: x2,\r\n            y2: y2,\r\n            cpx1: cpx1,\r\n            cpy1: cpy1,\r\n            cpx2: cpx2,\r\n            cpy2: cpy2\r\n        };\r\n    }\r\n    ChartView.registerClass(TreeView);\n\n    registerAction({\r\n        type: 'treeExpandAndCollapse',\r\n        event: 'treeExpandAndCollapse',\r\n        update: 'update'\r\n    }, function (payload, ecModel) {\r\n        ecModel.eachComponent({\r\n            mainType: 'series', subType: 'tree', query: payload\r\n        }, function (seriesModel) {\r\n            var dataIndex = payload.dataIndex;\r\n            var tree = seriesModel.getData().tree;\r\n            var node = tree.getNodeByDataIndex(dataIndex);\r\n            node.isExpand = !node.isExpand;\r\n        });\r\n    });\r\n    registerAction({\r\n        type: 'treeRoam',\r\n        event: 'treeRoam',\r\n        update: 'none'\r\n    }, function (payload, ecModel) {\r\n        ecModel.eachComponent({\r\n            mainType: 'series', subType: 'tree', query: payload\r\n        }, function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var res = updateCenterAndZoom(coordSys, payload);\r\n            seriesModel.setCenter\r\n                && seriesModel.setCenter(res.center);\r\n            seriesModel.setZoom\r\n                && seriesModel.setZoom(res.zoom);\r\n        });\r\n    });\n\n    function eachAfter(root, callback, separation) {\r\n        var nodes = [root];\r\n        var next = [];\r\n        var node;\r\n        while (node = nodes.pop()) {\r\n            next.push(node);\r\n            if (node.isExpand) {\r\n                var children = node.children;\r\n                if (children.length) {\r\n                    for (var i = 0; i < children.length; i++) {\r\n                        nodes.push(children[i]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        while (node = next.pop()) {\r\n            callback(node, separation);\r\n        }\r\n    }\r\n    function eachBefore(root, callback) {\r\n        var nodes = [root];\r\n        var node;\r\n        while (node = nodes.pop()) {\r\n            callback(node);\r\n            if (node.isExpand) {\r\n                var children = node.children;\r\n                if (children.length) {\r\n                    for (var i = children.length - 1; i >= 0; i--) {\r\n                        nodes.push(children[i]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\n\n    function treeLayout(ecModel, api) {\r\n        ecModel.eachSeriesByType('tree', function (seriesModel) {\r\n            commonLayout(seriesModel, api);\r\n        });\r\n    }\r\n    function commonLayout(seriesModel, api) {\r\n        var layoutInfo = getViewRect$1(seriesModel, api);\r\n        seriesModel.layoutInfo = layoutInfo;\r\n        var layout = seriesModel.get('layout');\r\n        var width = 0;\r\n        var height = 0;\r\n        var separation$1 = null;\r\n        if (layout === 'radial') {\r\n            width = 2 * Math.PI;\r\n            height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\r\n            separation$1 = separation(function (node1, node2) {\r\n                return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\r\n            });\r\n        }\r\n        else {\r\n            width = layoutInfo.width;\r\n            height = layoutInfo.height;\r\n            separation$1 = separation();\r\n        }\r\n        var virtualRoot = seriesModel.getData().tree.root;\r\n        var realRoot = virtualRoot.children[0];\r\n        if (realRoot) {\r\n            init$2(virtualRoot);\r\n            eachAfter(realRoot, firstWalk, separation$1);\r\n            virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\r\n            eachBefore(realRoot, secondWalk);\r\n            var left_1 = realRoot;\r\n            var right_1 = realRoot;\r\n            var bottom_1 = realRoot;\r\n            eachBefore(realRoot, function (node) {\r\n                var x = node.getLayout().x;\r\n                if (x < left_1.getLayout().x) {\r\n                    left_1 = node;\r\n                }\r\n                if (x > right_1.getLayout().x) {\r\n                    right_1 = node;\r\n                }\r\n                if (node.depth > bottom_1.depth) {\r\n                    bottom_1 = node;\r\n                }\r\n            });\r\n            var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2;\r\n            var tx_1 = delta - left_1.getLayout().x;\r\n            var kx_1 = 0;\r\n            var ky_1 = 0;\r\n            var coorX_1 = 0;\r\n            var coorY_1 = 0;\r\n            if (layout === 'radial') {\r\n                kx_1 = width / (right_1.getLayout().x + delta + tx_1);\r\n                ky_1 = height / ((bottom_1.depth - 1) || 1);\r\n                eachBefore(realRoot, function (node) {\r\n                    coorX_1 = (node.getLayout().x + tx_1) * kx_1;\r\n                    coorY_1 = (node.depth - 1) * ky_1;\r\n                    var finalCoor = radialCoordinate(coorX_1, coorY_1);\r\n                    node.setLayout({ x: finalCoor.x, y: finalCoor.y, rawX: coorX_1, rawY: coorY_1 }, true);\r\n                });\r\n            }\r\n            else {\r\n                var orient_1 = seriesModel.getOrient();\r\n                if (orient_1 === 'RL' || orient_1 === 'LR') {\r\n                    ky_1 = height / (right_1.getLayout().x + delta + tx_1);\r\n                    kx_1 = width / ((bottom_1.depth - 1) || 1);\r\n                    eachBefore(realRoot, function (node) {\r\n                        coorY_1 = (node.getLayout().x + tx_1) * ky_1;\r\n                        coorX_1 = orient_1 === 'LR'\r\n                            ? (node.depth - 1) * kx_1\r\n                            : width - (node.depth - 1) * kx_1;\r\n                        node.setLayout({ x: coorX_1, y: coorY_1 }, true);\r\n                    });\r\n                }\r\n                else if (orient_1 === 'TB' || orient_1 === 'BT') {\r\n                    kx_1 = width / (right_1.getLayout().x + delta + tx_1);\r\n                    ky_1 = height / ((bottom_1.depth - 1) || 1);\r\n                    eachBefore(realRoot, function (node) {\r\n                        coorX_1 = (node.getLayout().x + tx_1) * kx_1;\r\n                        coorY_1 = orient_1 === 'TB'\r\n                            ? (node.depth - 1) * ky_1\r\n                            : height - (node.depth - 1) * ky_1;\r\n                        node.setLayout({ x: coorX_1, y: coorY_1 }, true);\r\n                    });\r\n                }\r\n            }\r\n        }\r\n    }\n\n    function treeVisual(ecModel) {\r\n        ecModel.eachSeriesByType('tree', function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var tree = data.tree;\r\n            tree.eachNode(function (node) {\r\n                var model = node.getModel();\r\n                var style = model.getModel('itemStyle').getItemStyle();\r\n                var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\r\n                extend(existsStyle, style);\r\n            });\r\n        });\r\n    }\n\n    registerLayout(treeLayout);\r\n    registerVisual(treeVisual);\n\n    function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\r\n        if (payload && indexOf(validPayloadTypes, payload.type) >= 0) {\r\n            var root = seriesModel.getData().tree.root;\r\n            var targetNode = payload.targetNode;\r\n            if (typeof targetNode === 'string') {\r\n                targetNode = root.getNodeById(targetNode);\r\n            }\r\n            if (targetNode && root.contains(targetNode)) {\r\n                return {\r\n                    node: targetNode\r\n                };\r\n            }\r\n            var targetNodeId = payload.targetNodeId;\r\n            if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\r\n                return {\r\n                    node: targetNode\r\n                };\r\n            }\r\n        }\r\n    }\r\n    function getPathToRoot(node) {\r\n        var path = [];\r\n        while (node) {\r\n            node = node.parentNode;\r\n            node && path.push(node);\r\n        }\r\n        return path.reverse();\r\n    }\r\n    function aboveViewRoot(viewRoot, node) {\r\n        var viewPath = getPathToRoot(viewRoot);\r\n        return indexOf(viewPath, node) >= 0;\r\n    }\r\n    function wrapTreePathInfo(node, seriesModel) {\r\n        var treePathInfo = [];\r\n        while (node) {\r\n            var nodeDataIndex = node.dataIndex;\r\n            treePathInfo.push({\r\n                name: node.name,\r\n                dataIndex: nodeDataIndex,\r\n                value: seriesModel.getRawValue(nodeDataIndex)\r\n            });\r\n            node = node.parentNode;\r\n        }\r\n        treePathInfo.reverse();\r\n        return treePathInfo;\r\n    }\n\n    function enableAriaDecalForTree(seriesModel) {\r\n        var data = seriesModel.getData();\r\n        var tree = data.tree;\r\n        var decalPaletteScope = {};\r\n        tree.eachNode(function (node) {\r\n            var current = node;\r\n            while (current && current.depth > 1) {\r\n                current = current.parentNode;\r\n            }\r\n            var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + '', decalPaletteScope);\r\n            node.setVisual('decal', decal);\r\n        });\r\n    }\n\n    var TreemapSeriesModel = (function (_super) {\r\n        __extends(TreemapSeriesModel, _super);\r\n        function TreemapSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TreemapSeriesModel.type;\r\n            _this.preventUsingHoverLayer = true;\r\n            return _this;\r\n        }\r\n        TreemapSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            var root = {\r\n                name: option.name,\r\n                children: option.data\r\n            };\r\n            completeTreeValue(root);\r\n            var levels = option.levels || [];\r\n            var designatedVisualItemStyle = this.designatedVisualItemStyle = {};\r\n            var designatedVisualModel = new Model({ itemStyle: designatedVisualItemStyle }, this, ecModel);\r\n            levels = option.levels = setDefault(levels, ecModel);\r\n            var levelModels = map(levels || [], function (levelDefine) {\r\n                return new Model(levelDefine, designatedVisualModel, ecModel);\r\n            }, this);\r\n            var tree = Tree.createTree(root, this, beforeLink);\r\n            function beforeLink(nodeData) {\r\n                nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n                    var node = tree.getNodeByDataIndex(idx);\r\n                    var levelModel = levelModels[node.depth];\r\n                    model.parentModel = levelModel || designatedVisualModel;\r\n                    return model;\r\n                });\r\n            }\r\n            return tree.data;\r\n        };\r\n        TreemapSeriesModel.prototype.optionUpdated = function () {\r\n            this.resetViewRoot();\r\n        };\r\n        TreemapSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var data = this.getData();\r\n            var value = this.getRawValue(dataIndex);\r\n            var name = data.getName(dataIndex);\r\n            return createTooltipMarkup('nameValue', { name: name, value: value });\r\n        };\r\n        TreemapSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var params = _super.prototype.getDataParams.apply(this, arguments);\r\n            var node = this.getData().tree.getNodeByDataIndex(dataIndex);\r\n            params.treePathInfo = wrapTreePathInfo(node, this);\r\n            return params;\r\n        };\r\n        TreemapSeriesModel.prototype.setLayoutInfo = function (layoutInfo) {\r\n            this.layoutInfo = this.layoutInfo || {};\r\n            extend(this.layoutInfo, layoutInfo);\r\n        };\r\n        TreemapSeriesModel.prototype.mapIdToIndex = function (id) {\r\n            var idIndexMap = this._idIndexMap;\r\n            if (!idIndexMap) {\r\n                idIndexMap = this._idIndexMap = createHashMap();\r\n                this._idIndexMapCount = 0;\r\n            }\r\n            var index = idIndexMap.get(id);\r\n            if (index == null) {\r\n                idIndexMap.set(id, index = this._idIndexMapCount++);\r\n            }\r\n            return index;\r\n        };\r\n        TreemapSeriesModel.prototype.getViewRoot = function () {\r\n            return this._viewRoot;\r\n        };\r\n        TreemapSeriesModel.prototype.resetViewRoot = function (viewRoot) {\r\n            viewRoot\r\n                ? (this._viewRoot = viewRoot)\r\n                : (viewRoot = this._viewRoot);\r\n            var root = this.getRawData().tree.root;\r\n            if (!viewRoot\r\n                || (viewRoot !== root && !root.contains(viewRoot))) {\r\n                this._viewRoot = root;\r\n            }\r\n        };\r\n        TreemapSeriesModel.prototype.enableAriaDecal = function () {\r\n            enableAriaDecalForTree(this);\r\n        };\r\n        TreemapSeriesModel.type = 'series.treemap';\r\n        TreemapSeriesModel.layoutMode = 'box';\r\n        TreemapSeriesModel.defaultOption = {\r\n            progressive: 0,\r\n            left: 'center',\r\n            top: 'middle',\r\n            width: '80%',\r\n            height: '80%',\r\n            sort: true,\r\n            clipWindow: 'origin',\r\n            squareRatio: 0.5 * (1 + Math.sqrt(5)),\r\n            leafDepth: null,\r\n            drillDownIcon: '▶',\r\n            zoomToNodeRatio: 0.32 * 0.32,\r\n            roam: true,\r\n            nodeClick: 'zoomToNode',\r\n            animation: true,\r\n            animationDurationUpdate: 900,\r\n            animationEasing: 'quinticInOut',\r\n            breadcrumb: {\r\n                show: true,\r\n                height: 22,\r\n                left: 'center',\r\n                top: 'bottom',\r\n                emptyItemWidth: 25,\r\n                itemStyle: {\r\n                    color: 'rgba(0,0,0,0.7)',\r\n                    textStyle: {\r\n                        color: '#fff'\r\n                    }\r\n                }\r\n            },\r\n            label: {\r\n                show: true,\r\n                distance: 0,\r\n                padding: 5,\r\n                position: 'inside',\r\n                color: '#fff',\r\n                overflow: 'truncate'\r\n            },\r\n            upperLabel: {\r\n                show: false,\r\n                position: [0, '50%'],\r\n                height: 20,\r\n                overflow: 'truncate',\r\n                verticalAlign: 'middle'\r\n            },\r\n            itemStyle: {\r\n                color: null,\r\n                colorAlpha: null,\r\n                colorSaturation: null,\r\n                borderWidth: 0,\r\n                gapWidth: 0,\r\n                borderColor: '#fff',\r\n                borderColorSaturation: null\r\n            },\r\n            emphasis: {\r\n                upperLabel: {\r\n                    show: true,\r\n                    position: [0, '50%'],\r\n                    ellipsis: true,\r\n                    verticalAlign: 'middle'\r\n                }\r\n            },\r\n            visualDimension: 0,\r\n            visualMin: null,\r\n            visualMax: null,\r\n            color: [],\r\n            colorAlpha: null,\r\n            colorSaturation: null,\r\n            colorMappingBy: 'index',\r\n            visibleMin: 10,\r\n            childrenVisibleMin: null,\r\n            levels: []\r\n        };\r\n        return TreemapSeriesModel;\r\n    }(SeriesModel));\r\n    function completeTreeValue(dataNode) {\r\n        var sum = 0;\r\n        each(dataNode.children, function (child) {\r\n            completeTreeValue(child);\r\n            var childValue = child.value;\r\n            isArray(childValue) && (childValue = childValue[0]);\r\n            sum += childValue;\r\n        });\r\n        var thisValue = dataNode.value;\r\n        if (isArray(thisValue)) {\r\n            thisValue = thisValue[0];\r\n        }\r\n        if (thisValue == null || isNaN(thisValue)) {\r\n            thisValue = sum;\r\n        }\r\n        if (thisValue < 0) {\r\n            thisValue = 0;\r\n        }\r\n        isArray(dataNode.value)\r\n            ? (dataNode.value[0] = thisValue)\r\n            : (dataNode.value = thisValue);\r\n    }\r\n    function setDefault(levels, ecModel) {\r\n        var globalColorList = normalizeToArray(ecModel.get('color'));\r\n        var globalDecalList = normalizeToArray(ecModel.get('decals'));\r\n        if (!globalColorList) {\r\n            return;\r\n        }\r\n        levels = levels || [];\r\n        var hasColorDefine;\r\n        var hasDecalDefine;\r\n        each(levels, function (levelDefine) {\r\n            var model = new Model(levelDefine);\r\n            var modelColor = model.get('color');\r\n            var modelDecal = model.get('decal');\r\n            if (model.get(['itemStyle', 'color'])\r\n                || (modelColor && modelColor !== 'none')) {\r\n                hasColorDefine = true;\r\n            }\r\n            if (model.get(['itemStyle', 'decal'])\r\n                || (modelDecal && modelDecal !== 'none')) {\r\n                hasDecalDefine = true;\r\n            }\r\n        });\r\n        var level0 = levels[0] || (levels[0] = {});\r\n        if (!hasColorDefine) {\r\n            level0.color = globalColorList.slice();\r\n        }\r\n        if (!hasDecalDefine && globalDecalList) {\r\n            level0.decal = globalDecalList.slice();\r\n        }\r\n        return levels;\r\n    }\r\n    SeriesModel.registerClass(TreemapSeriesModel);\n\n    var TEXT_PADDING = 8;\r\n    var ITEM_GAP = 8;\r\n    var ARRAY_LENGTH = 5;\r\n    var Breadcrumb = (function () {\r\n        function Breadcrumb(containerGroup) {\r\n            this.group = new Group();\r\n            containerGroup.add(this.group);\r\n        }\r\n        Breadcrumb.prototype.render = function (seriesModel, api, targetNode, onSelect) {\r\n            var model = seriesModel.getModel('breadcrumb');\r\n            var thisGroup = this.group;\r\n            thisGroup.removeAll();\r\n            if (!model.get('show') || !targetNode) {\r\n                return;\r\n            }\r\n            var normalStyleModel = model.getModel('itemStyle');\r\n            var textStyleModel = normalStyleModel.getModel('textStyle');\r\n            var layoutParam = {\r\n                pos: {\r\n                    left: model.get('left'),\r\n                    right: model.get('right'),\r\n                    top: model.get('top'),\r\n                    bottom: model.get('bottom')\r\n                },\r\n                box: {\r\n                    width: api.getWidth(),\r\n                    height: api.getHeight()\r\n                },\r\n                emptyItemWidth: model.get('emptyItemWidth'),\r\n                totalWidth: 0,\r\n                renderList: []\r\n            };\r\n            this._prepare(targetNode, layoutParam, textStyleModel);\r\n            this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\r\n            positionElement(thisGroup, layoutParam.pos, layoutParam.box);\r\n        };\r\n        Breadcrumb.prototype._prepare = function (targetNode, layoutParam, textStyleModel) {\r\n            for (var node = targetNode; node; node = node.parentNode) {\r\n                var text = convertOptionIdName(node.getModel().get('name'), '');\r\n                var textRect = textStyleModel.getTextRect(text);\r\n                var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\r\n                layoutParam.totalWidth += itemWidth + ITEM_GAP;\r\n                layoutParam.renderList.push({\r\n                    node: node,\r\n                    text: text,\r\n                    width: itemWidth\r\n                });\r\n            }\r\n        };\r\n        Breadcrumb.prototype._renderContent = function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\r\n            var lastX = 0;\r\n            var emptyItemWidth = layoutParam.emptyItemWidth;\r\n            var height = seriesModel.get(['breadcrumb', 'height']);\r\n            var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box);\r\n            var totalWidth = layoutParam.totalWidth;\r\n            var renderList = layoutParam.renderList;\r\n            for (var i = renderList.length - 1; i >= 0; i--) {\r\n                var item = renderList[i];\r\n                var itemNode = item.node;\r\n                var itemWidth = item.width;\r\n                var text = item.text;\r\n                if (totalWidth > availableSize.width) {\r\n                    totalWidth -= itemWidth - emptyItemWidth;\r\n                    itemWidth = emptyItemWidth;\r\n                    text = null;\r\n                }\r\n                var el = new Polygon({\r\n                    shape: {\r\n                        points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\r\n                    },\r\n                    style: defaults(normalStyleModel.getItemStyle(), {\r\n                        lineJoin: 'bevel'\r\n                    }),\r\n                    textContent: new ZRText({\r\n                        style: {\r\n                            text: text,\r\n                            fill: textStyleModel.getTextColor(),\r\n                            font: textStyleModel.getFont()\r\n                        }\r\n                    }),\r\n                    textConfig: {\r\n                        position: 'inside'\r\n                    },\r\n                    z: 10,\r\n                    onclick: curry(onSelect, itemNode)\r\n                });\r\n                el.disableLabelAnimation = true;\r\n                this.group.add(el);\r\n                packEventData(el, seriesModel, itemNode);\r\n                lastX += itemWidth + ITEM_GAP;\r\n            }\r\n        };\r\n        Breadcrumb.prototype.remove = function () {\r\n            this.group.removeAll();\r\n        };\r\n        return Breadcrumb;\r\n    }());\r\n    function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\r\n        var points = [\r\n            [head ? x : x - ARRAY_LENGTH, y],\r\n            [x + itemWidth, y],\r\n            [x + itemWidth, y + itemHeight],\r\n            [head ? x : x - ARRAY_LENGTH, y + itemHeight]\r\n        ];\r\n        !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\r\n        !head && points.push([x, y + itemHeight / 2]);\r\n        return points;\r\n    }\r\n    function packEventData(el, seriesModel, itemNode) {\r\n        getECData(el).eventData = {\r\n            componentType: 'series',\r\n            componentSubType: 'treemap',\r\n            componentIndex: seriesModel.componentIndex,\r\n            seriesIndex: seriesModel.componentIndex,\r\n            seriesName: seriesModel.name,\r\n            seriesType: 'treemap',\r\n            selfType: 'breadcrumb',\r\n            nodeData: {\r\n                dataIndex: itemNode && itemNode.dataIndex,\r\n                name: itemNode && itemNode.name\r\n            },\r\n            treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\r\n        };\r\n    }\n\n    var AnimationWrap = (function () {\r\n        function AnimationWrap() {\r\n            this._storage = [];\r\n            this._elExistsMap = {};\r\n        }\r\n        AnimationWrap.prototype.add = function (el, target, duration, delay, easing) {\r\n            if (this._elExistsMap[el.id]) {\r\n                return false;\r\n            }\r\n            this._elExistsMap[el.id] = true;\r\n            this._storage.push({\r\n                el: el,\r\n                target: target,\r\n                duration: duration,\r\n                delay: delay,\r\n                easing: easing\r\n            });\r\n            return true;\r\n        };\r\n        AnimationWrap.prototype.finished = function (callback) {\r\n            this._finishedCallback = callback;\r\n            return this;\r\n        };\r\n        AnimationWrap.prototype.start = function () {\r\n            var _this = this;\r\n            var count = this._storage.length;\r\n            var checkTerminate = function () {\r\n                count--;\r\n                if (count <= 0) {\r\n                    _this._storage.length = 0;\r\n                    _this._elExistsMap = {};\r\n                    _this._finishedCallback && _this._finishedCallback();\r\n                }\r\n            };\r\n            for (var i = 0, len = this._storage.length; i < len; i++) {\r\n                var item = this._storage[i];\r\n                item.el.animateTo(item.target, {\r\n                    duration: item.duration,\r\n                    delay: item.delay,\r\n                    easing: item.easing,\r\n                    setToFinal: true,\r\n                    done: checkTerminate,\r\n                    aborted: checkTerminate\r\n                });\r\n            }\r\n            return this;\r\n        };\r\n        return AnimationWrap;\r\n    }());\r\n    function createWrap() {\r\n        return new AnimationWrap();\r\n    }\n\n    var Group$1 = Group;\r\n    var Rect$1 = Rect;\r\n    var DRAG_THRESHOLD = 3;\r\n    var PATH_LABEL_NOAMAL = 'label';\r\n    var PATH_UPPERLABEL_NORMAL = 'upperLabel';\r\n    var Z_BASE = 10;\r\n    var Z_BG = 1;\r\n    var Z_CONTENT = 2;\r\n    var getStateItemStyle = makeStyleMapper([\r\n        ['fill', 'color'],\r\n        ['stroke', 'strokeColor'],\r\n        ['lineWidth', 'strokeWidth'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor']\r\n    ]);\r\n    var getItemStyleNormal = function (model) {\r\n        var itemStyle = getStateItemStyle(model);\r\n        itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\r\n        return itemStyle;\r\n    };\r\n    var inner$9 = makeInner();\r\n    var TreemapView = (function (_super) {\r\n        __extends(TreemapView, _super);\r\n        function TreemapView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TreemapView.type;\r\n            _this._state = 'ready';\r\n            _this._storage = createStorage();\r\n            return _this;\r\n        }\r\n        TreemapView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var models = ecModel.findComponents({\r\n                mainType: 'series', subType: 'treemap', query: payload\r\n            });\r\n            if (indexOf(models, seriesModel) < 0) {\r\n                return;\r\n            }\r\n            this.seriesModel = seriesModel;\r\n            this.api = api;\r\n            this.ecModel = ecModel;\r\n            var types = ['treemapZoomToNode', 'treemapRootToNode'];\r\n            var targetInfo = retrieveTargetInfo(payload, types, seriesModel);\r\n            var payloadType = payload && payload.type;\r\n            var layoutInfo = seriesModel.layoutInfo;\r\n            var isInit = !this._oldTree;\r\n            var thisStorage = this._storage;\r\n            var reRoot = (payloadType === 'treemapRootToNode' && targetInfo && thisStorage)\r\n                ? {\r\n                    rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\r\n                    direction: payload.direction\r\n                }\r\n                : null;\r\n            var containerGroup = this._giveContainerGroup(layoutInfo);\r\n            var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\r\n            (!isInit && (!payloadType\r\n                || payloadType === 'treemapZoomToNode'\r\n                || payloadType === 'treemapRootToNode'))\r\n                ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot)\r\n                : renderResult.renderFinally();\r\n            this._resetController(api);\r\n            this._renderBreadcrumb(seriesModel, api, targetInfo);\r\n        };\r\n        TreemapView.prototype._giveContainerGroup = function (layoutInfo) {\r\n            var containerGroup = this._containerGroup;\r\n            if (!containerGroup) {\r\n                containerGroup = this._containerGroup = new Group$1();\r\n                this._initEvents(containerGroup);\r\n                this.group.add(containerGroup);\r\n            }\r\n            containerGroup.x = layoutInfo.x;\r\n            containerGroup.y = layoutInfo.y;\r\n            return containerGroup;\r\n        };\r\n        TreemapView.prototype._doRender = function (containerGroup, seriesModel, reRoot) {\r\n            var thisTree = seriesModel.getData().tree;\r\n            var oldTree = this._oldTree;\r\n            var lastsForAnimation = createStorage();\r\n            var thisStorage = createStorage();\r\n            var oldStorage = this._storage;\r\n            var willInvisibleEls = [];\r\n            function doRenderNode(thisNode, oldNode, parentGroup, depth) {\r\n                return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth);\r\n            }\r\n            dualTravel(thisTree.root ? [thisTree.root] : [], (oldTree && oldTree.root) ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0);\r\n            var willDeleteEls = clearStorage(oldStorage);\r\n            this._oldTree = thisTree;\r\n            this._storage = thisStorage;\r\n            return {\r\n                lastsForAnimation: lastsForAnimation,\r\n                willDeleteEls: willDeleteEls,\r\n                renderFinally: renderFinally\r\n            };\r\n            function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\r\n                if (sameTree) {\r\n                    oldViewChildren = thisViewChildren;\r\n                    each(thisViewChildren, function (child, index) {\r\n                        !child.isRemoved() && processNode(index, index);\r\n                    });\r\n                }\r\n                else {\r\n                    (new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey))\r\n                        .add(processNode)\r\n                        .update(processNode)\r\n                        .remove(curry(processNode, null))\r\n                        .execute();\r\n                }\r\n                function getKey(node) {\r\n                    return node.getId();\r\n                }\r\n                function processNode(newIndex, oldIndex) {\r\n                    var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\r\n                    var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\r\n                    var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\r\n                    group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\r\n                }\r\n            }\r\n            function clearStorage(storage) {\r\n                var willDeleteEls = createStorage();\r\n                storage && each(storage, function (store, storageName) {\r\n                    var delEls = willDeleteEls[storageName];\r\n                    each(store, function (el) {\r\n                        el && (delEls.push(el), inner$9(el).willDelete = true);\r\n                    });\r\n                });\r\n                return willDeleteEls;\r\n            }\r\n            function renderFinally() {\r\n                each(willDeleteEls, function (els) {\r\n                    each(els, function (el) {\r\n                        el.parent && el.parent.remove(el);\r\n                    });\r\n                });\r\n                each(willInvisibleEls, function (el) {\r\n                    el.invisible = true;\r\n                    el.dirty();\r\n                });\r\n            }\r\n        };\r\n        TreemapView.prototype._doAnimation = function (containerGroup, renderResult, seriesModel, reRoot) {\r\n            if (!seriesModel.get('animation')) {\r\n                return;\r\n            }\r\n            var durationOption = seriesModel.get('animationDurationUpdate');\r\n            var easingOption = seriesModel.get('animationEasing');\r\n            var duration = (isFunction(durationOption) ? 0 : durationOption) || 0;\r\n            var easing = (isFunction(easingOption) ? null : easingOption) || 'cubicOut';\r\n            var animationWrap = createWrap();\r\n            each(renderResult.willDeleteEls, function (store, storageName) {\r\n                each(store, function (el, rawIndex) {\r\n                    if (el.invisible) {\r\n                        return;\r\n                    }\r\n                    var parent = el.parent;\r\n                    var target;\r\n                    var innerStore = inner$9(parent);\r\n                    if (reRoot && reRoot.direction === 'drillDown') {\r\n                        target = parent === reRoot.rootNodeGroup\r\n                            ? {\r\n                                shape: {\r\n                                    x: 0,\r\n                                    y: 0,\r\n                                    width: innerStore.nodeWidth,\r\n                                    height: innerStore.nodeHeight\r\n                                },\r\n                                style: {\r\n                                    opacity: 0\r\n                                }\r\n                            }\r\n                            : { style: { opacity: 0 } };\r\n                    }\r\n                    else {\r\n                        var targetX = 0;\r\n                        var targetY = 0;\r\n                        if (!innerStore.willDelete) {\r\n                            targetX = innerStore.nodeWidth / 2;\r\n                            targetY = innerStore.nodeHeight / 2;\r\n                        }\r\n                        target = storageName === 'nodeGroup'\r\n                            ? { x: targetX, y: targetY, style: { opacity: 0 } }\r\n                            : {\r\n                                shape: { x: targetX, y: targetY, width: 0, height: 0 },\r\n                                style: { opacity: 0 }\r\n                            };\r\n                    }\r\n                    target && animationWrap.add(el, target, duration, 0, easing);\r\n                });\r\n            });\r\n            each(this._storage, function (store, storageName) {\r\n                each(store, function (el, rawIndex) {\r\n                    var last = renderResult.lastsForAnimation[storageName][rawIndex];\r\n                    var target = {};\r\n                    if (!last) {\r\n                        return;\r\n                    }\r\n                    if (el instanceof Group) {\r\n                        if (last.oldX != null) {\r\n                            target.x = el.x;\r\n                            target.y = el.y;\r\n                            el.x = last.oldX;\r\n                            el.y = last.oldY;\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (last.oldShape) {\r\n                            target.shape = extend({}, el.shape);\r\n                            el.setShape(last.oldShape);\r\n                        }\r\n                        if (last.fadein) {\r\n                            el.setStyle('opacity', 0);\r\n                            target.style = { opacity: 1 };\r\n                        }\r\n                        else if (el.style.opacity !== 1) {\r\n                            target.style = { opacity: 1 };\r\n                        }\r\n                    }\r\n                    animationWrap.add(el, target, duration, 0, easing);\r\n                });\r\n            }, this);\r\n            this._state = 'animating';\r\n            animationWrap\r\n                .finished(bind(function () {\r\n                this._state = 'ready';\r\n                renderResult.renderFinally();\r\n            }, this))\r\n                .start();\r\n        };\r\n        TreemapView.prototype._resetController = function (api) {\r\n            var controller = this._controller;\r\n            if (!controller) {\r\n                controller = this._controller = new RoamController(api.getZr());\r\n                controller.enable(this.seriesModel.get('roam'));\r\n                controller.on('pan', bind(this._onPan, this));\r\n                controller.on('zoom', bind(this._onZoom, this));\r\n            }\r\n            var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\r\n            controller.setPointerChecker(function (e, x, y) {\r\n                return rect.contain(x, y);\r\n            });\r\n        };\r\n        TreemapView.prototype._clearController = function () {\r\n            var controller = this._controller;\r\n            if (controller) {\r\n                controller.dispose();\r\n                controller = null;\r\n            }\r\n        };\r\n        TreemapView.prototype._onPan = function (e) {\r\n            if (this._state !== 'animating'\r\n                && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {\r\n                var root = this.seriesModel.getData().tree.root;\r\n                if (!root) {\r\n                    return;\r\n                }\r\n                var rootLayout = root.getLayout();\r\n                if (!rootLayout) {\r\n                    return;\r\n                }\r\n                this.api.dispatchAction({\r\n                    type: 'treemapMove',\r\n                    from: this.uid,\r\n                    seriesId: this.seriesModel.id,\r\n                    rootRect: {\r\n                        x: rootLayout.x + e.dx, y: rootLayout.y + e.dy,\r\n                        width: rootLayout.width, height: rootLayout.height\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        TreemapView.prototype._onZoom = function (e) {\r\n            var mouseX = e.originX;\r\n            var mouseY = e.originY;\r\n            if (this._state !== 'animating') {\r\n                var root = this.seriesModel.getData().tree.root;\r\n                if (!root) {\r\n                    return;\r\n                }\r\n                var rootLayout = root.getLayout();\r\n                if (!rootLayout) {\r\n                    return;\r\n                }\r\n                var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\r\n                var layoutInfo = this.seriesModel.layoutInfo;\r\n                mouseX -= layoutInfo.x;\r\n                mouseY -= layoutInfo.y;\r\n                var m = create$1();\r\n                translate(m, m, [-mouseX, -mouseY]);\r\n                scale$1(m, m, [e.scale, e.scale]);\r\n                translate(m, m, [mouseX, mouseY]);\r\n                rect.applyTransform(m);\r\n                this.api.dispatchAction({\r\n                    type: 'treemapRender',\r\n                    from: this.uid,\r\n                    seriesId: this.seriesModel.id,\r\n                    rootRect: {\r\n                        x: rect.x, y: rect.y,\r\n                        width: rect.width, height: rect.height\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        TreemapView.prototype._initEvents = function (containerGroup) {\r\n            var _this = this;\r\n            containerGroup.on('click', function (e) {\r\n                if (_this._state !== 'ready') {\r\n                    return;\r\n                }\r\n                var nodeClick = _this.seriesModel.get('nodeClick', true);\r\n                if (!nodeClick) {\r\n                    return;\r\n                }\r\n                var targetInfo = _this.findTarget(e.offsetX, e.offsetY);\r\n                if (!targetInfo) {\r\n                    return;\r\n                }\r\n                var node = targetInfo.node;\r\n                if (node.getLayout().isLeafRoot) {\r\n                    _this._rootToNode(targetInfo);\r\n                }\r\n                else {\r\n                    if (nodeClick === 'zoomToNode') {\r\n                        _this._zoomToNode(targetInfo);\r\n                    }\r\n                    else if (nodeClick === 'link') {\r\n                        var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\r\n                        var link = itemModel.get('link', true);\r\n                        var linkTarget = itemModel.get('target', true) || 'blank';\r\n                        link && windowOpen(link, linkTarget);\r\n                    }\r\n                }\r\n            }, this);\r\n        };\r\n        TreemapView.prototype._renderBreadcrumb = function (seriesModel, api, targetInfo) {\r\n            var _this = this;\r\n            if (!targetInfo) {\r\n                targetInfo = seriesModel.get('leafDepth', true) != null\r\n                    ? { node: seriesModel.getViewRoot() }\r\n                    : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\r\n                if (!targetInfo) {\r\n                    targetInfo = { node: seriesModel.getData().tree.root };\r\n                }\r\n            }\r\n            (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group)))\r\n                .render(seriesModel, api, targetInfo.node, function (node) {\r\n                if (_this._state !== 'animating') {\r\n                    aboveViewRoot(seriesModel.getViewRoot(), node)\r\n                        ? _this._rootToNode({ node: node })\r\n                        : _this._zoomToNode({ node: node });\r\n                }\r\n            });\r\n        };\r\n        TreemapView.prototype.remove = function () {\r\n            this._clearController();\r\n            this._containerGroup && this._containerGroup.removeAll();\r\n            this._storage = createStorage();\r\n            this._state = 'ready';\r\n            this._breadcrumb && this._breadcrumb.remove();\r\n        };\r\n        TreemapView.prototype.dispose = function () {\r\n            this._clearController();\r\n        };\r\n        TreemapView.prototype._zoomToNode = function (targetInfo) {\r\n            this.api.dispatchAction({\r\n                type: 'treemapZoomToNode',\r\n                from: this.uid,\r\n                seriesId: this.seriesModel.id,\r\n                targetNode: targetInfo.node\r\n            });\r\n        };\r\n        TreemapView.prototype._rootToNode = function (targetInfo) {\r\n            this.api.dispatchAction({\r\n                type: 'treemapRootToNode',\r\n                from: this.uid,\r\n                seriesId: this.seriesModel.id,\r\n                targetNode: targetInfo.node\r\n            });\r\n        };\r\n        TreemapView.prototype.findTarget = function (x, y) {\r\n            var targetInfo;\r\n            var viewRoot = this.seriesModel.getViewRoot();\r\n            viewRoot.eachNode({ attr: 'viewChildren', order: 'preorder' }, function (node) {\r\n                var bgEl = this._storage.background[node.getRawIndex()];\r\n                if (bgEl) {\r\n                    var point = bgEl.transformCoordToLocal(x, y);\r\n                    var shape = bgEl.shape;\r\n                    if (shape.x <= point[0]\r\n                        && point[0] <= shape.x + shape.width\r\n                        && shape.y <= point[1]\r\n                        && point[1] <= shape.y + shape.height) {\r\n                        targetInfo = {\r\n                            node: node,\r\n                            offsetX: point[0],\r\n                            offsetY: point[1]\r\n                        };\r\n                    }\r\n                    else {\r\n                        return false;\r\n                    }\r\n                }\r\n            }, this);\r\n            return targetInfo;\r\n        };\r\n        TreemapView.type = 'treemap';\r\n        return TreemapView;\r\n    }(ChartView));\r\n    function createStorage() {\r\n        return {\r\n            nodeGroup: [],\r\n            background: [],\r\n            content: []\r\n        };\r\n    }\r\n    function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\r\n        if (!thisNode) {\r\n            return;\r\n        }\r\n        var thisLayout = thisNode.getLayout();\r\n        var data = seriesModel.getData();\r\n        var nodeModel = thisNode.getModel();\r\n        data.setItemGraphicEl(thisNode.dataIndex, null);\r\n        if (!thisLayout || !thisLayout.isInView) {\r\n            return;\r\n        }\r\n        var thisWidth = thisLayout.width;\r\n        var thisHeight = thisLayout.height;\r\n        var borderWidth = thisLayout.borderWidth;\r\n        var thisInvisible = thisLayout.invisible;\r\n        var thisRawIndex = thisNode.getRawIndex();\r\n        var oldRawIndex = oldNode && oldNode.getRawIndex();\r\n        var thisViewChildren = thisNode.viewChildren;\r\n        var upperHeight = thisLayout.upperHeight;\r\n        var isParent = thisViewChildren && thisViewChildren.length;\r\n        var itemStyleNormalModel = nodeModel.getModel('itemStyle');\r\n        var itemStyleEmphasisModel = nodeModel.getModel(['emphasis', 'itemStyle']);\r\n        var itemStyleBlurModel = nodeModel.getModel(['blur', 'itemStyle']);\r\n        var itemStyleSelectModel = nodeModel.getModel(['select', 'itemStyle']);\r\n        var borderRadius = itemStyleNormalModel.get('borderRadius') || 0;\r\n        var group = giveGraphic('nodeGroup', Group$1);\r\n        if (!group) {\r\n            return;\r\n        }\r\n        parentGroup.add(group);\r\n        group.x = thisLayout.x || 0;\r\n        group.y = thisLayout.y || 0;\r\n        group.markRedraw();\r\n        inner$9(group).nodeWidth = thisWidth;\r\n        inner$9(group).nodeHeight = thisHeight;\r\n        if (thisLayout.isAboveViewRoot) {\r\n            return group;\r\n        }\r\n        var bg = giveGraphic('background', Rect$1, depth, Z_BG);\r\n        bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight);\r\n        var focus = nodeModel.get(['emphasis', 'focus']);\r\n        var blurScope = nodeModel.get(['emphasis', 'blurScope']);\r\n        var focusDataIndices = focus === 'ancestor'\r\n            ? thisNode.getAncestorsIndices()\r\n            : focus === 'descendant' ? thisNode.getDescendantIndices() : null;\r\n        if (isParent) {\r\n            if (isHighDownDispatcher(group)) {\r\n                setAsHighDownDispatcher(group, false);\r\n            }\r\n            if (bg) {\r\n                setAsHighDownDispatcher(bg, true);\r\n                data.setItemGraphicEl(thisNode.dataIndex, bg);\r\n                enableHoverFocus(bg, focusDataIndices || focus, blurScope);\r\n            }\r\n        }\r\n        else {\r\n            var content = giveGraphic('content', Rect$1, depth, Z_CONTENT);\r\n            content && renderContent(group, content);\r\n            if (bg && isHighDownDispatcher(bg)) {\r\n                setAsHighDownDispatcher(bg, false);\r\n            }\r\n            setAsHighDownDispatcher(group, true);\r\n            data.setItemGraphicEl(thisNode.dataIndex, group);\r\n            enableHoverFocus(group, focusDataIndices || focus, blurScope);\r\n        }\r\n        return group;\r\n        function renderBackground(group, bg, useUpperLabel) {\r\n            var ecData = getECData(bg);\r\n            ecData.dataIndex = thisNode.dataIndex;\r\n            ecData.seriesIndex = seriesModel.seriesIndex;\r\n            bg.setShape({ x: 0, y: 0, width: thisWidth, height: thisHeight, r: borderRadius });\r\n            if (thisInvisible) {\r\n                processInvisible(bg);\r\n            }\r\n            else {\r\n                bg.invisible = false;\r\n                var style = thisNode.getVisual('style');\r\n                var visualBorderColor = style.stroke;\r\n                var normalStyle = getItemStyleNormal(itemStyleNormalModel);\r\n                normalStyle.fill = visualBorderColor;\r\n                var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);\r\n                emphasisStyle.fill = itemStyleEmphasisModel.get('borderColor');\r\n                var blurStyle = getStateItemStyle(itemStyleBlurModel);\r\n                blurStyle.fill = itemStyleBlurModel.get('borderColor');\r\n                var selectStyle = getStateItemStyle(itemStyleSelectModel);\r\n                selectStyle.fill = itemStyleSelectModel.get('borderColor');\r\n                if (useUpperLabel) {\r\n                    var upperLabelWidth = thisWidth - 2 * borderWidth;\r\n                    prepareText(bg, visualBorderColor, upperLabelWidth, upperHeight, style.opacity, { x: borderWidth, y: 0, width: upperLabelWidth, height: upperHeight });\r\n                }\r\n                else {\r\n                    bg.removeTextContent();\r\n                }\r\n                bg.setStyle(normalStyle);\r\n                bg.ensureState('emphasis').style = emphasisStyle;\r\n                bg.ensureState('blur').style = blurStyle;\r\n                bg.ensureState('select').style = selectStyle;\r\n                setDefaultStateProxy(bg);\r\n            }\r\n            group.add(bg);\r\n        }\r\n        function renderContent(group, content) {\r\n            var ecData = getECData(content);\r\n            ecData.dataIndex = thisNode.dataIndex;\r\n            ecData.seriesIndex = seriesModel.seriesIndex;\r\n            var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\r\n            var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\r\n            content.culling = true;\r\n            content.setShape({\r\n                x: borderWidth,\r\n                y: borderWidth,\r\n                width: contentWidth,\r\n                height: contentHeight,\r\n                r: borderRadius\r\n            });\r\n            if (thisInvisible) {\r\n                processInvisible(content);\r\n            }\r\n            else {\r\n                content.invisible = false;\r\n                var nodeStyle = thisNode.getVisual('style');\r\n                var visualColor = nodeStyle.fill;\r\n                var normalStyle = getItemStyleNormal(itemStyleNormalModel);\r\n                normalStyle.fill = visualColor;\r\n                normalStyle.decal = nodeStyle.decal;\r\n                var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);\r\n                var blurStyle = getStateItemStyle(itemStyleBlurModel);\r\n                var selectStyle = getStateItemStyle(itemStyleSelectModel);\r\n                prepareText(content, visualColor, contentWidth, nodeStyle.opacity);\r\n                content.setStyle(normalStyle);\r\n                content.ensureState('emphasis').style = emphasisStyle;\r\n                content.ensureState('blur').style = blurStyle;\r\n                content.ensureState('select').style = selectStyle;\r\n                setDefaultStateProxy(content);\r\n            }\r\n            group.add(content);\r\n        }\r\n        function processInvisible(element) {\r\n            !element.invisible && willInvisibleEls.push(element);\r\n        }\r\n        function prepareText(rectEl, visualColor, visualOpacity, width, height, upperLabelRect) {\r\n            var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\r\n            var text = retrieve(seriesModel.getFormattedLabel(thisNode.dataIndex, 'normal', null, null, normalLabelModel.get('formatter')), convertOptionIdName(nodeModel.get('name'), null));\r\n            if (!upperLabelRect && thisLayout.isLeafRoot) {\r\n                var iconChar = seriesModel.get('drillDownIcon', true);\r\n                text = iconChar ? iconChar + ' ' + text : text;\r\n            }\r\n            var isShow = normalLabelModel.getShallow('show');\r\n            setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), {\r\n                defaultText: isShow ? text : null,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: visualOpacity,\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: thisNode.dataIndex\r\n            });\r\n            var textEl = rectEl.getTextContent();\r\n            var textStyle = textEl.style;\r\n            var textPadding = normalizeCssArray(textStyle.padding || 0);\r\n            if (upperLabelRect) {\r\n                rectEl.setTextConfig({\r\n                    layoutRect: upperLabelRect\r\n                });\r\n                textEl.disableLabelLayout = true;\r\n            }\r\n            textEl.beforeUpdate = function () {\r\n                var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0);\r\n                var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0);\r\n                if (textStyle.width !== width || textStyle.height !== height) {\r\n                    textEl.setStyle({\r\n                        width: width,\r\n                        height: height\r\n                    });\r\n                }\r\n            };\r\n            textStyle.truncateMinChar = 2;\r\n            textStyle.lineOverflow = 'truncate';\r\n            addDrillDownIcon(textStyle, upperLabelRect, thisLayout);\r\n            var textEmphasisState = textEl.getState('emphasis');\r\n            addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout);\r\n        }\r\n        function addDrillDownIcon(style, upperLabelRect, thisLayout) {\r\n            var text = style ? style.text : null;\r\n            if (!upperLabelRect && thisLayout.isLeafRoot && text != null) {\r\n                var iconChar = seriesModel.get('drillDownIcon', true);\r\n                style.text = iconChar ? iconChar + ' ' + text : text;\r\n            }\r\n        }\r\n        function giveGraphic(storageName, Ctor, depth, z) {\r\n            var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\r\n            var lasts = lastsForAnimation[storageName];\r\n            if (element) {\r\n                oldStorage[storageName][oldRawIndex] = null;\r\n                prepareAnimationWhenHasOld(lasts, element);\r\n            }\r\n            else if (!thisInvisible) {\r\n                element = new Ctor();\r\n                if (element instanceof Displayable) {\r\n                    element.z = calculateZ(depth, z);\r\n                }\r\n                prepareAnimationWhenNoOld(lasts, element);\r\n            }\r\n            return (thisStorage[storageName][thisRawIndex] = element);\r\n        }\r\n        function prepareAnimationWhenHasOld(lasts, element) {\r\n            var lastCfg = lasts[thisRawIndex] = {};\r\n            if (element instanceof Group$1) {\r\n                lastCfg.oldX = element.x;\r\n                lastCfg.oldY = element.y;\r\n            }\r\n            else {\r\n                lastCfg.oldShape = extend({}, element.shape);\r\n            }\r\n        }\r\n        function prepareAnimationWhenNoOld(lasts, element) {\r\n            var lastCfg = lasts[thisRawIndex] = {};\r\n            var parentNode = thisNode.parentNode;\r\n            var isGroup = element instanceof Group;\r\n            if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\r\n                var parentOldX = 0;\r\n                var parentOldY = 0;\r\n                var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\r\n                if (!reRoot && parentOldBg && parentOldBg.oldShape) {\r\n                    parentOldX = parentOldBg.oldShape.width;\r\n                    parentOldY = parentOldBg.oldShape.height;\r\n                }\r\n                if (isGroup) {\r\n                    lastCfg.oldX = 0;\r\n                    lastCfg.oldY = parentOldY;\r\n                }\r\n                else {\r\n                    lastCfg.oldShape = { x: parentOldX, y: parentOldY, width: 0, height: 0 };\r\n                }\r\n            }\r\n            lastCfg.fadein = !isGroup;\r\n        }\r\n    }\r\n    function calculateZ(depth, zInLevel) {\r\n        var zb = depth * Z_BASE + zInLevel;\r\n        return (zb - 1) / zb;\r\n    }\r\n    ChartView.registerClass(TreemapView);\n\n    var noop$1 = function () { };\r\n    var actionTypes = [\r\n        'treemapZoomToNode',\r\n        'treemapRender',\r\n        'treemapMove'\r\n    ];\r\n    for (var i$1 = 0; i$1 < actionTypes.length; i$1++) {\r\n        registerAction({\r\n            type: actionTypes[i$1],\r\n            update: 'updateView'\r\n        }, noop$1);\r\n    }\r\n    registerAction({ type: 'treemapRootToNode', update: 'updateView' }, function (payload, ecModel) {\r\n        ecModel.eachComponent({ mainType: 'series', subType: 'treemap', query: payload }, handleRootToNode);\r\n        function handleRootToNode(model, index) {\r\n            var types = ['treemapZoomToNode', 'treemapRootToNode'];\r\n            var targetInfo = retrieveTargetInfo(payload, types, model);\r\n            if (targetInfo) {\r\n                var originViewRoot = model.getViewRoot();\r\n                if (originViewRoot) {\r\n                    payload.direction = aboveViewRoot(originViewRoot, targetInfo.node)\r\n                        ? 'rollUp' : 'drillDown';\r\n                }\r\n                model.resetViewRoot(targetInfo.node);\r\n            }\r\n        }\r\n    });\n\n    var each$4 = each;\r\n    var isObject$4 = isObject;\r\n    var CATEGORY_DEFAULT_VISUAL_INDEX = -1;\r\n    var VisualMapping = (function () {\r\n        function VisualMapping(option) {\r\n            var mappingMethod = option.mappingMethod;\r\n            var visualType = option.type;\r\n            var thisOption = this.option = clone(option);\r\n            this.type = visualType;\r\n            this.mappingMethod = mappingMethod;\r\n            this._normalizeData = normalizers[mappingMethod];\r\n            var visualHandler = VisualMapping.visualHandlers[visualType];\r\n            this.applyVisual = visualHandler.applyVisual;\r\n            this.getColorMapper = visualHandler.getColorMapper;\r\n            this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod];\r\n            if (mappingMethod === 'piecewise') {\r\n                normalizeVisualRange(thisOption);\r\n                preprocessForPiecewise(thisOption);\r\n            }\r\n            else if (mappingMethod === 'category') {\r\n                thisOption.categories\r\n                    ? preprocessForSpecifiedCategory(thisOption)\r\n                    : normalizeVisualRange(thisOption, true);\r\n            }\r\n            else {\r\n                assert(mappingMethod !== 'linear' || thisOption.dataExtent);\r\n                normalizeVisualRange(thisOption);\r\n            }\r\n        }\r\n        VisualMapping.prototype.mapValueToVisual = function (value) {\r\n            var normalized = this._normalizeData(value);\r\n            return this._normalizedToVisual(normalized, value);\r\n        };\r\n        VisualMapping.prototype.getNormalizer = function () {\r\n            return bind(this._normalizeData, this);\r\n        };\r\n        VisualMapping.listVisualTypes = function () {\r\n            return keys(VisualMapping.visualHandlers);\r\n        };\r\n        VisualMapping.isValidType = function (visualType) {\r\n            return VisualMapping.visualHandlers.hasOwnProperty(visualType);\r\n        };\r\n        VisualMapping.eachVisual = function (visual, callback, context) {\r\n            if (isObject(visual)) {\r\n                each(visual, callback, context);\r\n            }\r\n            else {\r\n                callback.call(context, visual);\r\n            }\r\n        };\r\n        VisualMapping.mapVisual = function (visual, callback, context) {\r\n            var isPrimary;\r\n            var newVisual = isArray(visual)\r\n                ? []\r\n                : isObject(visual)\r\n                    ? {}\r\n                    : (isPrimary = true, null);\r\n            VisualMapping.eachVisual(visual, function (v, key) {\r\n                var newVal = callback.call(context, v, key);\r\n                isPrimary ? (newVisual = newVal) : (newVisual[key] = newVal);\r\n            });\r\n            return newVisual;\r\n        };\r\n        VisualMapping.retrieveVisuals = function (obj) {\r\n            var ret = {};\r\n            var hasVisual;\r\n            obj && each$4(VisualMapping.visualHandlers, function (h, visualType) {\r\n                if (obj.hasOwnProperty(visualType)) {\r\n                    ret[visualType] = obj[visualType];\r\n                    hasVisual = true;\r\n                }\r\n            });\r\n            return hasVisual ? ret : null;\r\n        };\r\n        VisualMapping.prepareVisualTypes = function (visualTypes) {\r\n            if (isArray(visualTypes)) {\r\n                visualTypes = visualTypes.slice();\r\n            }\r\n            else if (isObject$4(visualTypes)) {\r\n                var types_1 = [];\r\n                each$4(visualTypes, function (item, type) {\r\n                    types_1.push(type);\r\n                });\r\n                visualTypes = types_1;\r\n            }\r\n            else {\r\n                return [];\r\n            }\r\n            visualTypes.sort(function (type1, type2) {\r\n                return (type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0)\r\n                    ? 1 : -1;\r\n            });\r\n            return visualTypes;\r\n        };\r\n        VisualMapping.dependsOn = function (visualType1, visualType2) {\r\n            return visualType2 === 'color'\r\n                ? !!(visualType1 && visualType1.indexOf(visualType2) === 0)\r\n                : visualType1 === visualType2;\r\n        };\r\n        VisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\r\n            var possibleI;\r\n            var abs = Infinity;\r\n            for (var i = 0, len = pieceList.length; i < len; i++) {\r\n                var pieceValue = pieceList[i].value;\r\n                if (pieceValue != null) {\r\n                    if (pieceValue === value\r\n                        || (typeof pieceValue === 'string' && pieceValue === value + '')) {\r\n                        return i;\r\n                    }\r\n                    findClosestWhenOutside && updatePossible(pieceValue, i);\r\n                }\r\n            }\r\n            for (var i = 0, len = pieceList.length; i < len; i++) {\r\n                var piece = pieceList[i];\r\n                var interval = piece.interval;\r\n                var close_1 = piece.close;\r\n                if (interval) {\r\n                    if (interval[0] === -Infinity) {\r\n                        if (littleThan(close_1[1], value, interval[1])) {\r\n                            return i;\r\n                        }\r\n                    }\r\n                    else if (interval[1] === Infinity) {\r\n                        if (littleThan(close_1[0], interval[0], value)) {\r\n                            return i;\r\n                        }\r\n                    }\r\n                    else if (littleThan(close_1[0], interval[0], value)\r\n                        && littleThan(close_1[1], value, interval[1])) {\r\n                        return i;\r\n                    }\r\n                    findClosestWhenOutside && updatePossible(interval[0], i);\r\n                    findClosestWhenOutside && updatePossible(interval[1], i);\r\n                }\r\n            }\r\n            if (findClosestWhenOutside) {\r\n                return value === Infinity\r\n                    ? pieceList.length - 1\r\n                    : value === -Infinity\r\n                        ? 0\r\n                        : possibleI;\r\n            }\r\n            function updatePossible(val, index) {\r\n                var newAbs = Math.abs(val - value);\r\n                if (newAbs < abs) {\r\n                    abs = newAbs;\r\n                    possibleI = index;\r\n                }\r\n            }\r\n        };\r\n        VisualMapping.visualHandlers = {\r\n            color: {\r\n                applyVisual: makeApplyVisual('color'),\r\n                getColorMapper: function () {\r\n                    var thisOption = this.option;\r\n                    return bind(thisOption.mappingMethod === 'category'\r\n                        ? function (value, isNormalized) {\r\n                            !isNormalized && (value = this._normalizeData(value));\r\n                            return doMapCategory.call(this, value);\r\n                        }\r\n                        : function (value, isNormalized, out) {\r\n                            var returnRGBArray = !!out;\r\n                            !isNormalized && (value = this._normalizeData(value));\r\n                            out = fastLerp(value, thisOption.parsedVisual, out);\r\n                            return returnRGBArray ? out : stringify(out, 'rgba');\r\n                        }, this);\r\n                },\r\n                _normalizedToVisual: {\r\n                    linear: function (normalized) {\r\n                        return stringify(fastLerp(normalized, this.option.parsedVisual), 'rgba');\r\n                    },\r\n                    category: doMapCategory,\r\n                    piecewise: function (normalized, value) {\r\n                        var result = getSpecifiedVisual.call(this, value);\r\n                        if (result == null) {\r\n                            result = stringify(fastLerp(normalized, this.option.parsedVisual), 'rgba');\r\n                        }\r\n                        return result;\r\n                    },\r\n                    fixed: doMapFixed\r\n                }\r\n            },\r\n            colorHue: makePartialColorVisualHandler(function (color$1, value) {\r\n                return modifyHSL(color$1, value);\r\n            }),\r\n            colorSaturation: makePartialColorVisualHandler(function (color$1, value) {\r\n                return modifyHSL(color$1, null, value);\r\n            }),\r\n            colorLightness: makePartialColorVisualHandler(function (color$1, value) {\r\n                return modifyHSL(color$1, null, null, value);\r\n            }),\r\n            colorAlpha: makePartialColorVisualHandler(function (color$1, value) {\r\n                return modifyAlpha(color$1, value);\r\n            }),\r\n            decal: {\r\n                applyVisual: makeApplyVisual('decal'),\r\n                _normalizedToVisual: {\r\n                    linear: null,\r\n                    category: doMapCategory,\r\n                    piecewise: null,\r\n                    fixed: null\r\n                }\r\n            },\r\n            opacity: {\r\n                applyVisual: makeApplyVisual('opacity'),\r\n                _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\r\n            },\r\n            liftZ: {\r\n                applyVisual: makeApplyVisual('liftZ'),\r\n                _normalizedToVisual: {\r\n                    linear: doMapFixed,\r\n                    category: doMapFixed,\r\n                    piecewise: doMapFixed,\r\n                    fixed: doMapFixed\r\n                }\r\n            },\r\n            symbol: {\r\n                applyVisual: function (value, getter, setter) {\r\n                    var symbolCfg = this.mapValueToVisual(value);\r\n                    setter('symbol', symbolCfg);\r\n                },\r\n                _normalizedToVisual: {\r\n                    linear: doMapToArray,\r\n                    category: doMapCategory,\r\n                    piecewise: function (normalized, value) {\r\n                        var result = getSpecifiedVisual.call(this, value);\r\n                        if (result == null) {\r\n                            result = doMapToArray.call(this, normalized);\r\n                        }\r\n                        return result;\r\n                    },\r\n                    fixed: doMapFixed\r\n                }\r\n            },\r\n            symbolSize: {\r\n                applyVisual: makeApplyVisual('symbolSize'),\r\n                _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\r\n            }\r\n        };\r\n        return VisualMapping;\r\n    }());\r\n    function preprocessForPiecewise(thisOption) {\r\n        var pieceList = thisOption.pieceList;\r\n        thisOption.hasSpecialVisual = false;\r\n        each(pieceList, function (piece, index) {\r\n            piece.originIndex = index;\r\n            if (piece.visual != null) {\r\n                thisOption.hasSpecialVisual = true;\r\n            }\r\n        });\r\n    }\r\n    function preprocessForSpecifiedCategory(thisOption) {\r\n        var categories = thisOption.categories;\r\n        var categoryMap = thisOption.categoryMap = {};\r\n        var visual = thisOption.visual;\r\n        each$4(categories, function (cate, index) {\r\n            categoryMap[cate] = index;\r\n        });\r\n        if (!isArray(visual)) {\r\n            var visualArr_1 = [];\r\n            if (isObject(visual)) {\r\n                each$4(visual, function (v, cate) {\r\n                    var index = categoryMap[cate];\r\n                    visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\r\n                });\r\n            }\r\n            else {\r\n                visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\r\n            }\r\n            visual = setVisualToOption(thisOption, visualArr_1);\r\n        }\r\n        for (var i = categories.length - 1; i >= 0; i--) {\r\n            if (visual[i] == null) {\r\n                delete categoryMap[categories[i]];\r\n                categories.pop();\r\n            }\r\n        }\r\n    }\r\n    function normalizeVisualRange(thisOption, isCategory) {\r\n        var visual = thisOption.visual;\r\n        var visualArr = [];\r\n        if (isObject(visual)) {\r\n            each$4(visual, function (v) {\r\n                visualArr.push(v);\r\n            });\r\n        }\r\n        else if (visual != null) {\r\n            visualArr.push(visual);\r\n        }\r\n        var doNotNeedPair = { color: 1, symbol: 1 };\r\n        if (!isCategory\r\n            && visualArr.length === 1\r\n            && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\r\n            visualArr[1] = visualArr[0];\r\n        }\r\n        setVisualToOption(thisOption, visualArr);\r\n    }\r\n    function makePartialColorVisualHandler(applyValue) {\r\n        return {\r\n            applyVisual: function (value, getter, setter) {\r\n                var colorChannel = this.mapValueToVisual(value);\r\n                setter('color', applyValue(getter('color'), colorChannel));\r\n            },\r\n            _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\r\n        };\r\n    }\r\n    function doMapToArray(normalized) {\r\n        var visual = this.option.visual;\r\n        return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\r\n    }\r\n    function makeApplyVisual(visualType) {\r\n        return function (value, getter, setter) {\r\n            setter(visualType, this.mapValueToVisual(value));\r\n        };\r\n    }\r\n    function doMapCategory(normalized) {\r\n        var visual = this.option.visual;\r\n        return visual[(this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX)\r\n            ? normalized % visual.length\r\n            : normalized];\r\n    }\r\n    function doMapFixed() {\r\n        return this.option.visual[0];\r\n    }\r\n    function createNormalizedToNumericVisual(sourceExtent) {\r\n        return {\r\n            linear: function (normalized) {\r\n                return linearMap(normalized, sourceExtent, this.option.visual, true);\r\n            },\r\n            category: doMapCategory,\r\n            piecewise: function (normalized, value) {\r\n                var result = getSpecifiedVisual.call(this, value);\r\n                if (result == null) {\r\n                    result = linearMap(normalized, sourceExtent, this.option.visual, true);\r\n                }\r\n                return result;\r\n            },\r\n            fixed: doMapFixed\r\n        };\r\n    }\r\n    function getSpecifiedVisual(value) {\r\n        var thisOption = this.option;\r\n        var pieceList = thisOption.pieceList;\r\n        if (thisOption.hasSpecialVisual) {\r\n            var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\r\n            var piece = pieceList[pieceIndex];\r\n            if (piece && piece.visual) {\r\n                return piece.visual[this.type];\r\n            }\r\n        }\r\n    }\r\n    function setVisualToOption(thisOption, visualArr) {\r\n        thisOption.visual = visualArr;\r\n        if (thisOption.type === 'color') {\r\n            thisOption.parsedVisual = map(visualArr, function (item) {\r\n                return parse(item);\r\n            });\r\n        }\r\n        return visualArr;\r\n    }\r\n    var normalizers = {\r\n        linear: function (value) {\r\n            return linearMap(value, this.option.dataExtent, [0, 1], true);\r\n        },\r\n        piecewise: function (value) {\r\n            var pieceList = this.option.pieceList;\r\n            var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\r\n            if (pieceIndex != null) {\r\n                return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\r\n            }\r\n        },\r\n        category: function (value) {\r\n            var index = this.option.categories\r\n                ? this.option.categoryMap[value]\r\n                : value;\r\n            return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\r\n        },\r\n        fixed: noop\r\n    };\r\n    function littleThan(close, a, b) {\r\n        return close ? a <= b : a < b;\r\n    }\n\n    var ITEM_STYLE_NORMAL = 'itemStyle';\r\n    var inner$a = makeInner();\r\n    var treemapVisual = {\r\n        seriesType: 'treemap',\r\n        reset: function (seriesModel) {\r\n            var tree = seriesModel.getData().tree;\r\n            var root = tree.root;\r\n            if (root.isRemoved()) {\r\n                return;\r\n            }\r\n            travelTree(root, {}, seriesModel.getViewRoot().getAncestors(), seriesModel);\r\n        }\r\n    };\r\n    function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {\r\n        var nodeModel = node.getModel();\r\n        var nodeLayout = node.getLayout();\r\n        var data = node.hostTree.data;\r\n        if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\r\n            return;\r\n        }\r\n        var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL);\r\n        var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel);\r\n        var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\r\n        var borderColor = nodeItemStyleModel.get('borderColor');\r\n        var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\r\n        var thisNodeColor;\r\n        if (borderColorSaturation != null) {\r\n            thisNodeColor = calculateColor(visuals);\r\n            borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\r\n        }\r\n        existsStyle.stroke = borderColor;\r\n        var viewChildren = node.viewChildren;\r\n        if (!viewChildren || !viewChildren.length) {\r\n            thisNodeColor = calculateColor(visuals);\r\n            existsStyle.fill = thisNodeColor;\r\n        }\r\n        else {\r\n            var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren);\r\n            each(viewChildren, function (child, index) {\r\n                if (child.depth >= viewRootAncestors.length\r\n                    || child === viewRootAncestors[child.depth]) {\r\n                    var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel);\r\n                    travelTree(child, childVisual, viewRootAncestors, seriesModel);\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {\r\n        var visuals = extend({}, designatedVisual);\r\n        var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;\r\n        each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\r\n            designatedVisualItemStyle[visualName] = designatedVisual[visualName];\r\n            var val = nodeItemStyleModel.get(visualName);\r\n            designatedVisualItemStyle[visualName] = null;\r\n            val != null && (visuals[visualName] = val);\r\n        });\r\n        return visuals;\r\n    }\r\n    function calculateColor(visuals) {\r\n        var color = getValueVisualDefine(visuals, 'color');\r\n        if (color) {\r\n            var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\r\n            var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\r\n            if (colorSaturation) {\r\n                color = modifyHSL(color, null, null, colorSaturation);\r\n            }\r\n            if (colorAlpha) {\r\n                color = modifyAlpha(color, colorAlpha);\r\n            }\r\n            return color;\r\n        }\r\n    }\r\n    function calculateBorderColor(borderColorSaturation, thisNodeColor) {\r\n        return thisNodeColor != null\r\n            ? modifyHSL(thisNodeColor, null, null, borderColorSaturation)\r\n            : null;\r\n    }\r\n    function getValueVisualDefine(visuals, name) {\r\n        var value = visuals[name];\r\n        if (value != null && value !== 'none') {\r\n            return value;\r\n        }\r\n    }\r\n    function buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\r\n        if (!viewChildren || !viewChildren.length) {\r\n            return;\r\n        }\r\n        var rangeVisual = getRangeVisual(nodeModel, 'color')\r\n            || (visuals.color != null\r\n                && visuals.color !== 'none'\r\n                && (getRangeVisual(nodeModel, 'colorAlpha')\r\n                    || getRangeVisual(nodeModel, 'colorSaturation')));\r\n        if (!rangeVisual) {\r\n            return;\r\n        }\r\n        var visualMin = nodeModel.get('visualMin');\r\n        var visualMax = nodeModel.get('visualMax');\r\n        var dataExtent = nodeLayout.dataExtent.slice();\r\n        visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\r\n        visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\r\n        var colorMappingBy = nodeModel.get('colorMappingBy');\r\n        var opt = {\r\n            type: rangeVisual.name,\r\n            dataExtent: dataExtent,\r\n            visual: rangeVisual.range\r\n        };\r\n        if (opt.type === 'color'\r\n            && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\r\n            opt.mappingMethod = 'category';\r\n            opt.loop = true;\r\n        }\r\n        else {\r\n            opt.mappingMethod = 'linear';\r\n        }\r\n        var mapping = new VisualMapping(opt);\r\n        inner$a(mapping).drColorMappingBy = colorMappingBy;\r\n        return mapping;\r\n    }\r\n    function getRangeVisual(nodeModel, name) {\r\n        var range = nodeModel.get(name);\r\n        return (isArray(range) && range.length) ? {\r\n            name: name,\r\n            range: range\r\n        } : null;\r\n    }\r\n    function mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\r\n        var childVisuals = extend({}, visuals);\r\n        if (mapping) {\r\n            var mappingType = mapping.type;\r\n            var colorMappingBy = mappingType === 'color' && inner$a(mapping).drColorMappingBy;\r\n            var value = colorMappingBy === 'index'\r\n                ? index\r\n                : colorMappingBy === 'id'\r\n                    ? seriesModel.mapIdToIndex(child.getId())\r\n                    : child.getValue(nodeModel.get('visualDimension'));\r\n            childVisuals[mappingType] = mapping.mapValueToVisual(value);\r\n        }\r\n        return childVisuals;\r\n    }\n\n    var mathMax$7 = Math.max;\r\n    var mathMin$7 = Math.min;\r\n    var retrieveValue = retrieve;\r\n    var each$5 = each;\r\n    var PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\r\n    var PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\r\n    var PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\r\n    var PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\r\n    var treemapLayout = {\r\n        seriesType: 'treemap',\r\n        reset: function (seriesModel, ecModel, api, payload) {\r\n            var ecWidth = api.getWidth();\r\n            var ecHeight = api.getHeight();\r\n            var seriesOption = seriesModel.option;\r\n            var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            var size = seriesOption.size || [];\r\n            var containerWidth = parsePercent$2(retrieveValue(layoutInfo.width, size[0]), ecWidth);\r\n            var containerHeight = parsePercent$2(retrieveValue(layoutInfo.height, size[1]), ecHeight);\r\n            var payloadType = payload && payload.type;\r\n            var types = ['treemapZoomToNode', 'treemapRootToNode'];\r\n            var targetInfo = retrieveTargetInfo(payload, types, seriesModel);\r\n            var rootRect = (payloadType === 'treemapRender' || payloadType === 'treemapMove')\r\n                ? payload.rootRect : null;\r\n            var viewRoot = seriesModel.getViewRoot();\r\n            var viewAbovePath = getPathToRoot(viewRoot);\r\n            if (payloadType !== 'treemapMove') {\r\n                var rootSize = payloadType === 'treemapZoomToNode'\r\n                    ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight)\r\n                    : rootRect\r\n                        ? [rootRect.width, rootRect.height]\r\n                        : [containerWidth, containerHeight];\r\n                var sort_1 = seriesOption.sort;\r\n                if (sort_1 && sort_1 !== 'asc' && sort_1 !== 'desc') {\r\n                    sort_1 = 'desc';\r\n                }\r\n                var options = {\r\n                    squareRatio: seriesOption.squareRatio,\r\n                    sort: sort_1,\r\n                    leafDepth: seriesOption.leafDepth\r\n                };\r\n                viewRoot.hostTree.clearLayouts();\r\n                var viewRootLayout_1 = {\r\n                    x: 0,\r\n                    y: 0,\r\n                    width: rootSize[0],\r\n                    height: rootSize[1],\r\n                    area: rootSize[0] * rootSize[1]\r\n                };\r\n                viewRoot.setLayout(viewRootLayout_1);\r\n                squarify(viewRoot, options, false, 0);\r\n                viewRootLayout_1 = viewRoot.getLayout();\r\n                each$5(viewAbovePath, function (node, index) {\r\n                    var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\r\n                    node.setLayout(extend({\r\n                        dataExtent: [childValue, childValue],\r\n                        borderWidth: 0,\r\n                        upperHeight: 0\r\n                    }, viewRootLayout_1));\r\n                });\r\n            }\r\n            var treeRoot = seriesModel.getData().tree.root;\r\n            treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\r\n            seriesModel.setLayoutInfo(layoutInfo);\r\n            prunning(treeRoot, new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\r\n        }\r\n    };\r\n    function squarify(node, options, hideChildren, depth) {\r\n        var width;\r\n        var height;\r\n        if (node.isRemoved()) {\r\n            return;\r\n        }\r\n        var thisLayout = node.getLayout();\r\n        width = thisLayout.width;\r\n        height = thisLayout.height;\r\n        var nodeModel = node.getModel();\r\n        var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\r\n        var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\r\n        var upperLabelHeight = getUpperLabelHeight(nodeModel);\r\n        var upperHeight = Math.max(borderWidth, upperLabelHeight);\r\n        var layoutOffset = borderWidth - halfGapWidth;\r\n        var layoutOffsetUpper = upperHeight - halfGapWidth;\r\n        node.setLayout({\r\n            borderWidth: borderWidth,\r\n            upperHeight: upperHeight,\r\n            upperLabelHeight: upperLabelHeight\r\n        }, true);\r\n        width = mathMax$7(width - 2 * layoutOffset, 0);\r\n        height = mathMax$7(height - layoutOffset - layoutOffsetUpper, 0);\r\n        var totalArea = width * height;\r\n        var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\r\n        if (!viewChildren.length) {\r\n            return;\r\n        }\r\n        var rect = { x: layoutOffset, y: layoutOffsetUpper, width: width, height: height };\r\n        var rowFixedLength = mathMin$7(width, height);\r\n        var best = Infinity;\r\n        var row = [];\r\n        row.area = 0;\r\n        for (var i = 0, len = viewChildren.length; i < len;) {\r\n            var child = viewChildren[i];\r\n            row.push(child);\r\n            row.area += child.getLayout().area;\r\n            var score = worst(row, rowFixedLength, options.squareRatio);\r\n            if (score <= best) {\r\n                i++;\r\n                best = score;\r\n            }\r\n            else {\r\n                row.area -= row.pop().getLayout().area;\r\n                position(row, rowFixedLength, rect, halfGapWidth, false);\r\n                rowFixedLength = mathMin$7(rect.width, rect.height);\r\n                row.length = row.area = 0;\r\n                best = Infinity;\r\n            }\r\n        }\r\n        if (row.length) {\r\n            position(row, rowFixedLength, rect, halfGapWidth, true);\r\n        }\r\n        if (!hideChildren) {\r\n            var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\r\n            if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\r\n                hideChildren = true;\r\n            }\r\n        }\r\n        for (var i = 0, len = viewChildren.length; i < len; i++) {\r\n            squarify(viewChildren[i], options, hideChildren, depth + 1);\r\n        }\r\n    }\r\n    function initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\r\n        var viewChildren = node.children || [];\r\n        var orderBy = options.sort;\r\n        orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\r\n        var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth;\r\n        if (hideChildren && !overLeafDepth) {\r\n            return (node.viewChildren = []);\r\n        }\r\n        viewChildren = filter(viewChildren, function (child) {\r\n            return !child.isRemoved();\r\n        });\r\n        sort$1(viewChildren, orderBy);\r\n        var info = statistic(nodeModel, viewChildren, orderBy);\r\n        if (info.sum === 0) {\r\n            return (node.viewChildren = []);\r\n        }\r\n        info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\r\n        if (info.sum === 0) {\r\n            return (node.viewChildren = []);\r\n        }\r\n        for (var i = 0, len = viewChildren.length; i < len; i++) {\r\n            var area = viewChildren[i].getValue() / info.sum * totalArea;\r\n            viewChildren[i].setLayout({\r\n                area: area\r\n            });\r\n        }\r\n        if (overLeafDepth) {\r\n            viewChildren.length && node.setLayout({\r\n                isLeafRoot: true\r\n            }, true);\r\n            viewChildren.length = 0;\r\n        }\r\n        node.viewChildren = viewChildren;\r\n        node.setLayout({\r\n            dataExtent: info.dataExtent\r\n        }, true);\r\n        return viewChildren;\r\n    }\r\n    function filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\r\n        if (!orderBy) {\r\n            return sum;\r\n        }\r\n        var visibleMin = nodeModel.get('visibleMin');\r\n        var len = orderedChildren.length;\r\n        var deletePoint = len;\r\n        for (var i = len - 1; i >= 0; i--) {\r\n            var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\r\n            if (value / sum * totalArea < visibleMin) {\r\n                deletePoint = i;\r\n                sum -= value;\r\n            }\r\n        }\r\n        orderBy === 'asc'\r\n            ? orderedChildren.splice(0, len - deletePoint)\r\n            : orderedChildren.splice(deletePoint, len - deletePoint);\r\n        return sum;\r\n    }\r\n    function sort$1(viewChildren, orderBy) {\r\n        if (orderBy) {\r\n            viewChildren.sort(function (a, b) {\r\n                var diff = orderBy === 'asc'\r\n                    ? a.getValue() - b.getValue()\r\n                    : b.getValue() - a.getValue();\r\n                return diff === 0\r\n                    ? (orderBy === 'asc'\r\n                        ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex)\r\n                    : diff;\r\n            });\r\n        }\r\n        return viewChildren;\r\n    }\r\n    function statistic(nodeModel, children, orderBy) {\r\n        var sum = 0;\r\n        for (var i = 0, len = children.length; i < len; i++) {\r\n            sum += children[i].getValue();\r\n        }\r\n        var dimension = nodeModel.get('visualDimension');\r\n        var dataExtent;\r\n        if (!children || !children.length) {\r\n            dataExtent = [NaN, NaN];\r\n        }\r\n        else if (dimension === 'value' && orderBy) {\r\n            dataExtent = [\r\n                children[children.length - 1].getValue(),\r\n                children[0].getValue()\r\n            ];\r\n            orderBy === 'asc' && dataExtent.reverse();\r\n        }\r\n        else {\r\n            dataExtent = [Infinity, -Infinity];\r\n            each$5(children, function (child) {\r\n                var value = child.getValue(dimension);\r\n                value < dataExtent[0] && (dataExtent[0] = value);\r\n                value > dataExtent[1] && (dataExtent[1] = value);\r\n            });\r\n        }\r\n        return { sum: sum, dataExtent: dataExtent };\r\n    }\r\n    function worst(row, rowFixedLength, ratio) {\r\n        var areaMax = 0;\r\n        var areaMin = Infinity;\r\n        for (var i = 0, area = void 0, len = row.length; i < len; i++) {\r\n            area = row[i].getLayout().area;\r\n            if (area) {\r\n                area < areaMin && (areaMin = area);\r\n                area > areaMax && (areaMax = area);\r\n            }\r\n        }\r\n        var squareArea = row.area * row.area;\r\n        var f = rowFixedLength * rowFixedLength * ratio;\r\n        return squareArea\r\n            ? mathMax$7((f * areaMax) / squareArea, squareArea / (f * areaMin))\r\n            : Infinity;\r\n    }\r\n    function position(row, rowFixedLength, rect, halfGapWidth, flush) {\r\n        var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\r\n        var idx1WhenH = 1 - idx0WhenH;\r\n        var xy = ['x', 'y'];\r\n        var wh = ['width', 'height'];\r\n        var last = rect[xy[idx0WhenH]];\r\n        var rowOtherLength = rowFixedLength\r\n            ? row.area / rowFixedLength : 0;\r\n        if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\r\n            rowOtherLength = rect[wh[idx1WhenH]];\r\n        }\r\n        for (var i = 0, rowLen = row.length; i < rowLen; i++) {\r\n            var node = row[i];\r\n            var nodeLayout = {};\r\n            var step = rowOtherLength\r\n                ? node.getLayout().area / rowOtherLength : 0;\r\n            var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax$7(rowOtherLength - 2 * halfGapWidth, 0);\r\n            var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\r\n            var modWH = (i === rowLen - 1 || remain < step) ? remain : step;\r\n            var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax$7(modWH - 2 * halfGapWidth, 0);\r\n            nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin$7(halfGapWidth, wh1 / 2);\r\n            nodeLayout[xy[idx0WhenH]] = last + mathMin$7(halfGapWidth, wh0 / 2);\r\n            last += modWH;\r\n            node.setLayout(nodeLayout, true);\r\n        }\r\n        rect[xy[idx1WhenH]] += rowOtherLength;\r\n        rect[wh[idx1WhenH]] -= rowOtherLength;\r\n    }\r\n    function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\r\n        var currNode = (targetInfo || {}).node;\r\n        var defaultSize = [containerWidth, containerHeight];\r\n        if (!currNode || currNode === viewRoot) {\r\n            return defaultSize;\r\n        }\r\n        var parent;\r\n        var viewArea = containerWidth * containerHeight;\r\n        var area = viewArea * seriesModel.option.zoomToNodeRatio;\r\n        while (parent = currNode.parentNode) {\r\n            var sum = 0;\r\n            var siblings = parent.children;\r\n            for (var i = 0, len = siblings.length; i < len; i++) {\r\n                sum += siblings[i].getValue();\r\n            }\r\n            var currNodeValue = currNode.getValue();\r\n            if (currNodeValue === 0) {\r\n                return defaultSize;\r\n            }\r\n            area *= sum / currNodeValue;\r\n            var parentModel = parent.getModel();\r\n            var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\r\n            var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel));\r\n            area += 4 * borderWidth * borderWidth\r\n                + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\r\n            area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\r\n            currNode = parent;\r\n        }\r\n        area < viewArea && (area = viewArea);\r\n        var scale = Math.pow(area / viewArea, 0.5);\r\n        return [containerWidth * scale, containerHeight * scale];\r\n    }\r\n    function calculateRootPosition(layoutInfo, rootRect, targetInfo) {\r\n        if (rootRect) {\r\n            return { x: rootRect.x, y: rootRect.y };\r\n        }\r\n        var defaultPosition = { x: 0, y: 0 };\r\n        if (!targetInfo) {\r\n            return defaultPosition;\r\n        }\r\n        var targetNode = targetInfo.node;\r\n        var layout = targetNode.getLayout();\r\n        if (!layout) {\r\n            return defaultPosition;\r\n        }\r\n        var targetCenter = [layout.width / 2, layout.height / 2];\r\n        var node = targetNode;\r\n        while (node) {\r\n            var nodeLayout = node.getLayout();\r\n            targetCenter[0] += nodeLayout.x;\r\n            targetCenter[1] += nodeLayout.y;\r\n            node = node.parentNode;\r\n        }\r\n        return {\r\n            x: layoutInfo.width / 2 - targetCenter[0],\r\n            y: layoutInfo.height / 2 - targetCenter[1]\r\n        };\r\n    }\r\n    function prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\r\n        var nodeLayout = node.getLayout();\r\n        var nodeInViewAbovePath = viewAbovePath[depth];\r\n        var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\r\n        if ((nodeInViewAbovePath && !isAboveViewRoot)\r\n            || (depth === viewAbovePath.length && node !== viewRoot)) {\r\n            return;\r\n        }\r\n        node.setLayout({\r\n            isInView: true,\r\n            invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\r\n            isAboveViewRoot: isAboveViewRoot\r\n        }, true);\r\n        var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\r\n        each$5(node.viewChildren || [], function (child) {\r\n            prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\r\n        });\r\n    }\r\n    function getUpperLabelHeight(model) {\r\n        return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\r\n    }\n\n    registerVisual(treemapVisual);\r\n    registerLayout(treemapLayout);\n\n    function generateNodeKey(id) {\r\n        return '_EC_' + id;\r\n    }\r\n    var Graph = (function () {\r\n        function Graph(directed) {\r\n            this.type = 'graph';\r\n            this.nodes = [];\r\n            this.edges = [];\r\n            this._nodesMap = {};\r\n            this._edgesMap = {};\r\n            this._directed = directed || false;\r\n        }\r\n        Graph.prototype.isDirected = function () {\r\n            return this._directed;\r\n        };\r\n        Graph.prototype.addNode = function (id, dataIndex) {\r\n            id = id == null ? ('' + dataIndex) : ('' + id);\r\n            var nodesMap = this._nodesMap;\r\n            if (nodesMap[generateNodeKey(id)]) {\r\n                if (__DEV__) {\r\n                    console.error('Graph nodes have duplicate name or id');\r\n                }\r\n                return;\r\n            }\r\n            var node = new GraphNode(id, dataIndex);\r\n            node.hostGraph = this;\r\n            this.nodes.push(node);\r\n            nodesMap[generateNodeKey(id)] = node;\r\n            return node;\r\n        };\r\n        Graph.prototype.getNodeByIndex = function (dataIndex) {\r\n            var rawIdx = this.data.getRawIndex(dataIndex);\r\n            return this.nodes[rawIdx];\r\n        };\r\n        Graph.prototype.getNodeById = function (id) {\r\n            return this._nodesMap[generateNodeKey(id)];\r\n        };\r\n        Graph.prototype.addEdge = function (n1, n2, dataIndex) {\r\n            var nodesMap = this._nodesMap;\r\n            var edgesMap = this._edgesMap;\r\n            if (typeof n1 === 'number') {\r\n                n1 = this.nodes[n1];\r\n            }\r\n            if (typeof n2 === 'number') {\r\n                n2 = this.nodes[n2];\r\n            }\r\n            if (!(n1 instanceof GraphNode)) {\r\n                n1 = nodesMap[generateNodeKey(n1)];\r\n            }\r\n            if (!(n2 instanceof GraphNode)) {\r\n                n2 = nodesMap[generateNodeKey(n2)];\r\n            }\r\n            if (!n1 || !n2) {\r\n                return;\r\n            }\r\n            var key = n1.id + '-' + n2.id;\r\n            var edge = new GraphEdge(n1, n2, dataIndex);\r\n            edge.hostGraph = this;\r\n            if (this._directed) {\r\n                n1.outEdges.push(edge);\r\n                n2.inEdges.push(edge);\r\n            }\r\n            n1.edges.push(edge);\r\n            if (n1 !== n2) {\r\n                n2.edges.push(edge);\r\n            }\r\n            this.edges.push(edge);\r\n            edgesMap[key] = edge;\r\n            return edge;\r\n        };\r\n        Graph.prototype.getEdgeByIndex = function (dataIndex) {\r\n            var rawIdx = this.edgeData.getRawIndex(dataIndex);\r\n            return this.edges[rawIdx];\r\n        };\r\n        Graph.prototype.getEdge = function (n1, n2) {\r\n            if (n1 instanceof GraphNode) {\r\n                n1 = n1.id;\r\n            }\r\n            if (n2 instanceof GraphNode) {\r\n                n2 = n2.id;\r\n            }\r\n            var edgesMap = this._edgesMap;\r\n            if (this._directed) {\r\n                return edgesMap[n1 + '-' + n2];\r\n            }\r\n            else {\r\n                return edgesMap[n1 + '-' + n2]\r\n                    || edgesMap[n2 + '-' + n1];\r\n            }\r\n        };\r\n        Graph.prototype.eachNode = function (cb, context) {\r\n            var nodes = this.nodes;\r\n            var len = nodes.length;\r\n            for (var i = 0; i < len; i++) {\r\n                if (nodes[i].dataIndex >= 0) {\r\n                    cb.call(context, nodes[i], i);\r\n                }\r\n            }\r\n        };\r\n        Graph.prototype.eachEdge = function (cb, context) {\r\n            var edges = this.edges;\r\n            var len = edges.length;\r\n            for (var i = 0; i < len; i++) {\r\n                if (edges[i].dataIndex >= 0\r\n                    && edges[i].node1.dataIndex >= 0\r\n                    && edges[i].node2.dataIndex >= 0) {\r\n                    cb.call(context, edges[i], i);\r\n                }\r\n            }\r\n        };\r\n        Graph.prototype.breadthFirstTraverse = function (cb, startNode, direction, context) {\r\n            if (!(startNode instanceof GraphNode)) {\r\n                startNode = this._nodesMap[generateNodeKey(startNode)];\r\n            }\r\n            if (!startNode) {\r\n                return;\r\n            }\r\n            var edgeType = direction === 'out'\r\n                ? 'outEdges' : (direction === 'in' ? 'inEdges' : 'edges');\r\n            for (var i = 0; i < this.nodes.length; i++) {\r\n                this.nodes[i].__visited = false;\r\n            }\r\n            if (cb.call(context, startNode, null)) {\r\n                return;\r\n            }\r\n            var queue = [startNode];\r\n            while (queue.length) {\r\n                var currentNode = queue.shift();\r\n                var edges = currentNode[edgeType];\r\n                for (var i = 0; i < edges.length; i++) {\r\n                    var e = edges[i];\r\n                    var otherNode = e.node1 === currentNode\r\n                        ? e.node2 : e.node1;\r\n                    if (!otherNode.__visited) {\r\n                        if (cb.call(context, otherNode, currentNode)) {\r\n                            return;\r\n                        }\r\n                        queue.push(otherNode);\r\n                        otherNode.__visited = true;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Graph.prototype.update = function () {\r\n            var data = this.data;\r\n            var edgeData = this.edgeData;\r\n            var nodes = this.nodes;\r\n            var edges = this.edges;\r\n            for (var i = 0, len = nodes.length; i < len; i++) {\r\n                nodes[i].dataIndex = -1;\r\n            }\r\n            for (var i = 0, len = data.count(); i < len; i++) {\r\n                nodes[data.getRawIndex(i)].dataIndex = i;\r\n            }\r\n            edgeData.filterSelf(function (idx) {\r\n                var edge = edges[edgeData.getRawIndex(idx)];\r\n                return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\r\n            });\r\n            for (var i = 0, len = edges.length; i < len; i++) {\r\n                edges[i].dataIndex = -1;\r\n            }\r\n            for (var i = 0, len = edgeData.count(); i < len; i++) {\r\n                edges[edgeData.getRawIndex(i)].dataIndex = i;\r\n            }\r\n        };\r\n        Graph.prototype.clone = function () {\r\n            var graph = new Graph(this._directed);\r\n            var nodes = this.nodes;\r\n            var edges = this.edges;\r\n            for (var i = 0; i < nodes.length; i++) {\r\n                graph.addNode(nodes[i].id, nodes[i].dataIndex);\r\n            }\r\n            for (var i = 0; i < edges.length; i++) {\r\n                var e = edges[i];\r\n                graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\r\n            }\r\n            return graph;\r\n        };\r\n        return Graph;\r\n    }());\r\n    var GraphNode = (function () {\r\n        function GraphNode(id, dataIndex) {\r\n            this.inEdges = [];\r\n            this.outEdges = [];\r\n            this.edges = [];\r\n            this.dataIndex = -1;\r\n            this.id = id == null ? '' : id;\r\n            this.dataIndex = dataIndex == null ? -1 : dataIndex;\r\n        }\r\n        GraphNode.prototype.degree = function () {\r\n            return this.edges.length;\r\n        };\r\n        GraphNode.prototype.inDegree = function () {\r\n            return this.inEdges.length;\r\n        };\r\n        GraphNode.prototype.outDegree = function () {\r\n            return this.outEdges.length;\r\n        };\r\n        GraphNode.prototype.getModel = function (path) {\r\n            if (this.dataIndex < 0) {\r\n                return;\r\n            }\r\n            var graph = this.hostGraph;\r\n            var itemModel = graph.data.getItemModel(this.dataIndex);\r\n            return itemModel.getModel(path);\r\n        };\r\n        GraphNode.prototype.getAdjacentDataIndices = function () {\r\n            var dataIndices = {\r\n                edge: [],\r\n                node: []\r\n            };\r\n            for (var i = 0; i < this.edges.length; i++) {\r\n                var adjacentEdge = this.edges[i];\r\n                if (adjacentEdge.dataIndex < 0) {\r\n                    continue;\r\n                }\r\n                dataIndices.edge.push(adjacentEdge.dataIndex);\r\n                dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);\r\n            }\r\n            return dataIndices;\r\n        };\r\n        return GraphNode;\r\n    }());\r\n    var GraphEdge = (function () {\r\n        function GraphEdge(n1, n2, dataIndex) {\r\n            this.dataIndex = -1;\r\n            this.node1 = n1;\r\n            this.node2 = n2;\r\n            this.dataIndex = dataIndex == null ? -1 : dataIndex;\r\n        }\r\n        GraphEdge.prototype.getModel = function (path) {\r\n            if (this.dataIndex < 0) {\r\n                return;\r\n            }\r\n            var graph = this.hostGraph;\r\n            var itemModel = graph.edgeData.getItemModel(this.dataIndex);\r\n            return itemModel.getModel(path);\r\n        };\r\n        GraphEdge.prototype.getAdjacentDataIndices = function () {\r\n            return {\r\n                edge: [this.dataIndex],\r\n                node: [this.node1.dataIndex, this.node2.dataIndex]\r\n            };\r\n        };\r\n        return GraphEdge;\r\n    }());\r\n    function createGraphDataProxyMixin(hostName, dataName) {\r\n        return {\r\n            getValue: function (dimension) {\r\n                var data = this[hostName][dataName];\r\n                return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\r\n            },\r\n            setVisual: function (key, value) {\r\n                this.dataIndex >= 0\r\n                    && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\r\n            },\r\n            getVisual: function (key) {\r\n                return this[hostName][dataName].getItemVisual(this.dataIndex, key);\r\n            },\r\n            setLayout: function (layout, merge) {\r\n                this.dataIndex >= 0\r\n                    && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\r\n            },\r\n            getLayout: function () {\r\n                return this[hostName][dataName].getItemLayout(this.dataIndex);\r\n            },\r\n            getGraphicEl: function () {\r\n                return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\r\n            },\r\n            getRawIndex: function () {\r\n                return this[hostName][dataName].getRawIndex(this.dataIndex);\r\n            }\r\n        };\r\n    }\r\n    mixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data'));\r\n    mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\n\n    function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {\r\n        var graph = new Graph(directed);\r\n        for (var i = 0; i < nodes.length; i++) {\r\n            graph.addNode(retrieve(nodes[i].id, nodes[i].name, i), i);\r\n        }\r\n        var linkNameList = [];\r\n        var validEdges = [];\r\n        var linkCount = 0;\r\n        for (var i = 0; i < edges.length; i++) {\r\n            var link = edges[i];\r\n            var source = link.source;\r\n            var target = link.target;\r\n            if (graph.addEdge(source, target, linkCount)) {\r\n                validEdges.push(link);\r\n                linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + ' > ' + target));\r\n                linkCount++;\r\n            }\r\n        }\r\n        var coordSys = seriesModel.get('coordinateSystem');\r\n        var nodeData;\r\n        if (coordSys === 'cartesian2d' || coordSys === 'polar') {\r\n            nodeData = createListFromArray(nodes, seriesModel);\r\n        }\r\n        else {\r\n            var coordSysCtor = CoordinateSystemManager.get(coordSys);\r\n            var coordDimensions = coordSysCtor\r\n                ? (coordSysCtor.dimensions || []) : [];\r\n            if (indexOf(coordDimensions, 'value') < 0) {\r\n                coordDimensions.concat(['value']);\r\n            }\r\n            var dimensionNames = createDimensions(nodes, {\r\n                coordDimensions: coordDimensions\r\n            });\r\n            nodeData = new List(dimensionNames, seriesModel);\r\n            nodeData.initData(nodes);\r\n        }\r\n        var edgeData = new List(['value'], seriesModel);\r\n        edgeData.initData(validEdges, linkNameList);\r\n        beforeLink && beforeLink(nodeData, edgeData);\r\n        linkList({\r\n            mainData: nodeData,\r\n            struct: graph,\r\n            structAttr: 'graph',\r\n            datas: { node: nodeData, edge: edgeData },\r\n            datasAttr: { node: 'data', edge: 'edgeData' }\r\n        });\r\n        graph.update();\r\n        return graph;\r\n    }\n\n    var KEY_DELIMITER = '-->';\r\n    var getAutoCurvenessParams = function (seriesModel) {\r\n        return seriesModel.get('autoCurveness') || null;\r\n    };\r\n    var createCurveness = function (seriesModel, appendLength) {\r\n        var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\r\n        var length = 20;\r\n        var curvenessList = [];\r\n        if (typeof autoCurvenessParmas === 'number') {\r\n            length = autoCurvenessParmas;\r\n        }\r\n        else if (isArray(autoCurvenessParmas)) {\r\n            seriesModel.__curvenessList = autoCurvenessParmas;\r\n            return;\r\n        }\r\n        if (appendLength > length) {\r\n            length = appendLength;\r\n        }\r\n        var len = length % 2 ? length + 2 : length + 3;\r\n        curvenessList = [];\r\n        for (var i = 0; i < len; i++) {\r\n            curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\r\n        }\r\n        seriesModel.__curvenessList = curvenessList;\r\n    };\r\n    var getKeyOfEdges = function (n1, n2, seriesModel) {\r\n        var source = [n1.id, n1.dataIndex].join('.');\r\n        var target = [n2.id, n2.dataIndex].join('.');\r\n        return [seriesModel.uid, source, target].join(KEY_DELIMITER);\r\n    };\r\n    var getOppositeKey = function (key) {\r\n        var keys = key.split(KEY_DELIMITER);\r\n        return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\r\n    };\r\n    var getEdgeFromMap = function (edge, seriesModel) {\r\n        var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\r\n        return seriesModel.__edgeMap[key];\r\n    };\r\n    var getTotalLengthBetweenNodes = function (edge, seriesModel) {\r\n        var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\r\n        var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\r\n        return len + lenV;\r\n    };\r\n    var getEdgeMapLengthWithKey = function (key, seriesModel) {\r\n        var edgeMap = seriesModel.__edgeMap;\r\n        return edgeMap[key] ? edgeMap[key].length : 0;\r\n    };\r\n    function initCurvenessList(seriesModel) {\r\n        if (!getAutoCurvenessParams(seriesModel)) {\r\n            return;\r\n        }\r\n        seriesModel.__curvenessList = [];\r\n        seriesModel.__edgeMap = {};\r\n        createCurveness(seriesModel);\r\n    }\r\n    function createEdgeMapForCurveness(n1, n2, seriesModel, index) {\r\n        if (!getAutoCurvenessParams(seriesModel)) {\r\n            return;\r\n        }\r\n        var key = getKeyOfEdges(n1, n2, seriesModel);\r\n        var edgeMap = seriesModel.__edgeMap;\r\n        var oppositeEdges = edgeMap[getOppositeKey(key)];\r\n        if (edgeMap[key] && !oppositeEdges) {\r\n            edgeMap[key].isForward = true;\r\n        }\r\n        else if (oppositeEdges && edgeMap[key]) {\r\n            oppositeEdges.isForward = true;\r\n            edgeMap[key].isForward = false;\r\n        }\r\n        edgeMap[key] = edgeMap[key] || [];\r\n        edgeMap[key].push(index);\r\n    }\r\n    function getCurvenessForEdge(edge, seriesModel, index, needReverse) {\r\n        var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\r\n        var isArrayParam = isArray(autoCurvenessParams);\r\n        if (!autoCurvenessParams) {\r\n            return null;\r\n        }\r\n        var edgeArray = getEdgeFromMap(edge, seriesModel);\r\n        if (!edgeArray) {\r\n            return null;\r\n        }\r\n        var edgeIndex = -1;\r\n        for (var i = 0; i < edgeArray.length; i++) {\r\n            if (edgeArray[i] === index) {\r\n                edgeIndex = i;\r\n                break;\r\n            }\r\n        }\r\n        var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\r\n        createCurveness(seriesModel, totalLen);\r\n        edge.lineStyle = edge.lineStyle || {};\r\n        var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\r\n        var curvenessList = seriesModel.__curvenessList;\r\n        var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\r\n        if (!edgeArray.isForward) {\r\n            var oppositeKey = getOppositeKey(curKey);\r\n            var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\r\n            var resValue = curvenessList[edgeIndex + len + parityCorrection];\r\n            if (needReverse) {\r\n                if (isArrayParam) {\r\n                    if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\r\n                        return (len + parityCorrection) % 2 ? resValue : -resValue;\r\n                    }\r\n                    else {\r\n                        return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\r\n                    }\r\n                }\r\n                else {\r\n                    return (len + parityCorrection) % 2 ? resValue : -resValue;\r\n                }\r\n            }\r\n            else {\r\n                return curvenessList[edgeIndex + len + parityCorrection];\r\n            }\r\n        }\r\n        else {\r\n            return curvenessList[parityCorrection + edgeIndex];\r\n        }\r\n    }\n\n    var GraphSeriesModel = (function (_super) {\r\n        __extends(GraphSeriesModel, _super);\r\n        function GraphSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GraphSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            return _this;\r\n        }\r\n        GraphSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            var self = this;\r\n            function getCategoriesData() {\r\n                return self._categoriesData;\r\n            }\r\n            this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\r\n            this.fillDataTextStyle(option.edges || option.links);\r\n            this._updateCategoriesData();\r\n        };\r\n        GraphSeriesModel.prototype.mergeOption = function (option) {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n            this.fillDataTextStyle(option.edges || option.links);\r\n            this._updateCategoriesData();\r\n        };\r\n        GraphSeriesModel.prototype.mergeDefaultAndTheme = function (option) {\r\n            _super.prototype.mergeDefaultAndTheme.apply(this, arguments);\r\n            defaultEmphasis(option, 'edgeLabel', ['show']);\r\n        };\r\n        GraphSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            var edges = option.edges || option.links || [];\r\n            var nodes = option.data || option.nodes || [];\r\n            var self = this;\r\n            if (nodes && edges) {\r\n                initCurvenessList(this);\r\n                var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\r\n                each(graph.edges, function (edge) {\r\n                    createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\r\n                }, this);\r\n                return graph.data;\r\n            }\r\n            function beforeLink(nodeData, edgeData) {\r\n                nodeData.wrapMethod('getItemModel', function (model) {\r\n                    var categoriesModels = self._categoriesModels;\r\n                    var categoryIdx = model.getShallow('category');\r\n                    var categoryModel = categoriesModels[categoryIdx];\r\n                    if (categoryModel) {\r\n                        categoryModel.parentModel = model.parentModel;\r\n                        model.parentModel = categoryModel;\r\n                    }\r\n                    return model;\r\n                });\r\n                var oldGetModel = Model.prototype.getModel;\r\n                function newGetModel(path, parentModel) {\r\n                    var model = oldGetModel.call(this, path, parentModel);\r\n                    model.resolveParentPath = resolveParentPath;\r\n                    return model;\r\n                }\r\n                edgeData.wrapMethod('getItemModel', function (model) {\r\n                    model.resolveParentPath = resolveParentPath;\r\n                    model.getModel = newGetModel;\r\n                    return model;\r\n                });\r\n                function resolveParentPath(pathArr) {\r\n                    if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) {\r\n                        var newPathArr = pathArr.slice();\r\n                        if (pathArr[0] === 'label') {\r\n                            newPathArr[0] = 'edgeLabel';\r\n                        }\r\n                        else if (pathArr[1] === 'label') {\r\n                            newPathArr[1] = 'edgeLabel';\r\n                        }\r\n                        return newPathArr;\r\n                    }\r\n                    return pathArr;\r\n                }\r\n            }\r\n        };\r\n        GraphSeriesModel.prototype.getGraph = function () {\r\n            return this.getData().graph;\r\n        };\r\n        GraphSeriesModel.prototype.getEdgeData = function () {\r\n            return this.getGraph().edgeData;\r\n        };\r\n        GraphSeriesModel.prototype.getCategoriesData = function () {\r\n            return this._categoriesData;\r\n        };\r\n        GraphSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            if (dataType === 'edge') {\r\n                var nodeData = this.getData();\r\n                var params = this.getDataParams(dataIndex, dataType);\r\n                var edge = nodeData.graph.getEdgeByIndex(dataIndex);\r\n                var sourceName = nodeData.getName(edge.node1.dataIndex);\r\n                var targetName = nodeData.getName(edge.node2.dataIndex);\r\n                var nameArr = [];\r\n                sourceName != null && nameArr.push(sourceName);\r\n                targetName != null && nameArr.push(targetName);\r\n                return createTooltipMarkup('nameValue', {\r\n                    name: nameArr.join(' > '),\r\n                    value: params.value,\r\n                    noValue: params.value == null\r\n                });\r\n            }\r\n            var nodeMarkup = defaultSeriesFormatTooltip({\r\n                series: this,\r\n                dataIndex: dataIndex,\r\n                multipleSeries: multipleSeries\r\n            });\r\n            return nodeMarkup;\r\n        };\r\n        GraphSeriesModel.prototype._updateCategoriesData = function () {\r\n            var categories = map(this.option.categories || [], function (category) {\r\n                return category.value != null ? category : extend({\r\n                    value: 0\r\n                }, category);\r\n            });\r\n            var categoriesData = new List(['value'], this);\r\n            categoriesData.initData(categories);\r\n            this._categoriesData = categoriesData;\r\n            this._categoriesModels = categoriesData.mapArray(function (idx) {\r\n                return categoriesData.getItemModel(idx);\r\n            });\r\n        };\r\n        GraphSeriesModel.prototype.setZoom = function (zoom) {\r\n            this.option.zoom = zoom;\r\n        };\r\n        GraphSeriesModel.prototype.setCenter = function (center) {\r\n            this.option.center = center;\r\n        };\r\n        GraphSeriesModel.prototype.isAnimationEnabled = function () {\r\n            return _super.prototype.isAnimationEnabled.call(this)\r\n                && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation']));\r\n        };\r\n        GraphSeriesModel.type = 'series.graph';\r\n        GraphSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'view',\r\n            legendHoverLink: true,\r\n            layout: null,\r\n            focusNodeAdjacency: false,\r\n            circular: {\r\n                rotateLabel: false\r\n            },\r\n            force: {\r\n                initLayout: null,\r\n                repulsion: [0, 50],\r\n                gravity: 0.1,\r\n                friction: 0.6,\r\n                edgeLength: 30,\r\n                layoutAnimation: true\r\n            },\r\n            left: 'center',\r\n            top: 'center',\r\n            symbol: 'circle',\r\n            symbolSize: 10,\r\n            edgeSymbol: ['none', 'none'],\r\n            edgeSymbolSize: 10,\r\n            edgeLabel: {\r\n                position: 'middle',\r\n                distance: 5\r\n            },\r\n            draggable: false,\r\n            roam: false,\r\n            center: null,\r\n            zoom: 1,\r\n            nodeScaleRatio: 0.6,\r\n            label: {\r\n                show: false,\r\n                formatter: '{b}'\r\n            },\r\n            itemStyle: {},\r\n            lineStyle: {\r\n                color: '#aaa',\r\n                width: 1,\r\n                opacity: 0.5\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                label: {\r\n                    show: true\r\n                }\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            }\r\n        };\r\n        return GraphSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(GraphSeriesModel);\n\n    var straightLineProto = Line.prototype;\r\n    var bezierCurveProto = BezierCurve.prototype;\r\n    var StraightLineShape = (function () {\r\n        function StraightLineShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return StraightLineShape;\r\n    }());\r\n    var CurveShape = (function (_super) {\r\n        __extends(CurveShape, _super);\r\n        function CurveShape() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return CurveShape;\r\n    }(StraightLineShape));\r\n    function isStraightLine(shape) {\r\n        return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\r\n    }\r\n    var ECLinePath = (function (_super) {\r\n        __extends(ECLinePath, _super);\r\n        function ECLinePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-line';\r\n            return _this;\r\n        }\r\n        ECLinePath.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        ECLinePath.prototype.getDefaultShape = function () {\r\n            return new StraightLineShape();\r\n        };\r\n        ECLinePath.prototype.buildPath = function (ctx, shape) {\r\n            if (isStraightLine(shape)) {\r\n                straightLineProto.buildPath.call(this, ctx, shape);\r\n            }\r\n            else {\r\n                bezierCurveProto.buildPath.call(this, ctx, shape);\r\n            }\r\n        };\r\n        ECLinePath.prototype.pointAt = function (t) {\r\n            if (isStraightLine(this.shape)) {\r\n                return straightLineProto.pointAt.call(this, t);\r\n            }\r\n            else {\r\n                return bezierCurveProto.pointAt.call(this, t);\r\n            }\r\n        };\r\n        ECLinePath.prototype.tangentAt = function (t) {\r\n            var shape = this.shape;\r\n            var p = isStraightLine(shape)\r\n                ? [shape.x2 - shape.x1, shape.y2 - shape.y1]\r\n                : bezierCurveProto.tangentAt.call(this, t);\r\n            return normalize(p, p);\r\n        };\r\n        return ECLinePath;\r\n    }(Path));\n\n    var SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\r\n    function makeSymbolTypeKey(symbolCategory) {\r\n        return '_' + symbolCategory + 'Type';\r\n    }\r\n    function createSymbol$1(name, lineData, idx) {\r\n        var symbolType = lineData.getItemVisual(idx, name);\r\n        if (!symbolType || symbolType === 'none') {\r\n            return;\r\n        }\r\n        var symbolSize = lineData.getItemVisual(idx, name + 'Size');\r\n        var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\r\n        var symbolSizeArr = isArray(symbolSize)\r\n            ? symbolSize : [symbolSize, symbolSize];\r\n        var symbolPath = createSymbol(symbolType, -symbolSizeArr[0] / 2, -symbolSizeArr[1] / 2, symbolSizeArr[0], symbolSizeArr[1]);\r\n        symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate)\r\n            ? void 0\r\n            : +symbolRotate * Math.PI / 180 || 0;\r\n        symbolPath.name = name;\r\n        return symbolPath;\r\n    }\r\n    function createLine(points) {\r\n        var line = new ECLinePath({\r\n            name: 'line',\r\n            subPixelOptimize: true\r\n        });\r\n        setLinePoints(line.shape, points);\r\n        return line;\r\n    }\r\n    function setLinePoints(targetShape, points) {\r\n        targetShape.x1 = points[0][0];\r\n        targetShape.y1 = points[0][1];\r\n        targetShape.x2 = points[1][0];\r\n        targetShape.y2 = points[1][1];\r\n        targetShape.percent = 1;\r\n        var cp1 = points[2];\r\n        if (cp1) {\r\n            targetShape.cpx1 = cp1[0];\r\n            targetShape.cpy1 = cp1[1];\r\n        }\r\n        else {\r\n            targetShape.cpx1 = NaN;\r\n            targetShape.cpy1 = NaN;\r\n        }\r\n    }\r\n    var Line$1 = (function (_super) {\r\n        __extends(Line, _super);\r\n        function Line(lineData, idx, seriesScope) {\r\n            var _this = _super.call(this) || this;\r\n            _this._createLine(lineData, idx, seriesScope);\r\n            return _this;\r\n        }\r\n        Line.prototype._createLine = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var linePoints = lineData.getItemLayout(idx);\r\n            var line = createLine(linePoints);\r\n            line.shape.percent = 0;\r\n            initProps(line, {\r\n                shape: {\r\n                    percent: 1\r\n                }\r\n            }, seriesModel, idx);\r\n            this.add(line);\r\n            each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n                var symbol = createSymbol$1(symbolCategory, lineData, idx);\r\n                this.add(symbol);\r\n                this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\r\n            }, this);\r\n            this._updateCommonStl(lineData, idx, seriesScope);\r\n        };\r\n        Line.prototype.updateData = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var line = this.childOfName('line');\r\n            var linePoints = lineData.getItemLayout(idx);\r\n            var target = {\r\n                shape: {}\r\n            };\r\n            setLinePoints(target.shape, linePoints);\r\n            updateProps(line, target, seriesModel, idx);\r\n            each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n                var symbolType = lineData.getItemVisual(idx, symbolCategory);\r\n                var key = makeSymbolTypeKey(symbolCategory);\r\n                if (this[key] !== symbolType) {\r\n                    this.remove(this.childOfName(symbolCategory));\r\n                    var symbol = createSymbol$1(symbolCategory, lineData, idx);\r\n                    this.add(symbol);\r\n                }\r\n                this[key] = symbolType;\r\n            }, this);\r\n            this._updateCommonStl(lineData, idx, seriesScope);\r\n        };\r\n        Line.prototype.getLinePath = function () {\r\n            return this.childAt(0);\r\n        };\r\n        Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var line = this.childOfName('line');\r\n            var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\r\n            var blurLineStyle = seriesScope && seriesScope.blurLineStyle;\r\n            var selectLineStyle = seriesScope && seriesScope.selectLineStyle;\r\n            var labelStatesModels = seriesScope && seriesScope.labelStatesModels;\r\n            if (!seriesScope || lineData.hasItemOption) {\r\n                var itemModel = lineData.getItemModel(idx);\r\n                emphasisLineStyle = itemModel.getModel(['emphasis', 'lineStyle']).getLineStyle();\r\n                blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle();\r\n                selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle();\r\n                labelStatesModels = getLabelStatesModels(itemModel);\r\n            }\r\n            var lineStyle = lineData.getItemVisual(idx, 'style');\r\n            var visualColor = lineStyle.stroke;\r\n            line.useStyle(lineStyle);\r\n            line.style.fill = null;\r\n            line.style.strokeNoScale = true;\r\n            line.ensureState('emphasis').style = emphasisLineStyle;\r\n            line.ensureState('blur').style = blurLineStyle;\r\n            line.ensureState('select').style = selectLineStyle;\r\n            each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n                var symbol = this.childOfName(symbolCategory);\r\n                if (symbol) {\r\n                    symbol.setColor(visualColor);\r\n                    symbol.style.opacity = lineStyle.opacity;\r\n                    for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n                        var stateName = SPECIAL_STATES[i];\r\n                        var lineState = line.getState(stateName);\r\n                        if (lineState) {\r\n                            var lineStateStyle = lineState.style || {};\r\n                            var state = symbol.ensureState(stateName);\r\n                            var stateStyle = state.style || (state.style = {});\r\n                            if (lineStateStyle.stroke != null) {\r\n                                stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke;\r\n                            }\r\n                            if (lineStateStyle.opacity != null) {\r\n                                stateStyle.opacity = lineStateStyle.opacity;\r\n                            }\r\n                        }\r\n                    }\r\n                    symbol.markRedraw();\r\n                }\r\n            }, this);\r\n            var rawVal = seriesModel.getRawValue(idx);\r\n            setLabelStyle(this, labelStatesModels, {\r\n                labelDataIndex: idx,\r\n                labelFetcher: {\r\n                    getFormattedLabel: function (dataIndex, stateName) {\r\n                        return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);\r\n                    }\r\n                },\r\n                inheritColor: visualColor || '#000',\r\n                defaultOpacity: lineStyle.opacity,\r\n                defaultText: (rawVal == null\r\n                    ? lineData.getName(idx)\r\n                    : isFinite(rawVal)\r\n                        ? round$1(rawVal)\r\n                        : rawVal) + ''\r\n            });\r\n            var label = this.getTextContent();\r\n            if (label) {\r\n                var labelNormalModel = labelStatesModels.normal;\r\n                label.__align = label.style.align;\r\n                label.__verticalAlign = label.style.verticalAlign;\r\n                label.__position = labelNormalModel.get('position') || 'middle';\r\n                var distance = labelNormalModel.get('distance');\r\n                if (!isArray(distance)) {\r\n                    distance = [distance, distance];\r\n                }\r\n                label.__labelDistance = distance;\r\n            }\r\n            this.setTextConfig({\r\n                position: null,\r\n                local: true,\r\n                inside: false\r\n            });\r\n            enableHoverEmphasis(this);\r\n        };\r\n        Line.prototype.highlight = function () {\r\n            enterEmphasis(this);\r\n        };\r\n        Line.prototype.downplay = function () {\r\n            leaveEmphasis(this);\r\n        };\r\n        Line.prototype.updateLayout = function (lineData, idx) {\r\n            this.setLinePoints(lineData.getItemLayout(idx));\r\n        };\r\n        Line.prototype.setLinePoints = function (points) {\r\n            var linePath = this.childOfName('line');\r\n            setLinePoints(linePath.shape, points);\r\n            linePath.dirty();\r\n        };\r\n        Line.prototype.beforeUpdate = function () {\r\n            var lineGroup = this;\r\n            var symbolFrom = lineGroup.childOfName('fromSymbol');\r\n            var symbolTo = lineGroup.childOfName('toSymbol');\r\n            var label = lineGroup.getTextContent();\r\n            if (!symbolFrom && !symbolTo && (!label || label.ignore)) {\r\n                return;\r\n            }\r\n            var invScale = 1;\r\n            var parentNode = this.parent;\r\n            while (parentNode) {\r\n                if (parentNode.scaleX) {\r\n                    invScale /= parentNode.scaleX;\r\n                }\r\n                parentNode = parentNode.parent;\r\n            }\r\n            var line = lineGroup.childOfName('line');\r\n            if (!this.__dirty && !line.__dirty) {\r\n                return;\r\n            }\r\n            var percent = line.shape.percent;\r\n            var fromPos = line.pointAt(0);\r\n            var toPos = line.pointAt(percent);\r\n            var d = sub([], toPos, fromPos);\r\n            normalize(d, d);\r\n            function setSymbolRotation(symbol, percent) {\r\n                var specifiedRotation = symbol.__specifiedRotation;\r\n                if (specifiedRotation == null) {\r\n                    var tangent = line.tangentAt(percent);\r\n                    symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\r\n                }\r\n                else {\r\n                    symbol.attr('rotation', specifiedRotation);\r\n                }\r\n            }\r\n            if (symbolFrom) {\r\n                symbolFrom.setPosition(fromPos);\r\n                setSymbolRotation(symbolFrom, 0);\r\n                symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;\r\n                symbolFrom.markRedraw();\r\n            }\r\n            if (symbolTo) {\r\n                symbolTo.setPosition(toPos);\r\n                setSymbolRotation(symbolTo, 1);\r\n                symbolTo.scaleX = symbolTo.scaleY = invScale * percent;\r\n                symbolTo.markRedraw();\r\n            }\r\n            if (label && !label.ignore) {\r\n                label.x = label.y = 0;\r\n                label.originX = label.originY = 0;\r\n                var textAlign = void 0;\r\n                var textVerticalAlign = void 0;\r\n                var distance = label.__labelDistance;\r\n                var distanceX = distance[0] * invScale;\r\n                var distanceY = distance[1] * invScale;\r\n                var halfPercent = percent / 2;\r\n                var tangent = line.tangentAt(halfPercent);\r\n                var n = [tangent[1], -tangent[0]];\r\n                var cp = line.pointAt(halfPercent);\r\n                if (n[1] > 0) {\r\n                    n[0] = -n[0];\r\n                    n[1] = -n[1];\r\n                }\r\n                var dir = tangent[0] < 0 ? -1 : 1;\r\n                if (label.__position !== 'start' && label.__position !== 'end') {\r\n                    var rotation = -Math.atan2(tangent[1], tangent[0]);\r\n                    if (toPos[0] < fromPos[0]) {\r\n                        rotation = Math.PI + rotation;\r\n                    }\r\n                    label.rotation = rotation;\r\n                }\r\n                var dy = void 0;\r\n                switch (label.__position) {\r\n                    case 'insideStartTop':\r\n                    case 'insideMiddleTop':\r\n                    case 'insideEndTop':\r\n                    case 'middle':\r\n                        dy = -distanceY;\r\n                        textVerticalAlign = 'bottom';\r\n                        break;\r\n                    case 'insideStartBottom':\r\n                    case 'insideMiddleBottom':\r\n                    case 'insideEndBottom':\r\n                        dy = distanceY;\r\n                        textVerticalAlign = 'top';\r\n                        break;\r\n                    default:\r\n                        dy = 0;\r\n                        textVerticalAlign = 'middle';\r\n                }\r\n                switch (label.__position) {\r\n                    case 'end':\r\n                        label.x = d[0] * distanceX + toPos[0];\r\n                        label.y = d[1] * distanceY + toPos[1];\r\n                        textAlign = d[0] > 0.8 ? 'left' : (d[0] < -0.8 ? 'right' : 'center');\r\n                        textVerticalAlign = d[1] > 0.8 ? 'top' : (d[1] < -0.8 ? 'bottom' : 'middle');\r\n                        break;\r\n                    case 'start':\r\n                        label.x = -d[0] * distanceX + fromPos[0];\r\n                        label.y = -d[1] * distanceY + fromPos[1];\r\n                        textAlign = d[0] > 0.8 ? 'right' : (d[0] < -0.8 ? 'left' : 'center');\r\n                        textVerticalAlign = d[1] > 0.8 ? 'bottom' : (d[1] < -0.8 ? 'top' : 'middle');\r\n                        break;\r\n                    case 'insideStartTop':\r\n                    case 'insideStart':\r\n                    case 'insideStartBottom':\r\n                        label.x = distanceX * dir + fromPos[0];\r\n                        label.y = fromPos[1] + dy;\r\n                        textAlign = tangent[0] < 0 ? 'right' : 'left';\r\n                        label.originX = -distanceX * dir;\r\n                        label.originY = -dy;\r\n                        break;\r\n                    case 'insideMiddleTop':\r\n                    case 'insideMiddle':\r\n                    case 'insideMiddleBottom':\r\n                    case 'middle':\r\n                        label.x = cp[0];\r\n                        label.y = cp[1] + dy;\r\n                        textAlign = 'center';\r\n                        label.originY = -dy;\r\n                        break;\r\n                    case 'insideEndTop':\r\n                    case 'insideEnd':\r\n                    case 'insideEndBottom':\r\n                        label.x = -distanceX * dir + toPos[0];\r\n                        label.y = toPos[1] + dy;\r\n                        textAlign = tangent[0] >= 0 ? 'right' : 'left';\r\n                        label.originX = distanceX * dir;\r\n                        label.originY = -dy;\r\n                        break;\r\n                }\r\n                label.scaleX = label.scaleY = invScale;\r\n                label.setStyle({\r\n                    verticalAlign: label.__verticalAlign || textVerticalAlign,\r\n                    align: label.__align || textAlign\r\n                });\r\n            }\r\n        };\r\n        return Line;\r\n    }(Group));\n\n    var LineDraw = (function () {\r\n        function LineDraw(LineCtor) {\r\n            this.group = new Group();\r\n            this._LineCtor = LineCtor || Line$1;\r\n        }\r\n        LineDraw.prototype.isPersistent = function () {\r\n            return true;\r\n        };\r\n        LineDraw.prototype.updateData = function (lineData) {\r\n            var _this = this;\r\n            var lineDraw = this;\r\n            var group = lineDraw.group;\r\n            var oldLineData = lineDraw._lineData;\r\n            lineDraw._lineData = lineData;\r\n            if (!oldLineData) {\r\n                group.removeAll();\r\n            }\r\n            var seriesScope = makeSeriesScope$1(lineData);\r\n            lineData.diff(oldLineData)\r\n                .add(function (idx) {\r\n                _this._doAdd(lineData, idx, seriesScope);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);\r\n            })\r\n                .remove(function (idx) {\r\n                group.remove(oldLineData.getItemGraphicEl(idx));\r\n            })\r\n                .execute();\r\n        };\r\n        LineDraw.prototype.updateLayout = function () {\r\n            var lineData = this._lineData;\r\n            if (!lineData) {\r\n                return;\r\n            }\r\n            lineData.eachItemGraphicEl(function (el, idx) {\r\n                el.updateLayout(lineData, idx);\r\n            }, this);\r\n        };\r\n        LineDraw.prototype.incrementalPrepareUpdate = function (lineData) {\r\n            this._seriesScope = makeSeriesScope$1(lineData);\r\n            this._lineData = null;\r\n            this.group.removeAll();\r\n        };\r\n        LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) {\r\n            function updateIncrementalAndHover(el) {\r\n                if (!el.isGroup && !isEffectObject(el)) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n                var itemLayout = lineData.getItemLayout(idx);\r\n                if (lineNeedsDraw(itemLayout)) {\r\n                    var el = new this._LineCtor(lineData, idx, this._seriesScope);\r\n                    el.traverse(updateIncrementalAndHover);\r\n                    this.group.add(el);\r\n                    lineData.setItemGraphicEl(idx, el);\r\n                }\r\n            }\r\n        };\r\n        LineDraw.prototype.remove = function () {\r\n            this.group.removeAll();\r\n        };\r\n        LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) {\r\n            var itemLayout = lineData.getItemLayout(idx);\r\n            if (!lineNeedsDraw(itemLayout)) {\r\n                return;\r\n            }\r\n            var el = new this._LineCtor(lineData, idx, seriesScope);\r\n            lineData.setItemGraphicEl(idx, el);\r\n            this.group.add(el);\r\n        };\r\n        LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\r\n            var itemEl = oldLineData.getItemGraphicEl(oldIdx);\r\n            if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\r\n                this.group.remove(itemEl);\r\n                return;\r\n            }\r\n            if (!itemEl) {\r\n                itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);\r\n            }\r\n            else {\r\n                itemEl.updateData(newLineData, newIdx, seriesScope);\r\n            }\r\n            newLineData.setItemGraphicEl(newIdx, itemEl);\r\n            this.group.add(itemEl);\r\n        };\r\n        return LineDraw;\r\n    }());\r\n    function isEffectObject(el) {\r\n        return el.animators && el.animators.length > 0;\r\n    }\r\n    function makeSeriesScope$1(lineData) {\r\n        var hostModel = lineData.hostModel;\r\n        return {\r\n            lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\r\n            emphasisLineStyle: hostModel.getModel(['emphasis', 'lineStyle']).getLineStyle(),\r\n            blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),\r\n            selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),\r\n            labelStatesModels: getLabelStatesModels(hostModel)\r\n        };\r\n    }\r\n    function isPointNaN(pt) {\r\n        return isNaN(pt[0]) || isNaN(pt[1]);\r\n    }\r\n    function lineNeedsDraw(pts) {\r\n        return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\r\n    }\n\n    function getNodeGlobalScale(seriesModel) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (coordSys.type !== 'view') {\r\n            return 1;\r\n        }\r\n        var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\r\n        var groupZoom = coordSys.scaleX;\r\n        var roamZoom = coordSys.getZoom();\r\n        var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\r\n        return nodeScale / groupZoom;\r\n    }\r\n    function getSymbolSize(node) {\r\n        var symbolSize = node.getVisual('symbolSize');\r\n        if (symbolSize instanceof Array) {\r\n            symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\r\n        }\r\n        return +symbolSize;\r\n    }\n\n    var v1 = [];\r\n    var v2 = [];\r\n    var v3 = [];\r\n    var quadraticAt$1 = quadraticAt;\r\n    var v2DistSquare = distSquare;\r\n    var mathAbs$2 = Math.abs;\r\n    function intersectCurveCircle(curvePoints, center, radius) {\r\n        var p0 = curvePoints[0];\r\n        var p1 = curvePoints[1];\r\n        var p2 = curvePoints[2];\r\n        var d = Infinity;\r\n        var t;\r\n        var radiusSquare = radius * radius;\r\n        var interval = 0.1;\r\n        for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\r\n            v1[0] = quadraticAt$1(p0[0], p1[0], p2[0], _t);\r\n            v1[1] = quadraticAt$1(p0[1], p1[1], p2[1], _t);\r\n            var diff = mathAbs$2(v2DistSquare(v1, center) - radiusSquare);\r\n            if (diff < d) {\r\n                d = diff;\r\n                t = _t;\r\n            }\r\n        }\r\n        for (var i = 0; i < 32; i++) {\r\n            var next = t + interval;\r\n            v2[0] = quadraticAt$1(p0[0], p1[0], p2[0], t);\r\n            v2[1] = quadraticAt$1(p0[1], p1[1], p2[1], t);\r\n            v3[0] = quadraticAt$1(p0[0], p1[0], p2[0], next);\r\n            v3[1] = quadraticAt$1(p0[1], p1[1], p2[1], next);\r\n            var diff = v2DistSquare(v2, center) - radiusSquare;\r\n            if (mathAbs$2(diff) < 1e-2) {\r\n                break;\r\n            }\r\n            var nextDiff = v2DistSquare(v3, center) - radiusSquare;\r\n            interval /= 2;\r\n            if (diff < 0) {\r\n                if (nextDiff >= 0) {\r\n                    t = t + interval;\r\n                }\r\n                else {\r\n                    t = t - interval;\r\n                }\r\n            }\r\n            else {\r\n                if (nextDiff >= 0) {\r\n                    t = t - interval;\r\n                }\r\n                else {\r\n                    t = t + interval;\r\n                }\r\n            }\r\n        }\r\n        return t;\r\n    }\r\n    function adjustEdge(graph, scale) {\r\n        var tmp0 = [];\r\n        var quadraticSubdivide$1 = quadraticSubdivide;\r\n        var pts = [[], [], []];\r\n        var pts2 = [[], []];\r\n        var v = [];\r\n        scale /= 2;\r\n        graph.eachEdge(function (edge, idx) {\r\n            var linePoints = edge.getLayout();\r\n            var fromSymbol = edge.getVisual('fromSymbol');\r\n            var toSymbol = edge.getVisual('toSymbol');\r\n            if (!linePoints.__original) {\r\n                linePoints.__original = [\r\n                    clone$1(linePoints[0]),\r\n                    clone$1(linePoints[1])\r\n                ];\r\n                if (linePoints[2]) {\r\n                    linePoints.__original.push(clone$1(linePoints[2]));\r\n                }\r\n            }\r\n            var originalPoints = linePoints.__original;\r\n            if (linePoints[2] != null) {\r\n                copy(pts[0], originalPoints[0]);\r\n                copy(pts[1], originalPoints[2]);\r\n                copy(pts[2], originalPoints[1]);\r\n                if (fromSymbol && fromSymbol !== 'none') {\r\n                    var symbolSize = getSymbolSize(edge.node1);\r\n                    var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale);\r\n                    quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\r\n                    pts[0][0] = tmp0[3];\r\n                    pts[1][0] = tmp0[4];\r\n                    quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\r\n                    pts[0][1] = tmp0[3];\r\n                    pts[1][1] = tmp0[4];\r\n                }\r\n                if (toSymbol && toSymbol !== 'none') {\r\n                    var symbolSize = getSymbolSize(edge.node2);\r\n                    var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale);\r\n                    quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\r\n                    pts[1][0] = tmp0[1];\r\n                    pts[2][0] = tmp0[2];\r\n                    quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\r\n                    pts[1][1] = tmp0[1];\r\n                    pts[2][1] = tmp0[2];\r\n                }\r\n                copy(linePoints[0], pts[0]);\r\n                copy(linePoints[1], pts[2]);\r\n                copy(linePoints[2], pts[1]);\r\n            }\r\n            else {\r\n                copy(pts2[0], originalPoints[0]);\r\n                copy(pts2[1], originalPoints[1]);\r\n                sub(v, pts2[1], pts2[0]);\r\n                normalize(v, v);\r\n                if (fromSymbol && fromSymbol !== 'none') {\r\n                    var symbolSize = getSymbolSize(edge.node1);\r\n                    scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\r\n                }\r\n                if (toSymbol && toSymbol !== 'none') {\r\n                    var symbolSize = getSymbolSize(edge.node2);\r\n                    scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\r\n                }\r\n                copy(linePoints[0], pts2[0]);\r\n                copy(linePoints[1], pts2[1]);\r\n            }\r\n        });\r\n    }\n\n    function isViewCoordSys(coordSys) {\r\n        return coordSys.type === 'view';\r\n    }\r\n    var GraphView = (function (_super) {\r\n        __extends(GraphView, _super);\r\n        function GraphView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GraphView.type;\r\n            return _this;\r\n        }\r\n        GraphView.prototype.init = function (ecModel, api) {\r\n            var symbolDraw = new SymbolDraw();\r\n            var lineDraw = new LineDraw();\r\n            var group = this.group;\r\n            this._controller = new RoamController(api.getZr());\r\n            this._controllerHost = {\r\n                target: group\r\n            };\r\n            group.add(symbolDraw.group);\r\n            group.add(lineDraw.group);\r\n            this._symbolDraw = symbolDraw;\r\n            this._lineDraw = lineDraw;\r\n            this._firstRender = true;\r\n        };\r\n        GraphView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            this._model = seriesModel;\r\n            var symbolDraw = this._symbolDraw;\r\n            var lineDraw = this._lineDraw;\r\n            var group = this.group;\r\n            if (isViewCoordSys(coordSys)) {\r\n                var groupNewProp = {\r\n                    x: coordSys.x, y: coordSys.y,\r\n                    scaleX: coordSys.scaleX, scaleY: coordSys.scaleY\r\n                };\r\n                if (this._firstRender) {\r\n                    group.attr(groupNewProp);\r\n                }\r\n                else {\r\n                    updateProps(group, groupNewProp, seriesModel);\r\n                }\r\n            }\r\n            adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\r\n            var data = seriesModel.getData();\r\n            symbolDraw.updateData(data);\r\n            var edgeData = seriesModel.getEdgeData();\r\n            lineDraw.updateData(edgeData);\r\n            this._updateNodeAndLinkScale();\r\n            this._updateController(seriesModel, ecModel, api);\r\n            clearTimeout(this._layoutTimeout);\r\n            var forceLayout = seriesModel.forceLayout;\r\n            var layoutAnimation = seriesModel.get(['force', 'layoutAnimation']);\r\n            if (forceLayout) {\r\n                this._startForceLayoutIteration(forceLayout, layoutAnimation);\r\n            }\r\n            data.graph.eachNode(function (node) {\r\n                var idx = node.dataIndex;\r\n                var el = node.getGraphicEl();\r\n                var itemModel = node.getModel();\r\n                el.off('drag').off('dragend');\r\n                var draggable = itemModel.get('draggable');\r\n                if (draggable) {\r\n                    el.on('drag', function () {\r\n                        if (forceLayout) {\r\n                            forceLayout.warmUp();\r\n                            !_this._layouting\r\n                                && _this._startForceLayoutIteration(forceLayout, layoutAnimation);\r\n                            forceLayout.setFixed(idx);\r\n                            data.setItemLayout(idx, [el.x, el.y]);\r\n                        }\r\n                    }).on('dragend', function () {\r\n                        if (forceLayout) {\r\n                            forceLayout.setUnfixed(idx);\r\n                        }\r\n                    });\r\n                }\r\n                el.setDraggable(draggable && !!forceLayout);\r\n                var focus = itemModel.get(['emphasis', 'focus']);\r\n                if (focus === 'adjacency') {\r\n                    getECData(el).focus = node.getAdjacentDataIndices();\r\n                }\r\n            });\r\n            data.graph.eachEdge(function (edge) {\r\n                var el = edge.getGraphicEl();\r\n                var focus = edge.getModel().get(['emphasis', 'focus']);\r\n                if (focus === 'adjacency') {\r\n                    getECData(el).focus = {\r\n                        edge: [edge.dataIndex],\r\n                        node: [edge.node1.dataIndex, edge.node2.dataIndex]\r\n                    };\r\n                }\r\n            });\r\n            var circularRotateLabel = seriesModel.get('layout') === 'circular'\r\n                && seriesModel.get(['circular', 'rotateLabel']);\r\n            var cx = data.getLayout('cx');\r\n            var cy = data.getLayout('cy');\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var labelRotate = itemModel.get(['label', 'rotate']) || 0;\r\n                var symbolPath = el.getSymbolPath();\r\n                if (circularRotateLabel) {\r\n                    var pos = data.getItemLayout(idx);\r\n                    var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\r\n                    if (rad < 0) {\r\n                        rad = Math.PI * 2 + rad;\r\n                    }\r\n                    var isLeft = pos[0] < cx;\r\n                    if (isLeft) {\r\n                        rad = rad - Math.PI;\r\n                    }\r\n                    var textPosition = isLeft ? 'left' : 'right';\r\n                    symbolPath.setTextConfig({\r\n                        rotation: -rad,\r\n                        position: textPosition,\r\n                        origin: 'center'\r\n                    });\r\n                    var emphasisState = symbolPath.ensureState('emphasis');\r\n                    extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {\r\n                        position: textPosition\r\n                    });\r\n                }\r\n                else {\r\n                    symbolPath.setTextConfig({\r\n                        rotation: labelRotate *= Math.PI / 180\r\n                    });\r\n                }\r\n            });\r\n            this._firstRender = false;\r\n        };\r\n        GraphView.prototype.dispose = function () {\r\n            this._controller && this._controller.dispose();\r\n            this._controllerHost = null;\r\n        };\r\n        GraphView.prototype._startForceLayoutIteration = function (forceLayout, layoutAnimation) {\r\n            var self = this;\r\n            (function step() {\r\n                forceLayout.step(function (stopped) {\r\n                    self.updateLayout(self._model);\r\n                    (self._layouting = !stopped) && (layoutAnimation\r\n                        ? (self._layoutTimeout = setTimeout(step, 16))\r\n                        : step());\r\n                });\r\n            })();\r\n        };\r\n        GraphView.prototype._updateController = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var controller = this._controller;\r\n            var controllerHost = this._controllerHost;\r\n            var group = this.group;\r\n            controller.setPointerChecker(function (e, x, y) {\r\n                var rect = group.getBoundingRect();\r\n                rect.applyTransform(group.transform);\r\n                return rect.contain(x, y)\r\n                    && !onIrrelevantElement(e, api, seriesModel);\r\n            });\r\n            if (!isViewCoordSys(seriesModel.coordinateSystem)) {\r\n                controller.disable();\r\n                return;\r\n            }\r\n            controller.enable(seriesModel.get('roam'));\r\n            controllerHost.zoomLimit = seriesModel.get('scaleLimit');\r\n            controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\r\n            controller\r\n                .off('pan')\r\n                .off('zoom')\r\n                .on('pan', function (e) {\r\n                updateViewOnPan(controllerHost, e.dx, e.dy);\r\n                api.dispatchAction({\r\n                    seriesId: seriesModel.id,\r\n                    type: 'graphRoam',\r\n                    dx: e.dx,\r\n                    dy: e.dy\r\n                });\r\n            })\r\n                .on('zoom', function (e) {\r\n                updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\r\n                api.dispatchAction({\r\n                    seriesId: seriesModel.id,\r\n                    type: 'graphRoam',\r\n                    zoom: e.scale,\r\n                    originX: e.originX,\r\n                    originY: e.originY\r\n                });\r\n                _this._updateNodeAndLinkScale();\r\n                adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\r\n                _this._lineDraw.updateLayout();\r\n                api.updateLabelLayout();\r\n            });\r\n        };\r\n        GraphView.prototype._updateNodeAndLinkScale = function () {\r\n            var seriesModel = this._model;\r\n            var data = seriesModel.getData();\r\n            var nodeScale = getNodeGlobalScale(seriesModel);\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                el.setSymbolScale(nodeScale);\r\n            });\r\n        };\r\n        GraphView.prototype.updateLayout = function (seriesModel) {\r\n            adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\r\n            this._symbolDraw.updateLayout();\r\n            this._lineDraw.updateLayout();\r\n        };\r\n        GraphView.prototype.remove = function (ecModel, api) {\r\n            this._symbolDraw && this._symbolDraw.remove();\r\n            this._lineDraw && this._lineDraw.remove();\r\n        };\r\n        GraphView.type = 'graph';\r\n        return GraphView;\r\n    }(ChartView));\r\n    ChartView.registerClass(GraphView);\n\n    registerAction({\r\n        type: 'focusNodeAdjacency',\r\n        event: 'focusNodeAdjacency',\r\n        update: 'series:focusNodeAdjacency'\r\n    }, function () { });\r\n    registerAction({\r\n        type: 'unfocusNodeAdjacency',\r\n        event: 'unfocusNodeAdjacency',\r\n        update: 'series:unfocusNodeAdjacency'\r\n    }, function () { });\n\n    var actionInfo = {\r\n        type: 'graphRoam',\r\n        event: 'graphRoam',\r\n        update: 'none'\r\n    };\r\n    registerAction(actionInfo, function (payload, ecModel) {\r\n        ecModel.eachComponent({\r\n            mainType: 'series', query: payload\r\n        }, function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var res = updateCenterAndZoom(coordSys, payload);\r\n            seriesModel.setCenter\r\n                && seriesModel.setCenter(res.center);\r\n            seriesModel.setZoom\r\n                && seriesModel.setZoom(res.zoom);\r\n        });\r\n    });\n\n    function categoryFilter(ecModel) {\r\n        var legendModels = ecModel.findComponents({\r\n            mainType: 'legend'\r\n        });\r\n        if (!legendModels || !legendModels.length) {\r\n            return;\r\n        }\r\n        ecModel.eachSeriesByType('graph', function (graphSeries) {\r\n            var categoriesData = graphSeries.getCategoriesData();\r\n            var graph = graphSeries.getGraph();\r\n            var data = graph.data;\r\n            var categoryNames = categoriesData.mapArray(categoriesData.getName);\r\n            data.filterSelf(function (idx) {\r\n                var model = data.getItemModel(idx);\r\n                var category = model.getShallow('category');\r\n                if (category != null) {\r\n                    if (typeof category === 'number') {\r\n                        category = categoryNames[category];\r\n                    }\r\n                    for (var i = 0; i < legendModels.length; i++) {\r\n                        if (!legendModels[i].isSelected(category)) {\r\n                            return false;\r\n                        }\r\n                    }\r\n                }\r\n                return true;\r\n            });\r\n        });\r\n    }\n\n    function categoryVisual(ecModel) {\r\n        var paletteScope = {};\r\n        ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n            var categoriesData = seriesModel.getCategoriesData();\r\n            var data = seriesModel.getData();\r\n            var categoryNameIdxMap = {};\r\n            categoriesData.each(function (idx) {\r\n                var name = categoriesData.getName(idx);\r\n                categoryNameIdxMap['ec-' + name] = idx;\r\n                var itemModel = categoriesData.getItemModel(idx);\r\n                var style = itemModel.getModel('itemStyle').getItemStyle();\r\n                if (!style.fill) {\r\n                    style.fill = seriesModel.getColorFromPalette(name, paletteScope);\r\n                }\r\n                categoriesData.setItemVisual(idx, 'style', style);\r\n                var symbolVisualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\r\n                for (var i = 0; i < symbolVisualList.length; i++) {\r\n                    var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);\r\n                    if (symbolVisual != null) {\r\n                        categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);\r\n                    }\r\n                }\r\n            });\r\n            if (categoriesData.count()) {\r\n                data.each(function (idx) {\r\n                    var model = data.getItemModel(idx);\r\n                    var categoryIdx = model.getShallow('category');\r\n                    if (categoryIdx != null) {\r\n                        if (typeof categoryIdx === 'string') {\r\n                            categoryIdx = categoryNameIdxMap['ec-' + categoryIdx];\r\n                        }\r\n                        var categoryStyle = categoriesData.getItemVisual(categoryIdx, 'style');\r\n                        var style = data.ensureUniqueItemVisual(idx, 'style');\r\n                        extend(style, categoryStyle);\r\n                        var visualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\r\n                        for (var i = 0; i < visualList.length; i++) {\r\n                            data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\n\n    function normalize$2(a) {\r\n        if (!(a instanceof Array)) {\r\n            a = [a, a];\r\n        }\r\n        return a;\r\n    }\r\n    function graphEdgeVisual(ecModel) {\r\n        ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n            var graph = seriesModel.getGraph();\r\n            var edgeData = seriesModel.getEdgeData();\r\n            var symbolType = normalize$2(seriesModel.get('edgeSymbol'));\r\n            var symbolSize = normalize$2(seriesModel.get('edgeSymbolSize'));\r\n            edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\r\n            edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\r\n            edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\r\n            edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\r\n            edgeData.setVisual('style', seriesModel.getModel('lineStyle').getLineStyle());\r\n            edgeData.each(function (idx) {\r\n                var itemModel = edgeData.getItemModel(idx);\r\n                var edge = graph.getEdgeByIndex(idx);\r\n                var symbolType = normalize$2(itemModel.getShallow('symbol', true));\r\n                var symbolSize = normalize$2(itemModel.getShallow('symbolSize', true));\r\n                var style = itemModel.getModel('lineStyle').getLineStyle();\r\n                var existsStyle = edgeData.ensureUniqueItemVisual(idx, 'style');\r\n                extend(existsStyle, style);\r\n                switch (existsStyle.stroke) {\r\n                    case 'source': {\r\n                        var nodeStyle = edge.node1.getVisual('style');\r\n                        existsStyle.stroke = nodeStyle && nodeStyle.fill;\r\n                        break;\r\n                    }\r\n                    case 'target': {\r\n                        var nodeStyle = edge.node2.getVisual('style');\r\n                        existsStyle.stroke = nodeStyle && nodeStyle.fill;\r\n                        break;\r\n                    }\r\n                }\r\n                symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\r\n                symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\r\n                symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\r\n                symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\r\n            });\r\n        });\r\n    }\n\n    function simpleLayout(seriesModel) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (coordSys && coordSys.type !== 'view') {\r\n            return;\r\n        }\r\n        var graph = seriesModel.getGraph();\r\n        graph.eachNode(function (node) {\r\n            var model = node.getModel();\r\n            node.setLayout([+model.get('x'), +model.get('y')]);\r\n        });\r\n        simpleLayoutEdge(graph, seriesModel);\r\n    }\r\n    function simpleLayoutEdge(graph, seriesModel) {\r\n        graph.eachEdge(function (edge, index) {\r\n            var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\r\n            var p1 = clone$1(edge.node1.getLayout());\r\n            var p2 = clone$1(edge.node2.getLayout());\r\n            var points = [p1, p2];\r\n            if (+curveness) {\r\n                points.push([\r\n                    (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness,\r\n                    (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness\r\n                ]);\r\n            }\r\n            edge.setLayout(points);\r\n        });\r\n    }\n\n    function graphSimpleLayout(ecModel, api) {\r\n        ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n            var layout = seriesModel.get('layout');\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && coordSys.type !== 'view') {\r\n                var data_1 = seriesModel.getData();\r\n                var dimensions_1 = [];\r\n                each(coordSys.dimensions, function (coordDim) {\r\n                    dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));\r\n                });\r\n                for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {\r\n                    var value = [];\r\n                    var hasValue = false;\r\n                    for (var i = 0; i < dimensions_1.length; i++) {\r\n                        var val = data_1.get(dimensions_1[i], dataIndex);\r\n                        if (!isNaN(val)) {\r\n                            hasValue = true;\r\n                        }\r\n                        value.push(val);\r\n                    }\r\n                    if (hasValue) {\r\n                        data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));\r\n                    }\r\n                    else {\r\n                        data_1.setItemLayout(dataIndex, [NaN, NaN]);\r\n                    }\r\n                }\r\n                simpleLayoutEdge(data_1.graph, seriesModel);\r\n            }\r\n            else if (!layout || layout === 'none') {\r\n                simpleLayout(seriesModel);\r\n            }\r\n        });\r\n    }\n\n    var PI$7 = Math.PI;\r\n    var _symbolRadiansHalf = [];\r\n    function circularLayout(seriesModel, basedOn) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (coordSys && coordSys.type !== 'view') {\r\n            return;\r\n        }\r\n        var rect = coordSys.getBoundingRect();\r\n        var nodeData = seriesModel.getData();\r\n        var graph = nodeData.graph;\r\n        var cx = rect.width / 2 + rect.x;\r\n        var cy = rect.height / 2 + rect.y;\r\n        var r = Math.min(rect.width, rect.height) / 2;\r\n        var count = nodeData.count();\r\n        nodeData.setLayout({\r\n            cx: cx,\r\n            cy: cy\r\n        });\r\n        if (!count) {\r\n            return;\r\n        }\r\n        _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count);\r\n        graph.eachEdge(function (edge, index) {\r\n            var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), getCurvenessForEdge(edge, seriesModel, index), 0);\r\n            var p1 = clone$1(edge.node1.getLayout());\r\n            var p2 = clone$1(edge.node2.getLayout());\r\n            var cp1;\r\n            var x12 = (p1[0] + p2[0]) / 2;\r\n            var y12 = (p1[1] + p2[1]) / 2;\r\n            if (+curveness) {\r\n                curveness *= 3;\r\n                cp1 = [\r\n                    cx * curveness + x12 * (1 - curveness),\r\n                    cy * curveness + y12 * (1 - curveness)\r\n                ];\r\n            }\r\n            edge.setLayout([p1, p2, cp1]);\r\n        });\r\n    }\r\n    var _layoutNodesBasedOn = {\r\n        value: function (seriesModel, graph, nodeData, r, cx, cy, count) {\r\n            var angle = 0;\r\n            var sum = nodeData.getSum('value');\r\n            var unitAngle = Math.PI * 2 / (sum || count);\r\n            graph.eachNode(function (node) {\r\n                var value = node.getValue('value');\r\n                var radianHalf = unitAngle * (sum ? value : 1) / 2;\r\n                angle += radianHalf;\r\n                node.setLayout([\r\n                    r * Math.cos(angle) + cx,\r\n                    r * Math.sin(angle) + cy\r\n                ]);\r\n                angle += radianHalf;\r\n            });\r\n        },\r\n        symbolSize: function (seriesModel, graph, nodeData, r, cx, cy, count) {\r\n            var sumRadian = 0;\r\n            _symbolRadiansHalf.length = count;\r\n            var nodeScale = getNodeGlobalScale(seriesModel);\r\n            graph.eachNode(function (node) {\r\n                var symbolSize = getSymbolSize(node);\r\n                isNaN(symbolSize) && (symbolSize = 2);\r\n                symbolSize < 0 && (symbolSize = 0);\r\n                symbolSize *= nodeScale;\r\n                var symbolRadianHalf = Math.asin(symbolSize / 2 / r);\r\n                isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$7 / 2);\r\n                _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\r\n                sumRadian += symbolRadianHalf * 2;\r\n            });\r\n            var halfRemainRadian = (2 * PI$7 - sumRadian) / count / 2;\r\n            var angle = 0;\r\n            graph.eachNode(function (node) {\r\n                var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\r\n                angle += radianHalf;\r\n                node.setLayout([\r\n                    r * Math.cos(angle) + cx,\r\n                    r * Math.sin(angle) + cy\r\n                ]);\r\n                angle += radianHalf;\r\n            });\r\n        }\r\n    };\n\n    function graphCircularLayout(ecModel) {\r\n        ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n            if (seriesModel.get('layout') === 'circular') {\r\n                circularLayout(seriesModel, 'symbolSize');\r\n            }\r\n        });\r\n    }\n\n    var scaleAndAdd$1 = scaleAndAdd;\r\n    function forceLayout(inNodes, inEdges, opts) {\r\n        var nodes = inNodes;\r\n        var edges = inEdges;\r\n        var rect = opts.rect;\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var center = [rect.x + width / 2, rect.y + height / 2];\r\n        var gravity = opts.gravity == null ? 0.1 : opts.gravity;\r\n        for (var i = 0; i < nodes.length; i++) {\r\n            var n = nodes[i];\r\n            if (!n.p) {\r\n                n.p = create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\r\n            }\r\n            n.pp = clone$1(n.p);\r\n            n.edges = null;\r\n        }\r\n        var initialFriction = opts.friction == null ? 0.6 : opts.friction;\r\n        var friction = initialFriction;\r\n        var beforeStepCallback;\r\n        var afterStepCallback;\r\n        return {\r\n            warmUp: function () {\r\n                friction = initialFriction * 0.8;\r\n            },\r\n            setFixed: function (idx) {\r\n                nodes[idx].fixed = true;\r\n            },\r\n            setUnfixed: function (idx) {\r\n                nodes[idx].fixed = false;\r\n            },\r\n            beforeStep: function (cb) {\r\n                beforeStepCallback = cb;\r\n            },\r\n            afterStep: function (cb) {\r\n                afterStepCallback = cb;\r\n            },\r\n            step: function (cb) {\r\n                beforeStepCallback && beforeStepCallback(nodes, edges);\r\n                var v12 = [];\r\n                var nLen = nodes.length;\r\n                for (var i = 0; i < edges.length; i++) {\r\n                    var e = edges[i];\r\n                    if (e.ignoreForceLayout) {\r\n                        continue;\r\n                    }\r\n                    var n1 = e.n1;\r\n                    var n2 = e.n2;\r\n                    sub(v12, n2.p, n1.p);\r\n                    var d = len(v12) - e.d;\r\n                    var w = n2.w / (n1.w + n2.w);\r\n                    if (isNaN(w)) {\r\n                        w = 0;\r\n                    }\r\n                    normalize(v12, v12);\r\n                    !n1.fixed && scaleAndAdd$1(n1.p, n1.p, v12, w * d * friction);\r\n                    !n2.fixed && scaleAndAdd$1(n2.p, n2.p, v12, -(1 - w) * d * friction);\r\n                }\r\n                for (var i = 0; i < nLen; i++) {\r\n                    var n = nodes[i];\r\n                    if (!n.fixed) {\r\n                        sub(v12, center, n.p);\r\n                        scaleAndAdd$1(n.p, n.p, v12, gravity * friction);\r\n                    }\r\n                }\r\n                for (var i = 0; i < nLen; i++) {\r\n                    var n1 = nodes[i];\r\n                    for (var j = i + 1; j < nLen; j++) {\r\n                        var n2 = nodes[j];\r\n                        sub(v12, n2.p, n1.p);\r\n                        var d = len(v12);\r\n                        if (d === 0) {\r\n                            set(v12, Math.random() - 0.5, Math.random() - 0.5);\r\n                            d = 1;\r\n                        }\r\n                        var repFact = (n1.rep + n2.rep) / d / d;\r\n                        !n1.fixed && scaleAndAdd$1(n1.pp, n1.pp, v12, repFact);\r\n                        !n2.fixed && scaleAndAdd$1(n2.pp, n2.pp, v12, -repFact);\r\n                    }\r\n                }\r\n                var v = [];\r\n                for (var i = 0; i < nLen; i++) {\r\n                    var n = nodes[i];\r\n                    if (!n.fixed) {\r\n                        sub(v, n.p, n.pp);\r\n                        scaleAndAdd$1(n.p, n.p, v, friction);\r\n                        copy(n.pp, n.p);\r\n                    }\r\n                }\r\n                friction = friction * 0.992;\r\n                var finished = friction < 0.01;\r\n                afterStepCallback && afterStepCallback(nodes, edges, finished);\r\n                cb && cb(finished);\r\n            }\r\n        };\r\n    }\n\n    function graphForceLayout(ecModel) {\r\n        ecModel.eachSeriesByType('graph', function (graphSeries) {\r\n            var coordSys = graphSeries.coordinateSystem;\r\n            if (coordSys && coordSys.type !== 'view') {\r\n                return;\r\n            }\r\n            if (graphSeries.get('layout') === 'force') {\r\n                var preservedPoints_1 = graphSeries.preservedPoints || {};\r\n                var graph_1 = graphSeries.getGraph();\r\n                var nodeData_1 = graph_1.data;\r\n                var edgeData = graph_1.edgeData;\r\n                var forceModel = graphSeries.getModel('force');\r\n                var initLayout = forceModel.get('initLayout');\r\n                if (graphSeries.preservedPoints) {\r\n                    nodeData_1.each(function (idx) {\r\n                        var id = nodeData_1.getId(idx);\r\n                        nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]);\r\n                    });\r\n                }\r\n                else if (!initLayout || initLayout === 'none') {\r\n                    simpleLayout(graphSeries);\r\n                }\r\n                else if (initLayout === 'circular') {\r\n                    circularLayout(graphSeries, 'value');\r\n                }\r\n                var nodeDataExtent_1 = nodeData_1.getDataExtent('value');\r\n                var edgeDataExtent_1 = edgeData.getDataExtent('value');\r\n                var repulsion = forceModel.get('repulsion');\r\n                var edgeLength = forceModel.get('edgeLength');\r\n                var repulsionArr_1 = isArray(repulsion)\r\n                    ? repulsion : [repulsion, repulsion];\r\n                var edgeLengthArr_1 = isArray(edgeLength)\r\n                    ? edgeLength : [edgeLength, edgeLength];\r\n                edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];\r\n                var nodes_1 = nodeData_1.mapArray('value', function (value, idx) {\r\n                    var point = nodeData_1.getItemLayout(idx);\r\n                    var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1);\r\n                    if (isNaN(rep)) {\r\n                        rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;\r\n                    }\r\n                    return {\r\n                        w: rep,\r\n                        rep: rep,\r\n                        fixed: nodeData_1.getItemModel(idx).get('fixed'),\r\n                        p: (!point || isNaN(point[0]) || isNaN(point[1])) ? null : point\r\n                    };\r\n                });\r\n                var edges = edgeData.mapArray('value', function (value, idx) {\r\n                    var edge = graph_1.getEdgeByIndex(idx);\r\n                    var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1);\r\n                    if (isNaN(d)) {\r\n                        d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;\r\n                    }\r\n                    var edgeModel = edge.getModel();\r\n                    var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\r\n                    return {\r\n                        n1: nodes_1[edge.node1.dataIndex],\r\n                        n2: nodes_1[edge.node2.dataIndex],\r\n                        d: d,\r\n                        curveness: curveness,\r\n                        ignoreForceLayout: edgeModel.get('ignoreForceLayout')\r\n                    };\r\n                });\r\n                var rect = coordSys.getBoundingRect();\r\n                var forceInstance = forceLayout(nodes_1, edges, {\r\n                    rect: rect,\r\n                    gravity: forceModel.get('gravity'),\r\n                    friction: forceModel.get('friction')\r\n                });\r\n                forceInstance.beforeStep(function (nodes, edges) {\r\n                    for (var i = 0, l = nodes.length; i < l; i++) {\r\n                        if (nodes[i].fixed) {\r\n                            copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());\r\n                        }\r\n                    }\r\n                });\r\n                forceInstance.afterStep(function (nodes, edges, stopped) {\r\n                    for (var i = 0, l = nodes.length; i < l; i++) {\r\n                        if (!nodes[i].fixed) {\r\n                            graph_1.getNodeByIndex(i).setLayout(nodes[i].p);\r\n                        }\r\n                        preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;\r\n                    }\r\n                    for (var i = 0, l = edges.length; i < l; i++) {\r\n                        var e = edges[i];\r\n                        var edge = graph_1.getEdgeByIndex(i);\r\n                        var p1 = e.n1.p;\r\n                        var p2 = e.n2.p;\r\n                        var points = edge.getLayout();\r\n                        points = points ? points.slice() : [];\r\n                        points[0] = points[0] || [];\r\n                        points[1] = points[1] || [];\r\n                        copy(points[0], p1);\r\n                        copy(points[1], p2);\r\n                        if (+e.curveness) {\r\n                            points[2] = [\r\n                                (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness,\r\n                                (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness\r\n                            ];\r\n                        }\r\n                        edge.setLayout(points);\r\n                    }\r\n                });\r\n                graphSeries.forceLayout = forceInstance;\r\n                graphSeries.preservedPoints = preservedPoints_1;\r\n                forceInstance.step();\r\n            }\r\n            else {\r\n                graphSeries.forceLayout = null;\r\n            }\r\n        });\r\n    }\n\n    function getViewRect$2(seriesModel, api, aspect) {\r\n        var option = extend(seriesModel.getBoxLayoutParams(), {\r\n            aspect: aspect\r\n        });\r\n        return getLayoutRect(option, {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function createViewCoordSys(ecModel, api) {\r\n        var viewList = [];\r\n        ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n            var coordSysType = seriesModel.get('coordinateSystem');\r\n            if (!coordSysType || coordSysType === 'view') {\r\n                var data_1 = seriesModel.getData();\r\n                var positions = data_1.mapArray(function (idx) {\r\n                    var itemModel = data_1.getItemModel(idx);\r\n                    return [+itemModel.get('x'), +itemModel.get('y')];\r\n                });\r\n                var min = [];\r\n                var max = [];\r\n                fromPoints(positions, min, max);\r\n                if (max[0] - min[0] === 0) {\r\n                    max[0] += 1;\r\n                    min[0] -= 1;\r\n                }\r\n                if (max[1] - min[1] === 0) {\r\n                    max[1] += 1;\r\n                    min[1] -= 1;\r\n                }\r\n                var aspect = (max[0] - min[0]) / (max[1] - min[1]);\r\n                var viewRect = getViewRect$2(seriesModel, api, aspect);\r\n                if (isNaN(aspect)) {\r\n                    min = [viewRect.x, viewRect.y];\r\n                    max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\r\n                }\r\n                var bbWidth = max[0] - min[0];\r\n                var bbHeight = max[1] - min[1];\r\n                var viewWidth = viewRect.width;\r\n                var viewHeight = viewRect.height;\r\n                var viewCoordSys = seriesModel.coordinateSystem = new View();\r\n                viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\r\n                viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\r\n                viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight);\r\n                viewCoordSys.setCenter(seriesModel.get('center'));\r\n                viewCoordSys.setZoom(seriesModel.get('zoom'));\r\n                viewList.push(viewCoordSys);\r\n            }\r\n        });\r\n        return viewList;\r\n    }\n\n    registerProcessor(categoryFilter);\r\n    registerVisual(categoryVisual);\r\n    registerVisual(graphEdgeVisual);\r\n    registerLayout(graphSimpleLayout);\r\n    registerLayout(PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout);\r\n    registerLayout(graphForceLayout);\r\n    registerCoordinateSystem('graphView', {\r\n        dimensions: View.dimensions,\r\n        create: createViewCoordSys\r\n    });\n\n    var GaugeSeriesModel = (function (_super) {\r\n        __extends(GaugeSeriesModel, _super);\r\n        function GaugeSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GaugeSeriesModel.type;\r\n            _this.visualStyleAccessPath = 'itemStyle';\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        GaugeSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListSimply(this, ['value']);\r\n        };\r\n        GaugeSeriesModel.type = 'series.gauge';\r\n        GaugeSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            center: ['50%', '50%'],\r\n            legendHoverLink: true,\r\n            radius: '75%',\r\n            startAngle: 225,\r\n            endAngle: -45,\r\n            clockwise: true,\r\n            min: 0,\r\n            max: 100,\r\n            splitNumber: 10,\r\n            axisLine: {\r\n                show: true,\r\n                roundCap: false,\r\n                lineStyle: {\r\n                    color: [[1, '#E6EBF8']],\r\n                    width: 10\r\n                }\r\n            },\r\n            progress: {\r\n                show: false,\r\n                overlap: true,\r\n                width: 10,\r\n                roundCap: false,\r\n                clip: true\r\n            },\r\n            splitLine: {\r\n                show: true,\r\n                length: 10,\r\n                distance: 10,\r\n                lineStyle: {\r\n                    color: '#63677A',\r\n                    width: 3,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            axisTick: {\r\n                show: true,\r\n                splitNumber: 5,\r\n                length: 6,\r\n                distance: 10,\r\n                lineStyle: {\r\n                    color: '#63677A',\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            axisLabel: {\r\n                show: true,\r\n                distance: 15,\r\n                color: '#464646',\r\n                fontSize: 12\r\n            },\r\n            pointer: {\r\n                icon: null,\r\n                offsetCenter: [0, 0],\r\n                show: true,\r\n                length: '60%',\r\n                width: 6,\r\n                keepAspect: false\r\n            },\r\n            anchor: {\r\n                show: false,\r\n                showAbove: false,\r\n                size: 6,\r\n                icon: 'circle',\r\n                offsetCenter: [0, 0],\r\n                keepAspect: false,\r\n                itemStyle: {\r\n                    color: '#fff',\r\n                    borderWidth: 0,\r\n                    borderColor: '#5470c6'\r\n                }\r\n            },\r\n            title: {\r\n                show: true,\r\n                offsetCenter: [0, '20%'],\r\n                color: '#464646',\r\n                fontSize: 16,\r\n                valueAnimation: false\r\n            },\r\n            detail: {\r\n                show: true,\r\n                backgroundColor: 'rgba(0,0,0,0)',\r\n                borderWidth: 0,\r\n                borderColor: '#ccc',\r\n                width: 100,\r\n                height: null,\r\n                padding: [5, 10],\r\n                offsetCenter: [0, '40%'],\r\n                color: '#464646',\r\n                fontSize: 30,\r\n                fontWeight: 'bold',\r\n                lineHeight: 30,\r\n                valueAnimation: false\r\n            }\r\n        };\r\n        return GaugeSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(GaugeSeriesModel);\n\n    var PointerShape = (function () {\r\n        function PointerShape() {\r\n            this.angle = 0;\r\n            this.width = 10;\r\n            this.r = 10;\r\n            this.x = 0;\r\n            this.y = 0;\r\n        }\r\n        return PointerShape;\r\n    }());\r\n    var PointerPath = (function (_super) {\r\n        __extends(PointerPath, _super);\r\n        function PointerPath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'pointer';\r\n            return _this;\r\n        }\r\n        PointerPath.prototype.getDefaultShape = function () {\r\n            return new PointerShape();\r\n        };\r\n        PointerPath.prototype.buildPath = function (ctx, shape) {\r\n            var mathCos = Math.cos;\r\n            var mathSin = Math.sin;\r\n            var r = shape.r;\r\n            var width = shape.width;\r\n            var angle = shape.angle;\r\n            var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\r\n            var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\r\n            angle = shape.angle - Math.PI / 2;\r\n            ctx.moveTo(x, y);\r\n            ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\r\n            ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\r\n            ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\r\n            ctx.lineTo(x, y);\r\n        };\r\n        return PointerPath;\r\n    }(Path));\n\n    function parsePosition(seriesModel, api) {\r\n        var center = seriesModel.get('center');\r\n        var width = api.getWidth();\r\n        var height = api.getHeight();\r\n        var size = Math.min(width, height);\r\n        var cx = parsePercent$2(center[0], api.getWidth());\r\n        var cy = parsePercent$2(center[1], api.getHeight());\r\n        var r = parsePercent$2(seriesModel.get('radius'), size / 2);\r\n        return {\r\n            cx: cx,\r\n            cy: cy,\r\n            r: r\r\n        };\r\n    }\r\n    function formatLabel(value, labelFormatter) {\r\n        var label = value == null ? '' : (value + '');\r\n        if (labelFormatter) {\r\n            if (typeof labelFormatter === 'string') {\r\n                label = labelFormatter.replace('{value}', label);\r\n            }\r\n            else if (typeof labelFormatter === 'function') {\r\n                label = labelFormatter(value);\r\n            }\r\n        }\r\n        return label;\r\n    }\r\n    var PI2$9 = Math.PI * 2;\r\n    var GaugeView = (function (_super) {\r\n        __extends(GaugeView, _super);\r\n        function GaugeView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GaugeView.type;\r\n            return _this;\r\n        }\r\n        GaugeView.prototype.render = function (seriesModel, ecModel, api) {\r\n            this.group.removeAll();\r\n            var colorList = seriesModel.get(['axisLine', 'lineStyle', 'color']);\r\n            var posInfo = parsePosition(seriesModel, api);\r\n            this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\r\n            this._data = seriesModel.getData();\r\n        };\r\n        GaugeView.prototype.dispose = function () { };\r\n        GaugeView.prototype._renderMain = function (seriesModel, ecModel, api, colorList, posInfo) {\r\n            var group = this.group;\r\n            var clockwise = seriesModel.get('clockwise');\r\n            var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\r\n            var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\r\n            var axisLineModel = seriesModel.getModel('axisLine');\r\n            var roundCap = axisLineModel.get('roundCap');\r\n            var MainPath = roundCap ? SausagePath : Sector;\r\n            var showAxis = axisLineModel.get('show');\r\n            var lineStyleModel = axisLineModel.getModel('lineStyle');\r\n            var axisLineWidth = lineStyleModel.get('width');\r\n            var angleRangeSpan = !((endAngle - startAngle) % PI2$9) && endAngle !== startAngle\r\n                ? PI2$9 : (endAngle - startAngle) % PI2$9;\r\n            var prevEndAngle = startAngle;\r\n            for (var i = 0; showAxis && i < colorList.length; i++) {\r\n                var percent = Math.min(Math.max(colorList[i][0], 0), 1);\r\n                endAngle = startAngle + angleRangeSpan * percent;\r\n                var sector = new MainPath({\r\n                    shape: {\r\n                        startAngle: prevEndAngle,\r\n                        endAngle: endAngle,\r\n                        cx: posInfo.cx,\r\n                        cy: posInfo.cy,\r\n                        clockwise: clockwise,\r\n                        r0: posInfo.r - axisLineWidth,\r\n                        r: posInfo.r\r\n                    },\r\n                    silent: true\r\n                });\r\n                sector.setStyle({\r\n                    fill: colorList[i][1]\r\n                });\r\n                sector.setStyle(lineStyleModel.getLineStyle(['color', 'width']));\r\n                group.add(sector);\r\n                prevEndAngle = endAngle;\r\n            }\r\n            var getColor = function (percent) {\r\n                if (percent <= 0) {\r\n                    return colorList[0][1];\r\n                }\r\n                var i;\r\n                for (i = 0; i < colorList.length; i++) {\r\n                    if (colorList[i][0] >= percent\r\n                        && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\r\n                        return colorList[i][1];\r\n                    }\r\n                }\r\n                return colorList[i - 1][1];\r\n            };\r\n            if (!clockwise) {\r\n                var tmp = startAngle;\r\n                startAngle = endAngle;\r\n                endAngle = tmp;\r\n            }\r\n            this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);\r\n            this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo);\r\n            this._renderAnchor(seriesModel, posInfo);\r\n            this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);\r\n        };\r\n        GaugeView.prototype._renderTicks = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {\r\n            var group = this.group;\r\n            var cx = posInfo.cx;\r\n            var cy = posInfo.cy;\r\n            var r = posInfo.r;\r\n            var minVal = +seriesModel.get('min');\r\n            var maxVal = +seriesModel.get('max');\r\n            var splitLineModel = seriesModel.getModel('splitLine');\r\n            var tickModel = seriesModel.getModel('axisTick');\r\n            var labelModel = seriesModel.getModel('axisLabel');\r\n            var splitNumber = seriesModel.get('splitNumber');\r\n            var subSplitNumber = tickModel.get('splitNumber');\r\n            var splitLineLen = parsePercent$2(splitLineModel.get('length'), r);\r\n            var tickLen = parsePercent$2(tickModel.get('length'), r);\r\n            var angle = startAngle;\r\n            var step = (endAngle - startAngle) / splitNumber;\r\n            var subStep = step / subSplitNumber;\r\n            var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\r\n            var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\r\n            var splitLineDistance = splitLineModel.get('distance');\r\n            var unitX;\r\n            var unitY;\r\n            for (var i = 0; i <= splitNumber; i++) {\r\n                unitX = Math.cos(angle);\r\n                unitY = Math.sin(angle);\r\n                if (splitLineModel.get('show')) {\r\n                    var distance = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth;\r\n                    var splitLine = new Line({\r\n                        shape: {\r\n                            x1: unitX * (r - distance) + cx,\r\n                            y1: unitY * (r - distance) + cy,\r\n                            x2: unitX * (r - splitLineLen - distance) + cx,\r\n                            y2: unitY * (r - splitLineLen - distance) + cy\r\n                        },\r\n                        style: splitLineStyle,\r\n                        silent: true\r\n                    });\r\n                    if (splitLineStyle.stroke === 'auto') {\r\n                        splitLine.setStyle({\r\n                            stroke: getColor(i / splitNumber)\r\n                        });\r\n                    }\r\n                    group.add(splitLine);\r\n                }\r\n                if (labelModel.get('show')) {\r\n                    var distance = labelModel.get('distance') + splitLineDistance;\r\n                    var label = formatLabel(round$1(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\r\n                    var autoColor = getColor(i / splitNumber);\r\n                    group.add(new ZRText({\r\n                        style: createTextStyle(labelModel, {\r\n                            text: label,\r\n                            x: unitX * (r - splitLineLen - distance) + cx,\r\n                            y: unitY * (r - splitLineLen - distance) + cy,\r\n                            verticalAlign: unitY < -0.8 ? 'top' : (unitY > 0.8 ? 'bottom' : 'middle'),\r\n                            align: unitX < -0.4 ? 'left' : (unitX > 0.4 ? 'right' : 'center')\r\n                        }, {\r\n                            inheritColor: autoColor\r\n                        }),\r\n                        silent: true\r\n                    }));\r\n                }\r\n                if (tickModel.get('show') && i !== splitNumber) {\r\n                    var distance = tickModel.get('distance');\r\n                    distance = distance ? distance + axisLineWidth : axisLineWidth;\r\n                    for (var j = 0; j <= subSplitNumber; j++) {\r\n                        unitX = Math.cos(angle);\r\n                        unitY = Math.sin(angle);\r\n                        var tickLine = new Line({\r\n                            shape: {\r\n                                x1: unitX * (r - distance) + cx,\r\n                                y1: unitY * (r - distance) + cy,\r\n                                x2: unitX * (r - tickLen - distance) + cx,\r\n                                y2: unitY * (r - tickLen - distance) + cy\r\n                            },\r\n                            silent: true,\r\n                            style: tickLineStyle\r\n                        });\r\n                        if (tickLineStyle.stroke === 'auto') {\r\n                            tickLine.setStyle({\r\n                                stroke: getColor((i + j / subSplitNumber) / splitNumber)\r\n                            });\r\n                        }\r\n                        group.add(tickLine);\r\n                        angle += subStep;\r\n                    }\r\n                    angle -= subStep;\r\n                }\r\n                else {\r\n                    angle += step;\r\n                }\r\n            }\r\n        };\r\n        GaugeView.prototype._renderPointer = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {\r\n            var group = this.group;\r\n            var oldData = this._data;\r\n            var oldProgressData = this._progressEls;\r\n            var progressList = [];\r\n            var showPointer = seriesModel.get(['pointer', 'show']);\r\n            var progressModel = seriesModel.getModel('progress');\r\n            var showProgress = progressModel.get('show');\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var minVal = +seriesModel.get('min');\r\n            var maxVal = +seriesModel.get('max');\r\n            var valueExtent = [minVal, maxVal];\r\n            var angleExtent = [startAngle, endAngle];\r\n            function createPointer(idx, angle) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var pointerModel = itemModel.getModel('pointer');\r\n                var pointerWidth = parsePercent$2(pointerModel.get('width'), posInfo.r);\r\n                var pointerLength = parsePercent$2(pointerModel.get('length'), posInfo.r);\r\n                var pointerStr = seriesModel.get(['pointer', 'icon']);\r\n                var pointerOffset = pointerModel.get('offsetCenter');\r\n                var pointerKeepAspect = pointerModel.get('keepAspect');\r\n                var pointer;\r\n                if (pointerStr) {\r\n                    pointer = createSymbol(pointerStr, parsePercent$2(pointerOffset[0], posInfo.r) - pointerWidth / 2, parsePercent$2(pointerOffset[1], posInfo.r) - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect);\r\n                }\r\n                else {\r\n                    pointer = new PointerPath({\r\n                        shape: {\r\n                            angle: -Math.PI / 2,\r\n                            width: parsePercent$2(pointerModel.get('width'), posInfo.r),\r\n                            r: parsePercent$2(pointerModel.get('length'), posInfo.r)\r\n                        }\r\n                    });\r\n                }\r\n                pointer.rotation = -(angle + Math.PI / 2);\r\n                pointer.x = posInfo.cx;\r\n                pointer.y = posInfo.cy;\r\n                return pointer;\r\n            }\r\n            function createProgress(idx, endAngle) {\r\n                var roundCap = progressModel.get('roundCap');\r\n                var ProgressPath = roundCap ? SausagePath : Sector;\r\n                var isOverlap = progressModel.get('overlap');\r\n                var progressWidth = isOverlap ? progressModel.get('width') : axisLineWidth / data.count();\r\n                var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth;\r\n                var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth;\r\n                var progress = new ProgressPath({\r\n                    shape: {\r\n                        startAngle: startAngle,\r\n                        endAngle: endAngle,\r\n                        cx: posInfo.cx,\r\n                        cy: posInfo.cy,\r\n                        clockwise: clockwise,\r\n                        r0: r0,\r\n                        r: r\r\n                    }\r\n                });\r\n                isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal);\r\n                return progress;\r\n            }\r\n            if (showProgress || showPointer) {\r\n                data.diff(oldData)\r\n                    .add(function (idx) {\r\n                    if (showPointer) {\r\n                        var pointer = createPointer(idx, startAngle);\r\n                        initProps(pointer, {\r\n                            rotation: -(linearMap(data.get(valueDim, idx), valueExtent, angleExtent, true)\r\n                                + Math.PI / 2)\r\n                        }, seriesModel);\r\n                        group.add(pointer);\r\n                        data.setItemGraphicEl(idx, pointer);\r\n                    }\r\n                    if (showProgress) {\r\n                        var progress = createProgress(idx, startAngle);\r\n                        var isClip = progressModel.get('clip');\r\n                        initProps(progress, {\r\n                            shape: {\r\n                                endAngle: linearMap(data.get(valueDim, idx), valueExtent, angleExtent, isClip)\r\n                            }\r\n                        }, seriesModel);\r\n                        group.add(progress);\r\n                        progressList[idx] = progress;\r\n                    }\r\n                })\r\n                    .update(function (newIdx, oldIdx) {\r\n                    if (showPointer) {\r\n                        var previousPointer = oldData.getItemGraphicEl(oldIdx);\r\n                        var previousRotate = previousPointer ? previousPointer.rotation : startAngle;\r\n                        var pointer = createPointer(newIdx, previousRotate);\r\n                        pointer.rotation = previousRotate;\r\n                        updateProps(pointer, {\r\n                            rotation: -(linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, true)\r\n                                + Math.PI / 2)\r\n                        }, seriesModel);\r\n                        group.add(pointer);\r\n                        data.setItemGraphicEl(newIdx, pointer);\r\n                    }\r\n                    if (showProgress) {\r\n                        var previousProgress = oldProgressData[oldIdx];\r\n                        var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle;\r\n                        var progress = createProgress(newIdx, previousEndAngle);\r\n                        var isClip = progressModel.get('clip');\r\n                        updateProps(progress, {\r\n                            shape: {\r\n                                endAngle: linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, isClip)\r\n                            }\r\n                        }, seriesModel);\r\n                        group.add(progress);\r\n                        progressList[newIdx] = progress;\r\n                    }\r\n                })\r\n                    .execute();\r\n                data.each(function (idx) {\r\n                    var itemModel = data.getItemModel(idx);\r\n                    var emphasisModel = itemModel.getModel('emphasis');\r\n                    if (showPointer) {\r\n                        var pointer = data.getItemGraphicEl(idx);\r\n                        pointer.useStyle(data.getItemVisual(idx, 'style'));\r\n                        pointer.setStyle(itemModel.getModel(['pointer', 'itemStyle']).getItemStyle());\r\n                        if (pointer.style.fill === 'auto') {\r\n                            pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\r\n                        }\r\n                        pointer.z2EmphasisLift = 0;\r\n                        setStatesStylesFromModel(pointer, itemModel);\r\n                        enableHoverEmphasis(pointer, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n                    }\r\n                    if (showProgress) {\r\n                        var progress = progressList[idx];\r\n                        progress.useStyle(data.getItemVisual(idx, 'style'));\r\n                        progress.setStyle(itemModel.getModel(['progress', 'itemStyle']).getItemStyle());\r\n                        progress.z2EmphasisLift = 0;\r\n                        setStatesStylesFromModel(progress, itemModel);\r\n                        enableHoverEmphasis(progress, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n                    }\r\n                });\r\n                this._progressEls = progressList;\r\n            }\r\n        };\r\n        GaugeView.prototype._renderAnchor = function (seriesModel, posInfo) {\r\n            var anchorModel = seriesModel.getModel('anchor');\r\n            var showAnchor = anchorModel.get('show');\r\n            if (showAnchor) {\r\n                var anchorSize = anchorModel.get('size');\r\n                var anchorType = anchorModel.get('icon');\r\n                var offsetCenter = anchorModel.get('offsetCenter');\r\n                var anchorKeepAspect = anchorModel.get('keepAspect');\r\n                var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent$2(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent$2(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect);\r\n                anchor.z2 = anchorModel.get('showAbove') ? 1 : 0;\r\n                anchor.setStyle(anchorModel.getModel('itemStyle').getItemStyle());\r\n                this.group.add(anchor);\r\n            }\r\n        };\r\n        GaugeView.prototype._renderTitleAndDetail = function (seriesModel, ecModel, api, getColor, posInfo) {\r\n            var _this = this;\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var minVal = +seriesModel.get('min');\r\n            var maxVal = +seriesModel.get('max');\r\n            var contentGroup = new Group();\r\n            var newTitleEls = [];\r\n            var newDetailEls = [];\r\n            var hasAnimation = seriesModel.isAnimationEnabled();\r\n            data.diff(this._data)\r\n                .add(function (idx) {\r\n                newTitleEls[idx] = new ZRText({\r\n                    silent: true\r\n                });\r\n                newDetailEls[idx] = new ZRText({\r\n                    silent: true\r\n                });\r\n            })\r\n                .update(function (idx, oldIdx) {\r\n                newTitleEls[idx] = _this._titleEls[oldIdx];\r\n                newDetailEls[idx] = _this._detailEls[oldIdx];\r\n            })\r\n                .execute();\r\n            data.each(function (idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var value = data.get(valueDim, idx);\r\n                var itemGroup = new Group();\r\n                var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\r\n                var itemTitleModel = itemModel.getModel('title');\r\n                if (itemTitleModel.get('show')) {\r\n                    var titleOffsetCenter = itemTitleModel.get('offsetCenter');\r\n                    var titleX = posInfo.cx + parsePercent$2(titleOffsetCenter[0], posInfo.r);\r\n                    var titleY = posInfo.cy + parsePercent$2(titleOffsetCenter[1], posInfo.r);\r\n                    var labelEl = newTitleEls[idx];\r\n                    labelEl.attr({\r\n                        style: createTextStyle(itemTitleModel, {\r\n                            x: titleX,\r\n                            y: titleY,\r\n                            text: data.getName(idx),\r\n                            align: 'center',\r\n                            verticalAlign: 'middle'\r\n                        }, { inheritColor: autoColor })\r\n                    });\r\n                    setLabelValueAnimation(labelEl, { normal: itemTitleModel }, seriesModel.getRawValue(idx), function () { return data.getName(idx); });\r\n                    hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel);\r\n                    itemGroup.add(labelEl);\r\n                }\r\n                var itemDetailModel = itemModel.getModel('detail');\r\n                if (itemDetailModel.get('show')) {\r\n                    var detailOffsetCenter = itemDetailModel.get('offsetCenter');\r\n                    var detailX = posInfo.cx + parsePercent$2(detailOffsetCenter[0], posInfo.r);\r\n                    var detailY = posInfo.cy + parsePercent$2(detailOffsetCenter[1], posInfo.r);\r\n                    var width = parsePercent$2(itemDetailModel.get('width'), posInfo.r);\r\n                    var height = parsePercent$2(itemDetailModel.get('height'), posInfo.r);\r\n                    var detailColor = (seriesModel.get(['progress', 'show']) ? data.getItemVisual(idx, 'style').fill : autoColor);\r\n                    var labelEl = newDetailEls[idx];\r\n                    var formatter_1 = itemDetailModel.get('formatter');\r\n                    labelEl.attr({\r\n                        style: createTextStyle(itemDetailModel, {\r\n                            x: detailX,\r\n                            y: detailY,\r\n                            text: formatLabel(value, formatter_1),\r\n                            width: isNaN(width) ? null : width,\r\n                            height: isNaN(height) ? null : height,\r\n                            align: 'center',\r\n                            verticalAlign: 'middle'\r\n                        }, { inheritColor: detailColor })\r\n                    });\r\n                    setLabelValueAnimation(labelEl, { normal: itemDetailModel }, seriesModel.getRawValue(idx), function (value) { return formatLabel(value, formatter_1); });\r\n                    hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel);\r\n                    itemGroup.add(labelEl);\r\n                }\r\n                contentGroup.add(itemGroup);\r\n            });\r\n            this.group.add(contentGroup);\r\n            this._titleEls = newTitleEls;\r\n            this._detailEls = newDetailEls;\r\n        };\r\n        GaugeView.type = 'gauge';\r\n        return GaugeView;\r\n    }(ChartView));\r\n    ChartView.registerClass(GaugeView);\n\n    var FunnelSeriesModel = (function (_super) {\r\n        __extends(FunnelSeriesModel, _super);\r\n        function FunnelSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = FunnelSeriesModel.type;\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        FunnelSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n            this._defaultLabelLine(option);\r\n        };\r\n        FunnelSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListSimply(this, {\r\n                coordDimensions: ['value'],\r\n                encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n            });\r\n        };\r\n        FunnelSeriesModel.prototype._defaultLabelLine = function (option) {\r\n            defaultEmphasis(option, 'labelLine', ['show']);\r\n            var labelLineNormalOpt = option.labelLine;\r\n            var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n            labelLineNormalOpt.show = labelLineNormalOpt.show\r\n                && option.label.show;\r\n            labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n                && option.emphasis.label.show;\r\n        };\r\n        FunnelSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var data = this.getData();\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n            var valueDim = data.mapDimension('value');\r\n            var sum = data.getSum(valueDim);\r\n            params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\r\n            params.$vars.push('percent');\r\n            return params;\r\n        };\r\n        FunnelSeriesModel.type = 'series.funnel';\r\n        FunnelSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            left: 80,\r\n            top: 60,\r\n            right: 80,\r\n            bottom: 60,\r\n            minSize: '0%',\r\n            maxSize: '100%',\r\n            sort: 'descending',\r\n            orient: 'vertical',\r\n            gap: 0,\r\n            funnelAlign: 'center',\r\n            label: {\r\n                show: true,\r\n                position: 'outer'\r\n            },\r\n            labelLine: {\r\n                show: true,\r\n                length: 20,\r\n                lineStyle: {\r\n                    width: 1\r\n                }\r\n            },\r\n            itemStyle: {\r\n                borderColor: '#fff',\r\n                borderWidth: 1\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                }\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            }\r\n        };\r\n        return FunnelSeriesModel;\r\n    }(SeriesModel));\r\n    ComponentModel.registerClass(FunnelSeriesModel);\n\n    var opacityAccessPath = ['itemStyle', 'opacity'];\r\n    var FunnelPiece = (function (_super) {\r\n        __extends(FunnelPiece, _super);\r\n        function FunnelPiece(data, idx) {\r\n            var _this = _super.call(this) || this;\r\n            var polygon = _this;\r\n            var labelLine = new Polyline();\r\n            var text = new ZRText();\r\n            polygon.setTextContent(text);\r\n            _this.setTextGuideLine(labelLine);\r\n            _this.updateData(data, idx, true);\r\n            return _this;\r\n        }\r\n        FunnelPiece.prototype.updateData = function (data, idx, firstCreate) {\r\n            var polygon = this;\r\n            var seriesModel = data.hostModel;\r\n            var itemModel = data.getItemModel(idx);\r\n            var layout = data.getItemLayout(idx);\r\n            var emphasisModel = itemModel.getModel('emphasis');\r\n            var opacity = itemModel.get(opacityAccessPath);\r\n            opacity = opacity == null ? 1 : opacity;\r\n            polygon.useStyle(data.getItemVisual(idx, 'style'));\r\n            polygon.style.lineJoin = 'round';\r\n            if (firstCreate) {\r\n                polygon.setShape({\r\n                    points: layout.points\r\n                });\r\n                polygon.style.opacity = 0;\r\n                initProps(polygon, {\r\n                    style: {\r\n                        opacity: opacity\r\n                    }\r\n                }, seriesModel, idx);\r\n            }\r\n            else {\r\n                updateProps(polygon, {\r\n                    style: {\r\n                        opacity: opacity\r\n                    },\r\n                    shape: {\r\n                        points: layout.points\r\n                    }\r\n                }, seriesModel, idx);\r\n            }\r\n            setStatesStylesFromModel(polygon, itemModel);\r\n            this._updateLabel(data, idx);\r\n            enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        };\r\n        FunnelPiece.prototype._updateLabel = function (data, idx) {\r\n            var polygon = this;\r\n            var labelLine = this.getTextGuideLine();\r\n            var labelText = polygon.getTextContent();\r\n            var seriesModel = data.hostModel;\r\n            var itemModel = data.getItemModel(idx);\r\n            var layout = data.getItemLayout(idx);\r\n            var labelLayout = layout.label;\r\n            var style = data.getItemVisual(idx, 'style');\r\n            var visualColor = style.fill;\r\n            setLabelStyle(labelText, getLabelStatesModels(itemModel), {\r\n                labelFetcher: data.hostModel,\r\n                labelDataIndex: idx,\r\n                defaultOpacity: style.opacity,\r\n                defaultText: data.getName(idx)\r\n            }, { normal: {\r\n                    align: labelLayout.textAlign,\r\n                    verticalAlign: labelLayout.verticalAlign\r\n                } });\r\n            polygon.setTextConfig({\r\n                local: true,\r\n                inside: !!labelLayout.inside,\r\n                insideStroke: visualColor,\r\n                outsideFill: visualColor\r\n            });\r\n            var linePoints = labelLayout.linePoints;\r\n            labelLine.setShape({\r\n                points: linePoints\r\n            });\r\n            polygon.textGuideLineConfig = {\r\n                anchor: linePoints ? new Point(linePoints[0][0], linePoints[0][1]) : null\r\n            };\r\n            updateProps(labelText, {\r\n                style: {\r\n                    x: labelLayout.x,\r\n                    y: labelLayout.y\r\n                }\r\n            }, seriesModel, idx);\r\n            labelText.attr({\r\n                rotation: labelLayout.rotation,\r\n                originX: labelLayout.x,\r\n                originY: labelLayout.y,\r\n                z2: 10\r\n            });\r\n            setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {\r\n                stroke: visualColor\r\n            });\r\n        };\r\n        return FunnelPiece;\r\n    }(Polygon));\r\n    var FunnelView = (function (_super) {\r\n        __extends(FunnelView, _super);\r\n        function FunnelView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = FunnelView.type;\r\n            _this.ignoreLabelLineUpdate = true;\r\n            return _this;\r\n        }\r\n        FunnelView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var group = this.group;\r\n            data.diff(oldData)\r\n                .add(function (idx) {\r\n                var funnelPiece = new FunnelPiece(data, idx);\r\n                data.setItemGraphicEl(idx, funnelPiece);\r\n                group.add(funnelPiece);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var piece = oldData.getItemGraphicEl(oldIdx);\r\n                piece.updateData(data, newIdx);\r\n                group.add(piece);\r\n                data.setItemGraphicEl(newIdx, piece);\r\n            })\r\n                .remove(function (idx) {\r\n                var piece = oldData.getItemGraphicEl(idx);\r\n                removeElementWithFadeOut(piece, seriesModel, idx);\r\n            })\r\n                .execute();\r\n            this._data = data;\r\n        };\r\n        FunnelView.prototype.remove = function () {\r\n            this.group.removeAll();\r\n            this._data = null;\r\n        };\r\n        FunnelView.prototype.dispose = function () { };\r\n        FunnelView.type = 'funnel';\r\n        return FunnelView;\r\n    }(ChartView));\r\n    ChartView.registerClass(FunnelView);\n\n    function getViewRect$3(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function getSortedIndices(data, sort) {\r\n        var valueDim = data.mapDimension('value');\r\n        var valueArr = data.mapArray(valueDim, function (val) {\r\n            return val;\r\n        });\r\n        var indices = [];\r\n        var isAscending = sort === 'ascending';\r\n        for (var i = 0, len = data.count(); i < len; i++) {\r\n            indices[i] = i;\r\n        }\r\n        if (typeof sort === 'function') {\r\n            indices.sort(sort);\r\n        }\r\n        else if (sort !== 'none') {\r\n            indices.sort(function (a, b) {\r\n                return isAscending\r\n                    ? valueArr[a] - valueArr[b]\r\n                    : valueArr[b] - valueArr[a];\r\n            });\r\n        }\r\n        return indices;\r\n    }\r\n    function labelLayout(data) {\r\n        var seriesModel = data.hostModel;\r\n        var orient = seriesModel.get('orient');\r\n        data.each(function (idx) {\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelModel = itemModel.getModel('label');\r\n            var labelPosition = labelModel.get('position');\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var layout = data.getItemLayout(idx);\r\n            var points = layout.points;\r\n            var isLabelInside = labelPosition === 'inner'\r\n                || labelPosition === 'inside' || labelPosition === 'center'\r\n                || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\r\n            var textAlign;\r\n            var textX;\r\n            var textY;\r\n            var linePoints;\r\n            if (isLabelInside) {\r\n                if (labelPosition === 'insideLeft') {\r\n                    textX = (points[0][0] + points[3][0]) / 2 + 5;\r\n                    textY = (points[0][1] + points[3][1]) / 2;\r\n                    textAlign = 'left';\r\n                }\r\n                else if (labelPosition === 'insideRight') {\r\n                    textX = (points[1][0] + points[2][0]) / 2 - 5;\r\n                    textY = (points[1][1] + points[2][1]) / 2;\r\n                    textAlign = 'right';\r\n                }\r\n                else {\r\n                    textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\r\n                    textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\r\n                    textAlign = 'center';\r\n                }\r\n                linePoints = [\r\n                    [textX, textY], [textX, textY]\r\n                ];\r\n            }\r\n            else {\r\n                var x1 = void 0;\r\n                var y1 = void 0;\r\n                var x2 = void 0;\r\n                var y2 = void 0;\r\n                var labelLineLen = labelLineModel.get('length');\r\n                if (__DEV__) {\r\n                    if (orient === 'vertical' && ['top', 'bottom'].indexOf(labelPosition) > -1) {\r\n                        labelPosition = 'left';\r\n                        console.warn('Position error: Funnel chart on vertical orient dose not support top and bottom.');\r\n                    }\r\n                    if (orient === 'horizontal' && ['left', 'right'].indexOf(labelPosition) > -1) {\r\n                        labelPosition = 'bottom';\r\n                        console.warn('Position error: Funnel chart on horizontal orient dose not support left and right.');\r\n                    }\r\n                }\r\n                if (labelPosition === 'left') {\r\n                    x1 = (points[3][0] + points[0][0]) / 2;\r\n                    y1 = (points[3][1] + points[0][1]) / 2;\r\n                    x2 = x1 - labelLineLen;\r\n                    textX = x2 - 5;\r\n                    textAlign = 'right';\r\n                }\r\n                else if (labelPosition === 'right') {\r\n                    x1 = (points[1][0] + points[2][0]) / 2;\r\n                    y1 = (points[1][1] + points[2][1]) / 2;\r\n                    x2 = x1 + labelLineLen;\r\n                    textX = x2 + 5;\r\n                    textAlign = 'left';\r\n                }\r\n                else if (labelPosition === 'top') {\r\n                    x1 = (points[3][0] + points[0][0]) / 2;\r\n                    y1 = (points[3][1] + points[0][1]) / 2;\r\n                    y2 = y1 - labelLineLen;\r\n                    textY = y2 - 5;\r\n                    textAlign = 'center';\r\n                }\r\n                else if (labelPosition === 'bottom') {\r\n                    x1 = (points[1][0] + points[2][0]) / 2;\r\n                    y1 = (points[1][1] + points[2][1]) / 2;\r\n                    y2 = y1 + labelLineLen;\r\n                    textY = y2 + 5;\r\n                    textAlign = 'center';\r\n                }\r\n                else if (labelPosition === 'rightTop') {\r\n                    x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\r\n                    y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\r\n                    if (orient === 'horizontal') {\r\n                        y2 = y1 - labelLineLen;\r\n                        textY = y2 - 5;\r\n                        textAlign = 'center';\r\n                    }\r\n                    else {\r\n                        x2 = x1 + labelLineLen;\r\n                        textX = x2 + 5;\r\n                        textAlign = 'top';\r\n                    }\r\n                }\r\n                else if (labelPosition === 'rightBottom') {\r\n                    x1 = points[2][0];\r\n                    y1 = points[2][1];\r\n                    if (orient === 'horizontal') {\r\n                        y2 = y1 + labelLineLen;\r\n                        textY = y2 + 5;\r\n                        textAlign = 'center';\r\n                    }\r\n                    else {\r\n                        x2 = x1 + labelLineLen;\r\n                        textX = x2 + 5;\r\n                        textAlign = 'bottom';\r\n                    }\r\n                }\r\n                else if (labelPosition === 'leftTop') {\r\n                    x1 = points[0][0];\r\n                    y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\r\n                    if (orient === 'horizontal') {\r\n                        y2 = y1 - labelLineLen;\r\n                        textY = y2 - 5;\r\n                        textAlign = 'center';\r\n                    }\r\n                    else {\r\n                        x2 = x1 - labelLineLen;\r\n                        textX = x2 - 5;\r\n                        textAlign = 'right';\r\n                    }\r\n                }\r\n                else if (labelPosition === 'leftBottom') {\r\n                    x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\r\n                    y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\r\n                    if (orient === 'horizontal') {\r\n                        y2 = y1 + labelLineLen;\r\n                        textY = y2 + 5;\r\n                        textAlign = 'center';\r\n                    }\r\n                    else {\r\n                        x2 = x1 - labelLineLen;\r\n                        textX = x2 - 5;\r\n                        textAlign = 'right';\r\n                    }\r\n                }\r\n                else {\r\n                    x1 = (points[1][0] + points[2][0]) / 2;\r\n                    y1 = (points[1][1] + points[2][1]) / 2;\r\n                    if (orient === 'horizontal') {\r\n                        y2 = y1 + labelLineLen;\r\n                        textY = y2 + 5;\r\n                        textAlign = 'center';\r\n                    }\r\n                    else {\r\n                        x2 = x1 + labelLineLen;\r\n                        textX = x2 + 5;\r\n                        textAlign = 'left';\r\n                    }\r\n                }\r\n                if (orient === 'horizontal') {\r\n                    x2 = x1;\r\n                    textX = x2;\r\n                }\r\n                else {\r\n                    y2 = y1;\r\n                    textY = y2;\r\n                }\r\n                linePoints = [[x1, y1], [x2, y2]];\r\n            }\r\n            layout.label = {\r\n                linePoints: linePoints,\r\n                x: textX,\r\n                y: textY,\r\n                verticalAlign: 'middle',\r\n                textAlign: textAlign,\r\n                inside: isLabelInside\r\n            };\r\n        });\r\n    }\r\n    function funnelLayout(ecModel, api) {\r\n        ecModel.eachSeriesByType('funnel', function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var sort = seriesModel.get('sort');\r\n            var viewRect = getViewRect$3(seriesModel, api);\r\n            var orient = seriesModel.get('orient');\r\n            var viewWidth = viewRect.width;\r\n            var viewHeight = viewRect.height;\r\n            var indices = getSortedIndices(data, sort);\r\n            var x = viewRect.x;\r\n            var y = viewRect.y;\r\n            var sizeExtent = orient === 'horizontal' ? [\r\n                parsePercent$2(seriesModel.get('minSize'), viewHeight),\r\n                parsePercent$2(seriesModel.get('maxSize'), viewHeight)\r\n            ] : [\r\n                parsePercent$2(seriesModel.get('minSize'), viewWidth),\r\n                parsePercent$2(seriesModel.get('maxSize'), viewWidth)\r\n            ];\r\n            var dataExtent = data.getDataExtent(valueDim);\r\n            var min = seriesModel.get('min');\r\n            var max = seriesModel.get('max');\r\n            if (min == null) {\r\n                min = Math.min(dataExtent[0], 0);\r\n            }\r\n            if (max == null) {\r\n                max = dataExtent[1];\r\n            }\r\n            var funnelAlign = seriesModel.get('funnelAlign');\r\n            var gap = seriesModel.get('gap');\r\n            var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\r\n            var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\r\n            var getLinePoints = function (idx, offset) {\r\n                if (orient === 'horizontal') {\r\n                    var val_1 = data.get(valueDim, idx) || 0;\r\n                    var itemHeight = linearMap(val_1, [min, max], sizeExtent, true);\r\n                    var y0 = void 0;\r\n                    switch (funnelAlign) {\r\n                        case 'top':\r\n                            y0 = y;\r\n                            break;\r\n                        case 'center':\r\n                            y0 = y + (viewHeight - itemHeight) / 2;\r\n                            break;\r\n                        case 'bottom':\r\n                            y0 = y + (viewHeight - itemHeight);\r\n                            break;\r\n                    }\r\n                    return [\r\n                        [offset, y0],\r\n                        [offset, y0 + itemHeight]\r\n                    ];\r\n                }\r\n                var val = data.get(valueDim, idx) || 0;\r\n                var itemWidth = linearMap(val, [min, max], sizeExtent, true);\r\n                var x0;\r\n                switch (funnelAlign) {\r\n                    case 'left':\r\n                        x0 = x;\r\n                        break;\r\n                    case 'center':\r\n                        x0 = x + (viewWidth - itemWidth) / 2;\r\n                        break;\r\n                    case 'right':\r\n                        x0 = x + viewWidth - itemWidth;\r\n                        break;\r\n                }\r\n                return [\r\n                    [x0, offset],\r\n                    [x0 + itemWidth, offset]\r\n                ];\r\n            };\r\n            if (sort === 'ascending') {\r\n                itemSize = -itemSize;\r\n                gap = -gap;\r\n                if (orient === 'horizontal') {\r\n                    x += viewWidth;\r\n                }\r\n                else {\r\n                    y += viewHeight;\r\n                }\r\n                indices = indices.reverse();\r\n            }\r\n            for (var i = 0; i < indices.length; i++) {\r\n                var idx = indices[i];\r\n                var nextIdx = indices[i + 1];\r\n                var itemModel = data.getItemModel(idx);\r\n                if (orient === 'horizontal') {\r\n                    var width = itemModel.get(['itemStyle', 'width']);\r\n                    if (width == null) {\r\n                        width = itemSize;\r\n                    }\r\n                    else {\r\n                        width = parsePercent$2(width, viewWidth);\r\n                        if (sort === 'ascending') {\r\n                            width = -width;\r\n                        }\r\n                    }\r\n                    var start = getLinePoints(idx, x);\r\n                    var end = getLinePoints(nextIdx, x + width);\r\n                    x += width + gap;\r\n                    data.setItemLayout(idx, {\r\n                        points: start.concat(end.slice().reverse())\r\n                    });\r\n                }\r\n                else {\r\n                    var height = itemModel.get(['itemStyle', 'height']);\r\n                    if (height == null) {\r\n                        height = itemSize;\r\n                    }\r\n                    else {\r\n                        height = parsePercent$2(height, viewHeight);\r\n                        if (sort === 'ascending') {\r\n                            height = -height;\r\n                        }\r\n                    }\r\n                    var start = getLinePoints(idx, y);\r\n                    var end = getLinePoints(nextIdx, y + height);\r\n                    y += height + gap;\r\n                    data.setItemLayout(idx, {\r\n                        points: start.concat(end.slice().reverse())\r\n                    });\r\n                }\r\n            }\r\n            labelLayout(data);\r\n        });\r\n    }\n\n    registerLayout(funnelLayout);\r\n    registerProcessor(dataFilter('funnel'));\n\n    function parallelPreprocessor(option) {\r\n        createParallelIfNeeded(option);\r\n        mergeAxisOptionFromParallel(option);\r\n    }\r\n    function createParallelIfNeeded(option) {\r\n        if (option.parallel) {\r\n            return;\r\n        }\r\n        var hasParallelSeries = false;\r\n        each(option.series, function (seriesOpt) {\r\n            if (seriesOpt && seriesOpt.type === 'parallel') {\r\n                hasParallelSeries = true;\r\n            }\r\n        });\r\n        if (hasParallelSeries) {\r\n            option.parallel = [{}];\r\n        }\r\n    }\r\n    function mergeAxisOptionFromParallel(option) {\r\n        var axes = normalizeToArray(option.parallelAxis);\r\n        each(axes, function (axisOption) {\r\n            if (!isObject(axisOption)) {\r\n                return;\r\n            }\r\n            var parallelIndex = axisOption.parallelIndex || 0;\r\n            var parallelOption = normalizeToArray(option.parallel)[parallelIndex];\r\n            if (parallelOption && parallelOption.parallelAxisDefault) {\r\n                merge(axisOption, parallelOption.parallelAxisDefault, false);\r\n            }\r\n        });\r\n    }\n\n    var ParallelAxis = (function (_super) {\r\n        __extends(ParallelAxis, _super);\r\n        function ParallelAxis(dim, scale, coordExtent, axisType, axisIndex) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.type = axisType || 'value';\r\n            _this.axisIndex = axisIndex;\r\n            return _this;\r\n        }\r\n        ParallelAxis.prototype.isHorizontal = function () {\r\n            return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\r\n        };\r\n        return ParallelAxis;\r\n    }(Axis));\n\n    function sliderMove(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\r\n        delta = delta || 0;\r\n        var extentSpan = extent[1] - extent[0];\r\n        if (minSpan != null) {\r\n            minSpan = restrict(minSpan, [0, extentSpan]);\r\n        }\r\n        if (maxSpan != null) {\r\n            maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\r\n        }\r\n        if (handleIndex === 'all') {\r\n            var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\r\n            handleSpan = restrict(handleSpan, [0, extentSpan]);\r\n            minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\r\n            handleIndex = 0;\r\n        }\r\n        handleEnds[0] = restrict(handleEnds[0], extent);\r\n        handleEnds[1] = restrict(handleEnds[1], extent);\r\n        var originalDistSign = getSpanSign(handleEnds, handleIndex);\r\n        handleEnds[handleIndex] += delta;\r\n        var extentMinSpan = minSpan || 0;\r\n        var realExtent = extent.slice();\r\n        originalDistSign.sign < 0 ? (realExtent[0] += extentMinSpan) : (realExtent[1] -= extentMinSpan);\r\n        handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent);\r\n        var currDistSign;\r\n        currDistSign = getSpanSign(handleEnds, handleIndex);\r\n        if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\r\n            handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\r\n        }\r\n        currDistSign = getSpanSign(handleEnds, handleIndex);\r\n        if (maxSpan != null && currDistSign.span > maxSpan) {\r\n            handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\r\n        }\r\n        return handleEnds;\r\n    }\r\n    function getSpanSign(handleEnds, handleIndex) {\r\n        var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex];\r\n        return { span: Math.abs(dist), sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1 };\r\n    }\r\n    function restrict(value, extend) {\r\n        return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\r\n    }\n\n    var each$6 = each;\r\n    var mathMin$8 = Math.min;\r\n    var mathMax$8 = Math.max;\r\n    var mathFloor$2 = Math.floor;\r\n    var mathCeil$1 = Math.ceil;\r\n    var round$2 = round$1;\r\n    var PI$8 = Math.PI;\r\n    var Parallel = (function () {\r\n        function Parallel(parallelModel, ecModel, api) {\r\n            this.type = 'parallel';\r\n            this._axesMap = createHashMap();\r\n            this._axesLayout = {};\r\n            this.dimensions = parallelModel.dimensions;\r\n            this._model = parallelModel;\r\n            this._init(parallelModel, ecModel, api);\r\n        }\r\n        Parallel.prototype._init = function (parallelModel, ecModel, api) {\r\n            var dimensions = parallelModel.dimensions;\r\n            var parallelAxisIndex = parallelModel.parallelAxisIndex;\r\n            each$6(dimensions, function (dim, idx) {\r\n                var axisIndex = parallelAxisIndex[idx];\r\n                var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n                var axis = this._axesMap.set(dim, new ParallelAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\r\n                var isCategory = axis.type === 'category';\r\n                axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n                axis.inverse = axisModel.get('inverse');\r\n                axisModel.axis = axis;\r\n                axis.model = axisModel;\r\n                axis.coordinateSystem = axisModel.coordinateSystem = this;\r\n            }, this);\r\n        };\r\n        Parallel.prototype.update = function (ecModel, api) {\r\n            this._updateAxesFromSeries(this._model, ecModel);\r\n        };\r\n        Parallel.prototype.containPoint = function (point) {\r\n            var layoutInfo = this._makeLayoutInfo();\r\n            var axisBase = layoutInfo.axisBase;\r\n            var layoutBase = layoutInfo.layoutBase;\r\n            var pixelDimIndex = layoutInfo.pixelDimIndex;\r\n            var pAxis = point[1 - pixelDimIndex];\r\n            var pLayout = point[pixelDimIndex];\r\n            return pAxis >= axisBase\r\n                && pAxis <= axisBase + layoutInfo.axisLength\r\n                && pLayout >= layoutBase\r\n                && pLayout <= layoutBase + layoutInfo.layoutLength;\r\n        };\r\n        Parallel.prototype.getModel = function () {\r\n            return this._model;\r\n        };\r\n        Parallel.prototype._updateAxesFromSeries = function (parallelModel, ecModel) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!parallelModel.contains(seriesModel, ecModel)) {\r\n                    return;\r\n                }\r\n                var data = seriesModel.getData();\r\n                each$6(this.dimensions, function (dim) {\r\n                    var axis = this._axesMap.get(dim);\r\n                    axis.scale.unionExtentFromData(data, data.mapDimension(dim));\r\n                    niceScaleExtent(axis.scale, axis.model);\r\n                }, this);\r\n            }, this);\r\n        };\r\n        Parallel.prototype.resize = function (parallelModel, api) {\r\n            this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            this._layoutAxes();\r\n        };\r\n        Parallel.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Parallel.prototype._makeLayoutInfo = function () {\r\n            var parallelModel = this._model;\r\n            var rect = this._rect;\r\n            var xy = ['x', 'y'];\r\n            var wh = ['width', 'height'];\r\n            var layout = parallelModel.get('layout');\r\n            var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\r\n            var layoutLength = rect[wh[pixelDimIndex]];\r\n            var layoutExtent = [0, layoutLength];\r\n            var axisCount = this.dimensions.length;\r\n            var axisExpandWidth = restrict$1(parallelModel.get('axisExpandWidth'), layoutExtent);\r\n            var axisExpandCount = restrict$1(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\r\n            var axisExpandable = parallelModel.get('axisExpandable')\r\n                && axisCount > 3\r\n                && axisCount > axisExpandCount\r\n                && axisExpandCount > 1\r\n                && axisExpandWidth > 0\r\n                && layoutLength > 0;\r\n            var axisExpandWindow = parallelModel.get('axisExpandWindow');\r\n            var winSize;\r\n            if (!axisExpandWindow) {\r\n                winSize = restrict$1(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\r\n                var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor$2(axisCount / 2);\r\n                axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\r\n                axisExpandWindow[1] = axisExpandWindow[0] + winSize;\r\n            }\r\n            else {\r\n                winSize = restrict$1(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\r\n                axisExpandWindow[1] = axisExpandWindow[0] + winSize;\r\n            }\r\n            var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount);\r\n            axisCollapseWidth < 3 && (axisCollapseWidth = 0);\r\n            var winInnerIndices = [\r\n                mathFloor$2(round$2(axisExpandWindow[0] / axisExpandWidth, 1)) + 1,\r\n                mathCeil$1(round$2(axisExpandWindow[1] / axisExpandWidth, 1)) - 1\r\n            ];\r\n            var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\r\n            return {\r\n                layout: layout,\r\n                pixelDimIndex: pixelDimIndex,\r\n                layoutBase: rect[xy[pixelDimIndex]],\r\n                layoutLength: layoutLength,\r\n                axisBase: rect[xy[1 - pixelDimIndex]],\r\n                axisLength: rect[wh[1 - pixelDimIndex]],\r\n                axisExpandable: axisExpandable,\r\n                axisExpandWidth: axisExpandWidth,\r\n                axisCollapseWidth: axisCollapseWidth,\r\n                axisExpandWindow: axisExpandWindow,\r\n                axisCount: axisCount,\r\n                winInnerIndices: winInnerIndices,\r\n                axisExpandWindow0Pos: axisExpandWindow0Pos\r\n            };\r\n        };\r\n        Parallel.prototype._layoutAxes = function () {\r\n            var rect = this._rect;\r\n            var axes = this._axesMap;\r\n            var dimensions = this.dimensions;\r\n            var layoutInfo = this._makeLayoutInfo();\r\n            var layout = layoutInfo.layout;\r\n            axes.each(function (axis) {\r\n                var axisExtent = [0, layoutInfo.axisLength];\r\n                var idx = axis.inverse ? 1 : 0;\r\n                axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\r\n            });\r\n            each$6(dimensions, function (dim, idx) {\r\n                var posInfo = (layoutInfo.axisExpandable\r\n                    ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\r\n                var positionTable = {\r\n                    horizontal: {\r\n                        x: posInfo.position,\r\n                        y: layoutInfo.axisLength\r\n                    },\r\n                    vertical: {\r\n                        x: 0,\r\n                        y: posInfo.position\r\n                    }\r\n                };\r\n                var rotationTable = {\r\n                    horizontal: PI$8 / 2,\r\n                    vertical: 0\r\n                };\r\n                var position = [\r\n                    positionTable[layout].x + rect.x,\r\n                    positionTable[layout].y + rect.y\r\n                ];\r\n                var rotation = rotationTable[layout];\r\n                var transform = create$1();\r\n                rotate(transform, transform, rotation);\r\n                translate(transform, transform, position);\r\n                this._axesLayout[dim] = {\r\n                    position: position,\r\n                    rotation: rotation,\r\n                    transform: transform,\r\n                    axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\r\n                    axisLabelShow: posInfo.axisLabelShow,\r\n                    nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\r\n                    tickDirection: 1,\r\n                    labelDirection: 1\r\n                };\r\n            }, this);\r\n        };\r\n        Parallel.prototype.getAxis = function (dim) {\r\n            return this._axesMap.get(dim);\r\n        };\r\n        Parallel.prototype.dataToPoint = function (value, dim) {\r\n            return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\r\n        };\r\n        Parallel.prototype.eachActiveState = function (data, callback, start, end) {\r\n            start == null && (start = 0);\r\n            end == null && (end = data.count());\r\n            var axesMap = this._axesMap;\r\n            var dimensions = this.dimensions;\r\n            var dataDimensions = [];\r\n            var axisModels = [];\r\n            each(dimensions, function (axisDim) {\r\n                dataDimensions.push(data.mapDimension(axisDim));\r\n                axisModels.push(axesMap.get(axisDim).model);\r\n            });\r\n            var hasActiveSet = this.hasAxisBrushed();\r\n            for (var dataIndex = start; dataIndex < end; dataIndex++) {\r\n                var activeState = void 0;\r\n                if (!hasActiveSet) {\r\n                    activeState = 'normal';\r\n                }\r\n                else {\r\n                    activeState = 'active';\r\n                    var values = data.getValues(dataDimensions, dataIndex);\r\n                    for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\r\n                        var state = axisModels[j].getActiveState(values[j]);\r\n                        if (state === 'inactive') {\r\n                            activeState = 'inactive';\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                callback(activeState, dataIndex);\r\n            }\r\n        };\r\n        Parallel.prototype.hasAxisBrushed = function () {\r\n            var dimensions = this.dimensions;\r\n            var axesMap = this._axesMap;\r\n            var hasActiveSet = false;\r\n            for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\r\n                if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\r\n                    hasActiveSet = true;\r\n                }\r\n            }\r\n            return hasActiveSet;\r\n        };\r\n        Parallel.prototype.axisCoordToPoint = function (coord, dim) {\r\n            var axisLayout = this._axesLayout[dim];\r\n            return applyTransform$1([coord, 0], axisLayout.transform);\r\n        };\r\n        Parallel.prototype.getAxisLayout = function (dim) {\r\n            return clone(this._axesLayout[dim]);\r\n        };\r\n        Parallel.prototype.getSlidedAxisExpandWindow = function (point) {\r\n            var layoutInfo = this._makeLayoutInfo();\r\n            var pixelDimIndex = layoutInfo.pixelDimIndex;\r\n            var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\r\n            var winSize = axisExpandWindow[1] - axisExpandWindow[0];\r\n            var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)];\r\n            if (!this.containPoint(point)) {\r\n                return { behavior: 'none', axisExpandWindow: axisExpandWindow };\r\n            }\r\n            var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos;\r\n            var delta;\r\n            var behavior = 'slide';\r\n            var axisCollapseWidth = layoutInfo.axisCollapseWidth;\r\n            var triggerArea = this._model.get('axisExpandSlideTriggerArea');\r\n            var useJump = triggerArea[0] != null;\r\n            if (axisCollapseWidth) {\r\n                if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\r\n                    behavior = 'jump';\r\n                    delta = pointCoord - winSize * triggerArea[2];\r\n                }\r\n                else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\r\n                    behavior = 'jump';\r\n                    delta = pointCoord - winSize * (1 - triggerArea[2]);\r\n                }\r\n                else {\r\n                    (delta = pointCoord - winSize * triggerArea[1]) >= 0\r\n                        && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0\r\n                        && (delta = 0);\r\n                }\r\n                delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\r\n                delta\r\n                    ? sliderMove(delta, axisExpandWindow, extent, 'all')\r\n                    : (behavior = 'none');\r\n            }\r\n            else {\r\n                var winSize2 = axisExpandWindow[1] - axisExpandWindow[0];\r\n                var pos = extent[1] * pointCoord / winSize2;\r\n                axisExpandWindow = [mathMax$8(0, pos - winSize2 / 2)];\r\n                axisExpandWindow[1] = mathMin$8(extent[1], axisExpandWindow[0] + winSize2);\r\n                axisExpandWindow[0] = axisExpandWindow[1] - winSize2;\r\n            }\r\n            return {\r\n                axisExpandWindow: axisExpandWindow,\r\n                behavior: behavior\r\n            };\r\n        };\r\n        return Parallel;\r\n    }());\r\n    function restrict$1(len, extent) {\r\n        return mathMin$8(mathMax$8(len, extent[0]), extent[1]);\r\n    }\r\n    function layoutAxisWithoutExpand(axisIndex, layoutInfo) {\r\n        var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\r\n        return {\r\n            position: step * axisIndex,\r\n            axisNameAvailableWidth: step,\r\n            axisLabelShow: true\r\n        };\r\n    }\r\n    function layoutAxisWithExpand(axisIndex, layoutInfo) {\r\n        var layoutLength = layoutInfo.layoutLength;\r\n        var axisExpandWidth = layoutInfo.axisExpandWidth;\r\n        var axisCount = layoutInfo.axisCount;\r\n        var axisCollapseWidth = layoutInfo.axisCollapseWidth;\r\n        var winInnerIndices = layoutInfo.winInnerIndices;\r\n        var position;\r\n        var axisNameAvailableWidth = axisCollapseWidth;\r\n        var axisLabelShow = false;\r\n        var nameTruncateMaxWidth;\r\n        if (axisIndex < winInnerIndices[0]) {\r\n            position = axisIndex * axisCollapseWidth;\r\n            nameTruncateMaxWidth = axisCollapseWidth;\r\n        }\r\n        else if (axisIndex <= winInnerIndices[1]) {\r\n            position = layoutInfo.axisExpandWindow0Pos\r\n                + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\r\n            axisNameAvailableWidth = axisExpandWidth;\r\n            axisLabelShow = true;\r\n        }\r\n        else {\r\n            position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\r\n            nameTruncateMaxWidth = axisCollapseWidth;\r\n        }\r\n        return {\r\n            position: position,\r\n            axisNameAvailableWidth: axisNameAvailableWidth,\r\n            axisLabelShow: axisLabelShow,\r\n            nameTruncateMaxWidth: nameTruncateMaxWidth\r\n        };\r\n    }\n\n    function create$2(ecModel, api) {\r\n        var coordSysList = [];\r\n        ecModel.eachComponent('parallel', function (parallelModel, idx) {\r\n            var coordSys = new Parallel(parallelModel, ecModel, api);\r\n            coordSys.name = 'parallel_' + idx;\r\n            coordSys.resize(parallelModel, api);\r\n            parallelModel.coordinateSystem = coordSys;\r\n            coordSys.model = parallelModel;\r\n            coordSysList.push(coordSys);\r\n        });\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (seriesModel.get('coordinateSystem') === 'parallel') {\r\n                var parallelModel = seriesModel.getReferringComponents('parallel', SINGLE_REFERRING).models[0];\r\n                seriesModel.coordinateSystem = parallelModel.coordinateSystem;\r\n            }\r\n        });\r\n        return coordSysList;\r\n    }\r\n    CoordinateSystemManager.register('parallel', { create: create$2 });\n\n    var ParallelAxisModel = (function (_super) {\r\n        __extends(ParallelAxisModel, _super);\r\n        function ParallelAxisModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ParallelAxisModel.type;\r\n            _this.activeIntervals = [];\r\n            return _this;\r\n        }\r\n        ParallelAxisModel.prototype.getAreaSelectStyle = function () {\r\n            return makeStyleMapper([\r\n                ['fill', 'color'],\r\n                ['lineWidth', 'borderWidth'],\r\n                ['stroke', 'borderColor'],\r\n                ['width', 'width'],\r\n                ['opacity', 'opacity']\r\n            ])(this.getModel('areaSelectStyle'));\r\n        };\r\n        ParallelAxisModel.prototype.setActiveIntervals = function (intervals) {\r\n            var activeIntervals = this.activeIntervals = clone(intervals);\r\n            if (activeIntervals) {\r\n                for (var i = activeIntervals.length - 1; i >= 0; i--) {\r\n                    asc(activeIntervals[i]);\r\n                }\r\n            }\r\n        };\r\n        ParallelAxisModel.prototype.getActiveState = function (value) {\r\n            var activeIntervals = this.activeIntervals;\r\n            if (!activeIntervals.length) {\r\n                return 'normal';\r\n            }\r\n            if (value == null || isNaN(+value)) {\r\n                return 'inactive';\r\n            }\r\n            if (activeIntervals.length === 1) {\r\n                var interval = activeIntervals[0];\r\n                if (interval[0] <= value && value <= interval[1]) {\r\n                    return 'active';\r\n                }\r\n            }\r\n            else {\r\n                for (var i = 0, len = activeIntervals.length; i < len; i++) {\r\n                    if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\r\n                        return 'active';\r\n                    }\r\n                }\r\n            }\r\n            return 'inactive';\r\n        };\r\n        return ParallelAxisModel;\r\n    }(ComponentModel));\r\n    var defaultOption$1 = {\r\n        type: 'value',\r\n        areaSelectStyle: {\r\n            width: 20,\r\n            borderWidth: 1,\r\n            borderColor: 'rgba(160,197,232)',\r\n            color: 'rgba(160,197,232)',\r\n            opacity: 0.3\r\n        },\r\n        realtime: true,\r\n        z: 10\r\n    };\r\n    ComponentModel.registerClass(ParallelAxisModel);\r\n    mixin(ParallelAxisModel, AxisModelCommonMixin);\r\n    axisModelCreator('parallel', ParallelAxisModel, defaultOption$1);\n\n    var ParallelModel = (function (_super) {\r\n        __extends(ParallelModel, _super);\r\n        function ParallelModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ParallelModel.type;\r\n            return _this;\r\n        }\r\n        ParallelModel.prototype.init = function () {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.mergeOption({});\r\n        };\r\n        ParallelModel.prototype.mergeOption = function (newOption) {\r\n            var thisOption = this.option;\r\n            newOption && merge(thisOption, newOption, true);\r\n            this._initDimensions();\r\n        };\r\n        ParallelModel.prototype.contains = function (model, ecModel) {\r\n            var parallelIndex = model.get('parallelIndex');\r\n            return parallelIndex != null\r\n                && ecModel.getComponent('parallel', parallelIndex) === this;\r\n        };\r\n        ParallelModel.prototype.setAxisExpand = function (opt) {\r\n            each([\r\n                'axisExpandable',\r\n                'axisExpandCenter',\r\n                'axisExpandCount',\r\n                'axisExpandWidth',\r\n                'axisExpandWindow'\r\n            ], function (name) {\r\n                if (opt.hasOwnProperty(name)) {\r\n                    this.option[name] = opt[name];\r\n                }\r\n            }, this);\r\n        };\r\n        ParallelModel.prototype._initDimensions = function () {\r\n            var dimensions = this.dimensions = [];\r\n            var parallelAxisIndex = this.parallelAxisIndex = [];\r\n            var axisModels = filter(this.ecModel.queryComponents({ mainType: 'parallelAxis' }), function (axisModel) {\r\n                return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\r\n            }, this);\r\n            each(axisModels, function (axisModel) {\r\n                dimensions.push('dim' + axisModel.get('dim'));\r\n                parallelAxisIndex.push(axisModel.componentIndex);\r\n            });\r\n        };\r\n        ParallelModel.type = 'parallel';\r\n        ParallelModel.dependencies = ['parallelAxis'];\r\n        ParallelModel.layoutMode = 'box';\r\n        ParallelModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 0,\r\n            left: 80,\r\n            top: 60,\r\n            right: 80,\r\n            bottom: 60,\r\n            layout: 'horizontal',\r\n            axisExpandable: false,\r\n            axisExpandCenter: null,\r\n            axisExpandCount: 0,\r\n            axisExpandWidth: 50,\r\n            axisExpandRate: 17,\r\n            axisExpandDebounce: 50,\r\n            axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\r\n            axisExpandTriggerOn: 'click',\r\n            parallelAxisDefault: null\r\n        };\r\n        return ParallelModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(ParallelModel);\n\n    var actionInfo$1 = {\r\n        type: 'axisAreaSelect',\r\n        event: 'axisAreaSelected'\r\n    };\r\n    registerAction(actionInfo$1, function (payload, ecModel) {\r\n        ecModel.eachComponent({ mainType: 'parallelAxis', query: payload }, function (parallelAxisModel) {\r\n            parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\r\n        });\r\n    });\r\n    registerAction('parallelAxisExpand', function (payload, ecModel) {\r\n        ecModel.eachComponent({ mainType: 'parallel', query: payload }, function (parallelModel) {\r\n            parallelModel.setAxisExpand(payload);\r\n        });\r\n    });\n\n    var BRUSH_PANEL_GLOBAL = true;\r\n    var mathMin$9 = Math.min;\r\n    var mathMax$9 = Math.max;\r\n    var mathPow$2 = Math.pow;\r\n    var COVER_Z = 10000;\r\n    var UNSELECT_THRESHOLD = 6;\r\n    var MIN_RESIZE_LINE_WIDTH = 6;\r\n    var MUTEX_RESOURCE_KEY = 'globalPan';\r\n    var DIRECTION_MAP = {\r\n        w: [0, 0],\r\n        e: [0, 1],\r\n        n: [1, 0],\r\n        s: [1, 1]\r\n    };\r\n    var CURSOR_MAP = {\r\n        w: 'ew',\r\n        e: 'ew',\r\n        n: 'ns',\r\n        s: 'ns',\r\n        ne: 'nesw',\r\n        sw: 'nesw',\r\n        nw: 'nwse',\r\n        se: 'nwse'\r\n    };\r\n    var DEFAULT_BRUSH_OPT = {\r\n        brushStyle: {\r\n            lineWidth: 2,\r\n            stroke: 'rgba(210,219,238,0.3)',\r\n            fill: '#D2DBEE'\r\n        },\r\n        transformable: true,\r\n        brushMode: 'single',\r\n        removeOnClick: false\r\n    };\r\n    var baseUID = 0;\r\n    var BrushController = (function (_super) {\r\n        __extends(BrushController, _super);\r\n        function BrushController(zr) {\r\n            var _this = _super.call(this) || this;\r\n            _this._track = [];\r\n            _this._covers = [];\r\n            _this._handlers = {};\r\n            if (__DEV__) {\r\n                assert(zr);\r\n            }\r\n            _this._zr = zr;\r\n            _this.group = new Group();\r\n            _this._uid = 'brushController_' + baseUID++;\r\n            each(pointerHandlers, function (handler, eventName) {\r\n                this._handlers[eventName] = bind(handler, this);\r\n            }, _this);\r\n            return _this;\r\n        }\r\n        BrushController.prototype.enableBrush = function (brushOption) {\r\n            if (__DEV__) {\r\n                assert(this._mounted);\r\n            }\r\n            this._brushType && this._doDisableBrush();\r\n            brushOption.brushType && this._doEnableBrush(brushOption);\r\n            return this;\r\n        };\r\n        BrushController.prototype._doEnableBrush = function (brushOption) {\r\n            var zr = this._zr;\r\n            if (!this._enableGlobalPan) {\r\n                take(zr, MUTEX_RESOURCE_KEY, this._uid);\r\n            }\r\n            each(this._handlers, function (handler, eventName) {\r\n                zr.on(eventName, handler);\r\n            });\r\n            this._brushType = brushOption.brushType;\r\n            this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true);\r\n        };\r\n        BrushController.prototype._doDisableBrush = function () {\r\n            var zr = this._zr;\r\n            release(zr, MUTEX_RESOURCE_KEY, this._uid);\r\n            each(this._handlers, function (handler, eventName) {\r\n                zr.off(eventName, handler);\r\n            });\r\n            this._brushType = this._brushOption = null;\r\n        };\r\n        BrushController.prototype.setPanels = function (panelOpts) {\r\n            if (panelOpts && panelOpts.length) {\r\n                var panels_1 = this._panels = {};\r\n                each(panelOpts, function (panelOpts) {\r\n                    panels_1[panelOpts.panelId] = clone(panelOpts);\r\n                });\r\n            }\r\n            else {\r\n                this._panels = null;\r\n            }\r\n            return this;\r\n        };\r\n        BrushController.prototype.mount = function (opt) {\r\n            opt = opt || {};\r\n            if (__DEV__) {\r\n                this._mounted = true;\r\n            }\r\n            this._enableGlobalPan = opt.enableGlobalPan;\r\n            var thisGroup = this.group;\r\n            this._zr.add(thisGroup);\r\n            thisGroup.attr({\r\n                x: opt.x || 0,\r\n                y: opt.y || 0,\r\n                rotation: opt.rotation || 0,\r\n                scaleX: opt.scaleX || 1,\r\n                scaleY: opt.scaleY || 1\r\n            });\r\n            this._transform = thisGroup.getLocalTransform();\r\n            return this;\r\n        };\r\n        BrushController.prototype.updateCovers = function (coverConfigList) {\r\n            if (__DEV__) {\r\n                assert(this._mounted);\r\n            }\r\n            coverConfigList = map(coverConfigList, function (coverConfig) {\r\n                return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true);\r\n            });\r\n            var tmpIdPrefix = '\\0-brush-index-';\r\n            var oldCovers = this._covers;\r\n            var newCovers = this._covers = [];\r\n            var controller = this;\r\n            var creatingCover = this._creatingCover;\r\n            (new DataDiffer(oldCovers, coverConfigList, oldGetKey, getKey))\r\n                .add(addOrUpdate)\r\n                .update(addOrUpdate)\r\n                .remove(remove)\r\n                .execute();\r\n            return this;\r\n            function getKey(brushOption, index) {\r\n                return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index)\r\n                    + '-' + brushOption.brushType;\r\n            }\r\n            function oldGetKey(cover, index) {\r\n                return getKey(cover.__brushOption, index);\r\n            }\r\n            function addOrUpdate(newIndex, oldIndex) {\r\n                var newBrushInternal = coverConfigList[newIndex];\r\n                if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\r\n                    newCovers[newIndex] = oldCovers[oldIndex];\r\n                }\r\n                else {\r\n                    var cover = newCovers[newIndex] = oldIndex != null\r\n                        ? (oldCovers[oldIndex].__brushOption = newBrushInternal,\r\n                            oldCovers[oldIndex])\r\n                        : endCreating(controller, createCover(controller, newBrushInternal));\r\n                    updateCoverAfterCreation(controller, cover);\r\n                }\r\n            }\r\n            function remove(oldIndex) {\r\n                if (oldCovers[oldIndex] !== creatingCover) {\r\n                    controller.group.remove(oldCovers[oldIndex]);\r\n                }\r\n            }\r\n        };\r\n        BrushController.prototype.unmount = function () {\r\n            if (__DEV__) {\r\n                if (!this._mounted) {\r\n                    return;\r\n                }\r\n            }\r\n            this.enableBrush(false);\r\n            clearCovers(this);\r\n            this._zr.remove(this.group);\r\n            if (__DEV__) {\r\n                this._mounted = false;\r\n            }\r\n            return this;\r\n        };\r\n        BrushController.prototype.dispose = function () {\r\n            this.unmount();\r\n            this.off();\r\n        };\r\n        return BrushController;\r\n    }(Eventful));\r\n    function createCover(controller, brushOption) {\r\n        var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\r\n        cover.__brushOption = brushOption;\r\n        updateZ(cover, brushOption);\r\n        controller.group.add(cover);\r\n        return cover;\r\n    }\r\n    function endCreating(controller, creatingCover) {\r\n        var coverRenderer = getCoverRenderer(creatingCover);\r\n        if (coverRenderer.endCreating) {\r\n            coverRenderer.endCreating(controller, creatingCover);\r\n            updateZ(creatingCover, creatingCover.__brushOption);\r\n        }\r\n        return creatingCover;\r\n    }\r\n    function updateCoverShape(controller, cover) {\r\n        var brushOption = cover.__brushOption;\r\n        getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\r\n    }\r\n    function updateZ(cover, brushOption) {\r\n        var z = brushOption.z;\r\n        z == null && (z = COVER_Z);\r\n        cover.traverse(function (el) {\r\n            el.z = z;\r\n            el.z2 = z;\r\n        });\r\n    }\r\n    function updateCoverAfterCreation(controller, cover) {\r\n        getCoverRenderer(cover).updateCommon(controller, cover);\r\n        updateCoverShape(controller, cover);\r\n    }\r\n    function getCoverRenderer(cover) {\r\n        return coverRenderers[cover.__brushOption.brushType];\r\n    }\r\n    function getPanelByPoint(controller, e, localCursorPoint) {\r\n        var panels = controller._panels;\r\n        if (!panels) {\r\n            return BRUSH_PANEL_GLOBAL;\r\n        }\r\n        var panel;\r\n        var transform = controller._transform;\r\n        each(panels, function (pn) {\r\n            pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\r\n        });\r\n        return panel;\r\n    }\r\n    function getPanelByCover(controller, cover) {\r\n        var panels = controller._panels;\r\n        if (!panels) {\r\n            return BRUSH_PANEL_GLOBAL;\r\n        }\r\n        var panelId = cover.__brushOption.panelId;\r\n        return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL;\r\n    }\r\n    function clearCovers(controller) {\r\n        var covers = controller._covers;\r\n        var originalLength = covers.length;\r\n        each(covers, function (cover) {\r\n            controller.group.remove(cover);\r\n        }, controller);\r\n        covers.length = 0;\r\n        return !!originalLength;\r\n    }\r\n    function trigger$1(controller, opt) {\r\n        var areas = map(controller._covers, function (cover) {\r\n            var brushOption = cover.__brushOption;\r\n            var range = clone(brushOption.range);\r\n            return {\r\n                brushType: brushOption.brushType,\r\n                panelId: brushOption.panelId,\r\n                range: range\r\n            };\r\n        });\r\n        controller.trigger('brush', {\r\n            areas: areas,\r\n            isEnd: !!opt.isEnd,\r\n            removeOnClick: !!opt.removeOnClick\r\n        });\r\n    }\r\n    function shouldShowCover(controller) {\r\n        var track = controller._track;\r\n        if (!track.length) {\r\n            return false;\r\n        }\r\n        var p2 = track[track.length - 1];\r\n        var p1 = track[0];\r\n        var dx = p2[0] - p1[0];\r\n        var dy = p2[1] - p1[1];\r\n        var dist = mathPow$2(dx * dx + dy * dy, 0.5);\r\n        return dist > UNSELECT_THRESHOLD;\r\n    }\r\n    function getTrackEnds(track) {\r\n        var tail = track.length - 1;\r\n        tail < 0 && (tail = 0);\r\n        return [track[0], track[tail]];\r\n    }\r\n    function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) {\r\n        var cover = new Group();\r\n        cover.add(new Rect({\r\n            name: 'main',\r\n            style: makeStyle(brushOption),\r\n            silent: true,\r\n            draggable: true,\r\n            cursor: 'move',\r\n            drift: curry(driftRect, rectRangeConverter, controller, cover, ['n', 's', 'w', 'e']),\r\n            ondragend: curry(trigger$1, controller, { isEnd: true })\r\n        }));\r\n        each(edgeNameSequences, function (nameSequence) {\r\n            cover.add(new Rect({\r\n                name: nameSequence.join(''),\r\n                style: { opacity: 0 },\r\n                draggable: true,\r\n                silent: true,\r\n                invisible: true,\r\n                drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence),\r\n                ondragend: curry(trigger$1, controller, { isEnd: true })\r\n            }));\r\n        });\r\n        return cover;\r\n    }\r\n    function updateBaseRect(controller, cover, localRange, brushOption) {\r\n        var lineWidth = brushOption.brushStyle.lineWidth || 0;\r\n        var handleSize = mathMax$9(lineWidth, MIN_RESIZE_LINE_WIDTH);\r\n        var x = localRange[0][0];\r\n        var y = localRange[1][0];\r\n        var xa = x - lineWidth / 2;\r\n        var ya = y - lineWidth / 2;\r\n        var x2 = localRange[0][1];\r\n        var y2 = localRange[1][1];\r\n        var x2a = x2 - handleSize + lineWidth / 2;\r\n        var y2a = y2 - handleSize + lineWidth / 2;\r\n        var width = x2 - x;\r\n        var height = y2 - y;\r\n        var widtha = width + lineWidth;\r\n        var heighta = height + lineWidth;\r\n        updateRectShape(controller, cover, 'main', x, y, width, height);\r\n        if (brushOption.transformable) {\r\n            updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\r\n            updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\r\n            updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\r\n            updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\r\n            updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\r\n            updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\r\n            updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\r\n            updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\r\n        }\r\n    }\r\n    function updateCommon(controller, cover) {\r\n        var brushOption = cover.__brushOption;\r\n        var transformable = brushOption.transformable;\r\n        var mainEl = cover.childAt(0);\r\n        mainEl.useStyle(makeStyle(brushOption));\r\n        mainEl.attr({\r\n            silent: !transformable,\r\n            cursor: transformable ? 'move' : 'default'\r\n        });\r\n        each([['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']], function (nameSequence) {\r\n            var el = cover.childOfName(nameSequence.join(''));\r\n            var globalDir = nameSequence.length === 1\r\n                ? getGlobalDirection1(controller, nameSequence[0])\r\n                : getGlobalDirection2(controller, nameSequence);\r\n            el && el.attr({\r\n                silent: !transformable,\r\n                invisible: !transformable,\r\n                cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\r\n            });\r\n        });\r\n    }\r\n    function updateRectShape(controller, cover, name, x, y, w, h) {\r\n        var el = cover.childOfName(name);\r\n        el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\r\n    }\r\n    function makeStyle(brushOption) {\r\n        return defaults({ strokeNoScale: true }, brushOption.brushStyle);\r\n    }\r\n    function formatRectRange(x, y, x2, y2) {\r\n        var min = [mathMin$9(x, x2), mathMin$9(y, y2)];\r\n        var max = [mathMax$9(x, x2), mathMax$9(y, y2)];\r\n        return [\r\n            [min[0], max[0]],\r\n            [min[1], max[1]]\r\n        ];\r\n    }\r\n    function getTransform$1(controller) {\r\n        return getTransform(controller.group);\r\n    }\r\n    function getGlobalDirection1(controller, localDirName) {\r\n        var map = { w: 'left', e: 'right', n: 'top', s: 'bottom' };\r\n        var inverseMap = { left: 'w', right: 'e', top: 'n', bottom: 's' };\r\n        var dir = transformDirection(map[localDirName], getTransform$1(controller));\r\n        return inverseMap[dir];\r\n    }\r\n    function getGlobalDirection2(controller, localDirNameSeq) {\r\n        var globalDir = [\r\n            getGlobalDirection1(controller, localDirNameSeq[0]),\r\n            getGlobalDirection1(controller, localDirNameSeq[1])\r\n        ];\r\n        (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\r\n        return globalDir.join('');\r\n    }\r\n    function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) {\r\n        var brushOption = cover.__brushOption;\r\n        var rectRange = rectRangeConverter.toRectRange(brushOption.range);\r\n        var localDelta = toLocalDelta(controller, dx, dy);\r\n        each(dirNameSequence, function (dirName) {\r\n            var ind = DIRECTION_MAP[dirName];\r\n            rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\r\n        });\r\n        brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\r\n        updateCoverAfterCreation(controller, cover);\r\n        trigger$1(controller, { isEnd: false });\r\n    }\r\n    function driftPolygon(controller, cover, dx, dy) {\r\n        var range = cover.__brushOption.range;\r\n        var localDelta = toLocalDelta(controller, dx, dy);\r\n        each(range, function (point) {\r\n            point[0] += localDelta[0];\r\n            point[1] += localDelta[1];\r\n        });\r\n        updateCoverAfterCreation(controller, cover);\r\n        trigger$1(controller, { isEnd: false });\r\n    }\r\n    function toLocalDelta(controller, dx, dy) {\r\n        var thisGroup = controller.group;\r\n        var localD = thisGroup.transformCoordToLocal(dx, dy);\r\n        var localZero = thisGroup.transformCoordToLocal(0, 0);\r\n        return [localD[0] - localZero[0], localD[1] - localZero[1]];\r\n    }\r\n    function clipByPanel(controller, cover, data) {\r\n        var panel = getPanelByCover(controller, cover);\r\n        return (panel && panel !== BRUSH_PANEL_GLOBAL)\r\n            ? panel.clipPath(data, controller._transform)\r\n            : clone(data);\r\n    }\r\n    function pointsToRect(points) {\r\n        var xmin = mathMin$9(points[0][0], points[1][0]);\r\n        var ymin = mathMin$9(points[0][1], points[1][1]);\r\n        var xmax = mathMax$9(points[0][0], points[1][0]);\r\n        var ymax = mathMax$9(points[0][1], points[1][1]);\r\n        return {\r\n            x: xmin,\r\n            y: ymin,\r\n            width: xmax - xmin,\r\n            height: ymax - ymin\r\n        };\r\n    }\r\n    function resetCursor(controller, e, localCursorPoint) {\r\n        if (!controller._brushType\r\n            || isOutsideZrArea(controller, e.offsetX, e.offsetY)) {\r\n            return;\r\n        }\r\n        var zr = controller._zr;\r\n        var covers = controller._covers;\r\n        var currPanel = getPanelByPoint(controller, e, localCursorPoint);\r\n        if (!controller._dragging) {\r\n            for (var i = 0; i < covers.length; i++) {\r\n                var brushOption = covers[i].__brushOption;\r\n                if (currPanel\r\n                    && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId)\r\n                    && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        currPanel && zr.setCursorStyle('crosshair');\r\n    }\r\n    function preventDefault(e) {\r\n        var rawE = e.event;\r\n        rawE.preventDefault && rawE.preventDefault();\r\n    }\r\n    function mainShapeContain(cover, x, y) {\r\n        return cover.childOfName('main').contain(x, y);\r\n    }\r\n    function updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\r\n        var creatingCover = controller._creatingCover;\r\n        var panel = controller._creatingPanel;\r\n        var thisBrushOption = controller._brushOption;\r\n        var eventParams;\r\n        controller._track.push(localCursorPoint.slice());\r\n        if (shouldShowCover(controller) || creatingCover) {\r\n            if (panel && !creatingCover) {\r\n                thisBrushOption.brushMode === 'single' && clearCovers(controller);\r\n                var brushOption = clone(thisBrushOption);\r\n                brushOption.brushType = determineBrushType(brushOption.brushType, panel);\r\n                brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId;\r\n                creatingCover = controller._creatingCover = createCover(controller, brushOption);\r\n                controller._covers.push(creatingCover);\r\n            }\r\n            if (creatingCover) {\r\n                var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\r\n                var coverBrushOption = creatingCover.__brushOption;\r\n                coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\r\n                if (isEnd) {\r\n                    endCreating(controller, creatingCover);\r\n                    coverRenderer.updateCommon(controller, creatingCover);\r\n                }\r\n                updateCoverShape(controller, creatingCover);\r\n                eventParams = { isEnd: isEnd };\r\n            }\r\n        }\r\n        else if (isEnd\r\n            && thisBrushOption.brushMode === 'single'\r\n            && thisBrushOption.removeOnClick) {\r\n            if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\r\n                eventParams = { isEnd: isEnd, removeOnClick: true };\r\n            }\r\n        }\r\n        return eventParams;\r\n    }\r\n    function determineBrushType(brushType, panel) {\r\n        if (brushType === 'auto') {\r\n            if (__DEV__) {\r\n                assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is \"atuo\"');\r\n            }\r\n            return panel.defaultBrushType;\r\n        }\r\n        return brushType;\r\n    }\r\n    var pointerHandlers = {\r\n        mousedown: function (e) {\r\n            if (this._dragging) {\r\n                handleDragEnd(this, e);\r\n            }\r\n            else if (!e.target || !e.target.draggable) {\r\n                preventDefault(e);\r\n                var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\r\n                this._creatingCover = null;\r\n                var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\r\n                if (panel) {\r\n                    this._dragging = true;\r\n                    this._track = [localCursorPoint.slice()];\r\n                }\r\n            }\r\n        },\r\n        mousemove: function (e) {\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            var localCursorPoint = this.group.transformCoordToLocal(x, y);\r\n            resetCursor(this, e, localCursorPoint);\r\n            if (this._dragging) {\r\n                preventDefault(e);\r\n                var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\r\n                eventParams && trigger$1(this, eventParams);\r\n            }\r\n        },\r\n        mouseup: function (e) {\r\n            handleDragEnd(this, e);\r\n        }\r\n    };\r\n    function handleDragEnd(controller, e) {\r\n        if (controller._dragging) {\r\n            preventDefault(e);\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            var localCursorPoint = controller.group.transformCoordToLocal(x, y);\r\n            var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\r\n            controller._dragging = false;\r\n            controller._track = [];\r\n            controller._creatingCover = null;\r\n            eventParams && trigger$1(controller, eventParams);\r\n        }\r\n    }\r\n    function isOutsideZrArea(controller, x, y) {\r\n        var zr = controller._zr;\r\n        return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\r\n    }\r\n    var coverRenderers = {\r\n        lineX: getLineRenderer(0),\r\n        lineY: getLineRenderer(1),\r\n        rect: {\r\n            createCover: function (controller, brushOption) {\r\n                function returnInput(range) {\r\n                    return range;\r\n                }\r\n                return createBaseRectCover({\r\n                    toRectRange: returnInput,\r\n                    fromRectRange: returnInput\r\n                }, controller, brushOption, [['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']]);\r\n            },\r\n            getCreatingRange: function (localTrack) {\r\n                var ends = getTrackEnds(localTrack);\r\n                return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\r\n            },\r\n            updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n                updateBaseRect(controller, cover, localRange, brushOption);\r\n            },\r\n            updateCommon: updateCommon,\r\n            contain: mainShapeContain\r\n        },\r\n        polygon: {\r\n            createCover: function (controller, brushOption) {\r\n                var cover = new Group();\r\n                cover.add(new Polyline({\r\n                    name: 'main',\r\n                    style: makeStyle(brushOption),\r\n                    silent: true\r\n                }));\r\n                return cover;\r\n            },\r\n            getCreatingRange: function (localTrack) {\r\n                return localTrack;\r\n            },\r\n            endCreating: function (controller, cover) {\r\n                cover.remove(cover.childAt(0));\r\n                cover.add(new Polygon({\r\n                    name: 'main',\r\n                    draggable: true,\r\n                    drift: curry(driftPolygon, controller, cover),\r\n                    ondragend: curry(trigger$1, controller, { isEnd: true })\r\n                }));\r\n            },\r\n            updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n                cover.childAt(0).setShape({\r\n                    points: clipByPanel(controller, cover, localRange)\r\n                });\r\n            },\r\n            updateCommon: updateCommon,\r\n            contain: mainShapeContain\r\n        }\r\n    };\r\n    function getLineRenderer(xyIndex) {\r\n        return {\r\n            createCover: function (controller, brushOption) {\r\n                return createBaseRectCover({\r\n                    toRectRange: function (range) {\r\n                        var rectRange = [range, [0, 100]];\r\n                        xyIndex && rectRange.reverse();\r\n                        return rectRange;\r\n                    },\r\n                    fromRectRange: function (rectRange) {\r\n                        return rectRange[xyIndex];\r\n                    }\r\n                }, controller, brushOption, [[['w'], ['e']], [['n'], ['s']]][xyIndex]);\r\n            },\r\n            getCreatingRange: function (localTrack) {\r\n                var ends = getTrackEnds(localTrack);\r\n                var min = mathMin$9(ends[0][xyIndex], ends[1][xyIndex]);\r\n                var max = mathMax$9(ends[0][xyIndex], ends[1][xyIndex]);\r\n                return [min, max];\r\n            },\r\n            updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n                var otherExtent;\r\n                var panel = getPanelByCover(controller, cover);\r\n                if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {\r\n                    otherExtent = panel.getLinearBrushOtherExtent(xyIndex);\r\n                }\r\n                else {\r\n                    var zr = controller._zr;\r\n                    otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\r\n                }\r\n                var rectRange = [localRange, otherExtent];\r\n                xyIndex && rectRange.reverse();\r\n                updateBaseRect(controller, cover, rectRange, brushOption);\r\n            },\r\n            updateCommon: updateCommon,\r\n            contain: mainShapeContain\r\n        };\r\n    }\n\n    function makeRectPanelClipPath(rect) {\r\n        rect = normalizeRect(rect);\r\n        return function (localPoints) {\r\n            return clipPointsByRect(localPoints, rect);\r\n        };\r\n    }\r\n    function makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\r\n        rect = normalizeRect(rect);\r\n        return function (xyIndex) {\r\n            var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\r\n            var brushWidth = idx ? rect.width : rect.height;\r\n            var base = idx ? rect.x : rect.y;\r\n            return [base, base + (brushWidth || 0)];\r\n        };\r\n    }\r\n    function makeRectIsTargetByCursor(rect, api, targetModel) {\r\n        var boundingRect = normalizeRect(rect);\r\n        return function (e, localCursorPoint) {\r\n            return boundingRect.contain(localCursorPoint[0], localCursorPoint[1])\r\n                && !onIrrelevantElement(e, api, targetModel);\r\n        };\r\n    }\r\n    function normalizeRect(rect) {\r\n        return BoundingRect.create(rect);\r\n    }\n\n    var elementList = ['axisLine', 'axisTickLabel', 'axisName'];\r\n    var ParallelAxisView = (function (_super) {\r\n        __extends(ParallelAxisView, _super);\r\n        function ParallelAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ParallelAxisView.type;\r\n            return _this;\r\n        }\r\n        ParallelAxisView.prototype.init = function (ecModel, api) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            (this._brushController = new BrushController(api.getZr()))\r\n                .on('brush', bind(this._onBrush, this));\r\n        };\r\n        ParallelAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\r\n                return;\r\n            }\r\n            this.axisModel = axisModel;\r\n            this.api = api;\r\n            this.group.removeAll();\r\n            var oldAxisGroup = this._axisGroup;\r\n            this._axisGroup = new Group();\r\n            this.group.add(this._axisGroup);\r\n            if (!axisModel.get('show')) {\r\n                return;\r\n            }\r\n            var coordSysModel = getCoordSysModel(axisModel, ecModel);\r\n            var coordSys = coordSysModel.coordinateSystem;\r\n            var areaSelectStyle = axisModel.getAreaSelectStyle();\r\n            var areaWidth = areaSelectStyle.width;\r\n            var dim = axisModel.axis.dim;\r\n            var axisLayout = coordSys.getAxisLayout(dim);\r\n            var builderOpt = extend({ strokeContainThreshold: areaWidth }, axisLayout);\r\n            var axisBuilder = new AxisBuilder(axisModel, builderOpt);\r\n            each(elementList, axisBuilder.add, axisBuilder);\r\n            this._axisGroup.add(axisBuilder.getGroup());\r\n            this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\r\n            groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n        };\r\n        ParallelAxisView.prototype._refreshBrushController = function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\r\n            var extent = axisModel.axis.getExtent();\r\n            var extentLen = extent[1] - extent[0];\r\n            var extra = Math.min(30, Math.abs(extentLen) * 0.1);\r\n            var rect = BoundingRect.create({\r\n                x: extent[0],\r\n                y: -areaWidth / 2,\r\n                width: extentLen,\r\n                height: areaWidth\r\n            });\r\n            rect.x -= extra;\r\n            rect.width += 2 * extra;\r\n            this._brushController\r\n                .mount({\r\n                enableGlobalPan: true,\r\n                rotation: builderOpt.rotation,\r\n                x: builderOpt.position[0],\r\n                y: builderOpt.position[1]\r\n            })\r\n                .setPanels([{\r\n                    panelId: 'pl',\r\n                    clipPath: makeRectPanelClipPath(rect),\r\n                    isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel),\r\n                    getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0)\r\n                }])\r\n                .enableBrush({\r\n                brushType: 'lineX',\r\n                brushStyle: areaSelectStyle,\r\n                removeOnClick: true\r\n            })\r\n                .updateCovers(getCoverInfoList(axisModel));\r\n        };\r\n        ParallelAxisView.prototype._onBrush = function (eventParam) {\r\n            var coverInfoList = eventParam.areas;\r\n            var axisModel = this.axisModel;\r\n            var axis = axisModel.axis;\r\n            var intervals = map(coverInfoList, function (coverInfo) {\r\n                return [\r\n                    axis.coordToData(coverInfo.range[0], true),\r\n                    axis.coordToData(coverInfo.range[1], true)\r\n                ];\r\n            });\r\n            if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) {\r\n                this.api.dispatchAction({\r\n                    type: 'axisAreaSelect',\r\n                    parallelAxisId: axisModel.id,\r\n                    intervals: intervals\r\n                });\r\n            }\r\n        };\r\n        ParallelAxisView.prototype.dispose = function () {\r\n            this._brushController.dispose();\r\n        };\r\n        ParallelAxisView.type = 'parallelAxis';\r\n        return ParallelAxisView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(ParallelAxisView);\r\n    function fromAxisAreaSelect(axisModel, ecModel, payload) {\r\n        return payload\r\n            && payload.type === 'axisAreaSelect'\r\n            && ecModel.findComponents({ mainType: 'parallelAxis', query: payload })[0] === axisModel;\r\n    }\r\n    function getCoverInfoList(axisModel) {\r\n        var axis = axisModel.axis;\r\n        return map(axisModel.activeIntervals, function (interval) {\r\n            return {\r\n                brushType: 'lineX',\r\n                panelId: 'pl',\r\n                range: [\r\n                    axis.dataToCoord(interval[0], true),\r\n                    axis.dataToCoord(interval[1], true)\r\n                ]\r\n            };\r\n        });\r\n    }\r\n    function getCoordSysModel(axisModel, ecModel) {\r\n        return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\r\n    }\n\n    var CLICK_THRESHOLD = 5;\r\n    var ParallelView = (function (_super) {\r\n        __extends(ParallelView, _super);\r\n        function ParallelView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ParallelView.type;\r\n            return _this;\r\n        }\r\n        ParallelView.prototype.render = function (parallelModel, ecModel, api) {\r\n            this._model = parallelModel;\r\n            this._api = api;\r\n            if (!this._handlers) {\r\n                this._handlers = {};\r\n                each(handlers, function (handler, eventName) {\r\n                    api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this));\r\n                }, this);\r\n            }\r\n            createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\r\n        };\r\n        ParallelView.prototype.dispose = function (ecModel, api) {\r\n            each(this._handlers, function (handler, eventName) {\r\n                api.getZr().off(eventName, handler);\r\n            });\r\n            this._handlers = null;\r\n        };\r\n        ParallelView.prototype._throttledDispatchExpand = function (opt) {\r\n            this._dispatchExpand(opt);\r\n        };\r\n        ParallelView.prototype._dispatchExpand = function (opt) {\r\n            opt && this._api.dispatchAction(extend({ type: 'parallelAxisExpand' }, opt));\r\n        };\r\n        ParallelView.type = 'parallel';\r\n        return ParallelView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(ParallelView);\r\n    var handlers = {\r\n        mousedown: function (e) {\r\n            if (checkTrigger(this, 'click')) {\r\n                this._mouseDownPoint = [e.offsetX, e.offsetY];\r\n            }\r\n        },\r\n        mouseup: function (e) {\r\n            var mouseDownPoint = this._mouseDownPoint;\r\n            if (checkTrigger(this, 'click') && mouseDownPoint) {\r\n                var point = [e.offsetX, e.offsetY];\r\n                var dist = Math.pow(mouseDownPoint[0] - point[0], 2)\r\n                    + Math.pow(mouseDownPoint[1] - point[1], 2);\r\n                if (dist > CLICK_THRESHOLD) {\r\n                    return;\r\n                }\r\n                var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\r\n                result.behavior !== 'none' && this._dispatchExpand({\r\n                    axisExpandWindow: result.axisExpandWindow\r\n                });\r\n            }\r\n            this._mouseDownPoint = null;\r\n        },\r\n        mousemove: function (e) {\r\n            if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\r\n                return;\r\n            }\r\n            var model = this._model;\r\n            var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\r\n            var behavior = result.behavior;\r\n            behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\r\n            this._throttledDispatchExpand(behavior === 'none'\r\n                ? null\r\n                : {\r\n                    axisExpandWindow: result.axisExpandWindow,\r\n                    animation: behavior === 'jump' ? null : {\r\n                        duration: 0\r\n                    }\r\n                });\r\n        }\r\n    };\r\n    function checkTrigger(view, triggerOn) {\r\n        var model = view._model;\r\n        return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\r\n    }\r\n    registerPreprocessor(parallelPreprocessor);\n\n    var ParallelSeriesModel = (function (_super) {\r\n        __extends(ParallelSeriesModel, _super);\r\n        function ParallelSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ParallelSeriesModel.type;\r\n            _this.visualStyleAccessPath = 'lineStyle';\r\n            _this.visualDrawType = 'stroke';\r\n            return _this;\r\n        }\r\n        ParallelSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: bind(makeDefaultEncode, null, this)\r\n            });\r\n        };\r\n        ParallelSeriesModel.prototype.getRawIndicesByActiveState = function (activeState) {\r\n            var coordSys = this.coordinateSystem;\r\n            var data = this.getData();\r\n            var indices = [];\r\n            coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\r\n                if (activeState === theActiveState) {\r\n                    indices.push(data.getRawIndex(dataIndex));\r\n                }\r\n            });\r\n            return indices;\r\n        };\r\n        ParallelSeriesModel.type = 'series.parallel';\r\n        ParallelSeriesModel.dependencies = ['parallel'];\r\n        ParallelSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'parallel',\r\n            parallelIndex: 0,\r\n            label: {\r\n                show: false\r\n            },\r\n            inactiveOpacity: 0.05,\r\n            activeOpacity: 1,\r\n            lineStyle: {\r\n                width: 1,\r\n                opacity: 0.45,\r\n                type: 'solid'\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: false\r\n                }\r\n            },\r\n            progressive: 500,\r\n            smooth: false,\r\n            animationEasing: 'linear'\r\n        };\r\n        return ParallelSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(ParallelSeriesModel);\r\n    function makeDefaultEncode(seriesModel) {\r\n        var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n        if (!parallelModel) {\r\n            return;\r\n        }\r\n        var encodeDefine = {};\r\n        each(parallelModel.dimensions, function (axisDim) {\r\n            var dataDimIndex = convertDimNameToNumber(axisDim);\r\n            encodeDefine[axisDim] = dataDimIndex;\r\n        });\r\n        return encodeDefine;\r\n    }\r\n    function convertDimNameToNumber(dimName) {\r\n        return +dimName.replace('dim', '');\r\n    }\n\n    var DEFAULT_SMOOTH = 0.3;\r\n    var ParallelView$1 = (function (_super) {\r\n        __extends(ParallelView, _super);\r\n        function ParallelView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ParallelView.type;\r\n            _this._dataGroup = new Group();\r\n            _this._initialized = false;\r\n            return _this;\r\n        }\r\n        ParallelView.prototype.init = function () {\r\n            this.group.add(this._dataGroup);\r\n        };\r\n        ParallelView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var dataGroup = this._dataGroup;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var dimensions = coordSys.dimensions;\r\n            var seriesScope = makeSeriesScope$2(seriesModel);\r\n            data.diff(oldData)\r\n                .add(add)\r\n                .update(update)\r\n                .remove(remove)\r\n                .execute();\r\n            function add(newDataIndex) {\r\n                var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\r\n                updateElCommon(line, data, newDataIndex, seriesScope);\r\n            }\r\n            function update(newDataIndex, oldDataIndex) {\r\n                var line = oldData.getItemGraphicEl(oldDataIndex);\r\n                var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\r\n                data.setItemGraphicEl(newDataIndex, line);\r\n                updateProps(line, { shape: { points: points } }, seriesModel, newDataIndex);\r\n                updateElCommon(line, data, newDataIndex, seriesScope);\r\n            }\r\n            function remove(oldDataIndex) {\r\n                var line = oldData.getItemGraphicEl(oldDataIndex);\r\n                dataGroup.remove(line);\r\n            }\r\n            if (!this._initialized) {\r\n                this._initialized = true;\r\n                var clipPath = createGridClipShape(coordSys, seriesModel, function () {\r\n                    setTimeout(function () {\r\n                        dataGroup.removeClipPath();\r\n                    });\r\n                });\r\n                dataGroup.setClipPath(clipPath);\r\n            }\r\n            this._data = data;\r\n        };\r\n        ParallelView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n            this._initialized = true;\r\n            this._data = null;\r\n            this._dataGroup.removeAll();\r\n        };\r\n        ParallelView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var dimensions = coordSys.dimensions;\r\n            var seriesScope = makeSeriesScope$2(seriesModel);\r\n            for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\r\n                var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\r\n                line.incremental = true;\r\n                updateElCommon(line, data, dataIndex, seriesScope);\r\n            }\r\n        };\r\n        ParallelView.prototype.remove = function () {\r\n            this._dataGroup && this._dataGroup.removeAll();\r\n            this._data = null;\r\n        };\r\n        ParallelView.type = 'parallel';\r\n        return ParallelView;\r\n    }(ChartView));\r\n    function createGridClipShape(coordSys, seriesModel, cb) {\r\n        var parallelModel = coordSys.model;\r\n        var rect = coordSys.getRect();\r\n        var rectEl = new Rect({\r\n            shape: {\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            }\r\n        });\r\n        var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\r\n        rectEl.setShape(dim, 0);\r\n        initProps(rectEl, {\r\n            shape: {\r\n                width: rect.width,\r\n                height: rect.height\r\n            }\r\n        }, seriesModel, cb);\r\n        return rectEl;\r\n    }\r\n    function createLinePoints(data, dataIndex, dimensions, coordSys) {\r\n        var points = [];\r\n        for (var i = 0; i < dimensions.length; i++) {\r\n            var dimName = dimensions[i];\r\n            var value = data.get(data.mapDimension(dimName), dataIndex);\r\n            if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\r\n                points.push(coordSys.dataToPoint(value, dimName));\r\n            }\r\n        }\r\n        return points;\r\n    }\r\n    function addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\r\n        var points = createLinePoints(data, dataIndex, dimensions, coordSys);\r\n        var line = new Polyline({\r\n            shape: { points: points },\r\n            z2: 10\r\n        });\r\n        dataGroup.add(line);\r\n        data.setItemGraphicEl(dataIndex, line);\r\n        return line;\r\n    }\r\n    function makeSeriesScope$2(seriesModel) {\r\n        var smooth = seriesModel.get('smooth', true);\r\n        smooth === true && (smooth = DEFAULT_SMOOTH);\r\n        smooth = numericToNumber(smooth);\r\n        eqNaN(smooth) && (smooth = 0);\r\n        return { smooth: smooth };\r\n    }\r\n    function updateElCommon(el, data, dataIndex, seriesScope) {\r\n        el.useStyle(data.getItemVisual(dataIndex, 'style'));\r\n        el.style.fill = null;\r\n        el.setShape('smooth', seriesScope.smooth);\r\n        var itemModel = data.getItemModel(dataIndex);\r\n        var emphasisModel = itemModel.getModel('emphasis');\r\n        setStatesStylesFromModel(el, itemModel, 'lineStyle');\r\n        enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n    }\r\n    function isEmptyValue(val, axisType) {\r\n        return axisType === 'category'\r\n            ? val == null\r\n            : (val == null || isNaN(val));\r\n    }\r\n    ChartView.registerClass(ParallelView$1);\n\n    var opacityAccessPath$1 = ['lineStyle', 'opacity'];\r\n    var parallelVisual = {\r\n        seriesType: 'parallel',\r\n        reset: function (seriesModel, ecModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var opacityMap = {\r\n                normal: seriesModel.get(['lineStyle', 'opacity']),\r\n                active: seriesModel.get('activeOpacity'),\r\n                inactive: seriesModel.get('inactiveOpacity')\r\n            };\r\n            return {\r\n                progress: function (params, data) {\r\n                    coordSys.eachActiveState(data, function (activeState, dataIndex) {\r\n                        var opacity = opacityMap[activeState];\r\n                        if (activeState === 'normal' && data.hasItemOption) {\r\n                            var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath$1, true);\r\n                            itemOpacity != null && (opacity = itemOpacity);\r\n                        }\r\n                        var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style');\r\n                        existsStyle.opacity = opacity;\r\n                    }, params.start, params.end);\r\n                }\r\n            };\r\n        }\r\n    };\n\n    registerVisual(PRIORITY.VISUAL.BRUSH, parallelVisual);\n\n    var SankeySeriesModel = (function (_super) {\r\n        __extends(SankeySeriesModel, _super);\r\n        function SankeySeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SankeySeriesModel.type;\r\n            return _this;\r\n        }\r\n        SankeySeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            var links = option.edges || option.links;\r\n            var nodes = option.data || option.nodes;\r\n            var levels = option.levels;\r\n            this.levelModels = [];\r\n            var levelModels = this.levelModels;\r\n            for (var i = 0; i < levels.length; i++) {\r\n                if (levels[i].depth != null && levels[i].depth >= 0) {\r\n                    levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\r\n                }\r\n                else {\r\n                    if (__DEV__) {\r\n                        throw new Error('levels[i].depth is mandatory and should be natural number');\r\n                    }\r\n                }\r\n            }\r\n            if (nodes && links) {\r\n                var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\r\n                return graph.data;\r\n            }\r\n            function beforeLink(nodeData, edgeData) {\r\n                nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n                    var seriesModel = model.parentModel;\r\n                    var layout = seriesModel.getData().getItemLayout(idx);\r\n                    if (layout) {\r\n                        var nodeDepth = layout.depth;\r\n                        var levelModel = seriesModel.levelModels[nodeDepth];\r\n                        if (levelModel) {\r\n                            model.parentModel = levelModel;\r\n                        }\r\n                    }\r\n                    return model;\r\n                });\r\n                edgeData.wrapMethod('getItemModel', function (model, idx) {\r\n                    var seriesModel = model.parentModel;\r\n                    var edge = seriesModel.getGraph().getEdgeByIndex(idx);\r\n                    var layout = edge.node1.getLayout();\r\n                    if (layout) {\r\n                        var depth = layout.depth;\r\n                        var levelModel = seriesModel.levelModels[depth];\r\n                        if (levelModel) {\r\n                            model.parentModel = levelModel;\r\n                        }\r\n                    }\r\n                    return model;\r\n                });\r\n            }\r\n        };\r\n        SankeySeriesModel.prototype.setNodePosition = function (dataIndex, localPosition) {\r\n            var dataItem = this.option.data[dataIndex];\r\n            dataItem.localX = localPosition[0];\r\n            dataItem.localY = localPosition[1];\r\n        };\r\n        SankeySeriesModel.prototype.getGraph = function () {\r\n            return this.getData().graph;\r\n        };\r\n        SankeySeriesModel.prototype.getEdgeData = function () {\r\n            return this.getGraph().edgeData;\r\n        };\r\n        SankeySeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            function noValue(val) {\r\n                return isNaN(val) || val == null;\r\n            }\r\n            if (dataType === 'edge') {\r\n                var params = this.getDataParams(dataIndex, dataType);\r\n                var rawDataOpt = params.data;\r\n                var edgeValue = params.value;\r\n                var edgeName = rawDataOpt.source + ' -- ' + rawDataOpt.target;\r\n                return createTooltipMarkup('nameValue', {\r\n                    name: edgeName,\r\n                    value: edgeValue,\r\n                    noValue: noValue(edgeValue)\r\n                });\r\n            }\r\n            else {\r\n                var node = this.getGraph().getNodeByIndex(dataIndex);\r\n                var value = node.getLayout().value;\r\n                var name_1 = this.getDataParams(dataIndex, dataType).data.name;\r\n                return createTooltipMarkup('nameValue', {\r\n                    name: name_1,\r\n                    value: value,\r\n                    noValue: noValue(value)\r\n                });\r\n            }\r\n        };\r\n        SankeySeriesModel.prototype.optionUpdated = function () {\r\n            var option = this.option;\r\n            if (option.focusNodeAdjacency === true) {\r\n                option.focusNodeAdjacency = 'allEdges';\r\n            }\r\n        };\r\n        SankeySeriesModel.prototype.getDataParams = function (dataIndex, dataType) {\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);\r\n            if (params.value == null && dataType === 'node') {\r\n                var node = this.getGraph().getNodeByIndex(dataIndex);\r\n                var nodeValue = node.getLayout().value;\r\n                params.value = nodeValue;\r\n            }\r\n            return params;\r\n        };\r\n        SankeySeriesModel.type = 'series.sankey';\r\n        SankeySeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'view',\r\n            left: '5%',\r\n            top: '5%',\r\n            right: '20%',\r\n            bottom: '5%',\r\n            orient: 'horizontal',\r\n            nodeWidth: 20,\r\n            nodeGap: 8,\r\n            draggable: true,\r\n            focusNodeAdjacency: false,\r\n            layoutIterations: 32,\r\n            label: {\r\n                show: true,\r\n                position: 'right',\r\n                fontSize: 12\r\n            },\r\n            levels: [],\r\n            nodeAlign: 'justify',\r\n            lineStyle: {\r\n                color: '#314656',\r\n                opacity: 0.2,\r\n                curveness: 0.5\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                },\r\n                lineStyle: {\r\n                    opacity: 0.5\r\n                }\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            },\r\n            animationEasing: 'linear',\r\n            animationDuration: 1000\r\n        };\r\n        return SankeySeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(SankeySeriesModel);\n\n    var SankeyPathShape = (function () {\r\n        function SankeyPathShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.cpx1 = 0;\r\n            this.cpy1 = 0;\r\n            this.cpx2 = 0;\r\n            this.cpy2 = 0;\r\n            this.extent = 0;\r\n        }\r\n        return SankeyPathShape;\r\n    }());\r\n    var SankeyPath = (function (_super) {\r\n        __extends(SankeyPath, _super);\r\n        function SankeyPath(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        SankeyPath.prototype.getDefaultShape = function () {\r\n            return new SankeyPathShape();\r\n        };\r\n        SankeyPath.prototype.buildPath = function (ctx, shape) {\r\n            var extent = shape.extent;\r\n            ctx.moveTo(shape.x1, shape.y1);\r\n            ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);\r\n            if (shape.orient === 'vertical') {\r\n                ctx.lineTo(shape.x2 + extent, shape.y2);\r\n                ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);\r\n            }\r\n            else {\r\n                ctx.lineTo(shape.x2, shape.y2 + extent);\r\n                ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        SankeyPath.prototype.highlight = function () {\r\n            enterEmphasis(this);\r\n        };\r\n        SankeyPath.prototype.downplay = function () {\r\n            leaveEmphasis(this);\r\n        };\r\n        return SankeyPath;\r\n    }(Path));\r\n    var SankeyView = (function (_super) {\r\n        __extends(SankeyView, _super);\r\n        function SankeyView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SankeyView.type;\r\n            _this._focusAdjacencyDisabled = false;\r\n            return _this;\r\n        }\r\n        SankeyView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var sankeyView = this;\r\n            var graph = seriesModel.getGraph();\r\n            var group = this.group;\r\n            var layoutInfo = seriesModel.layoutInfo;\r\n            var width = layoutInfo.width;\r\n            var height = layoutInfo.height;\r\n            var nodeData = seriesModel.getData();\r\n            var edgeData = seriesModel.getData('edge');\r\n            var orient = seriesModel.get('orient');\r\n            this._model = seriesModel;\r\n            group.removeAll();\r\n            group.x = layoutInfo.x;\r\n            group.y = layoutInfo.y;\r\n            graph.eachEdge(function (edge) {\r\n                var curve = new SankeyPath();\r\n                var ecData = getECData(curve);\r\n                ecData.dataIndex = edge.dataIndex;\r\n                ecData.seriesIndex = seriesModel.seriesIndex;\r\n                ecData.dataType = 'edge';\r\n                var edgeModel = edge.getModel();\r\n                var lineStyleModel = edgeModel.getModel('lineStyle');\r\n                var curvature = lineStyleModel.get('curveness');\r\n                var n1Layout = edge.node1.getLayout();\r\n                var node1Model = edge.node1.getModel();\r\n                var dragX1 = node1Model.get('localX');\r\n                var dragY1 = node1Model.get('localY');\r\n                var n2Layout = edge.node2.getLayout();\r\n                var node2Model = edge.node2.getModel();\r\n                var dragX2 = node2Model.get('localX');\r\n                var dragY2 = node2Model.get('localY');\r\n                var edgeLayout = edge.getLayout();\r\n                var x1;\r\n                var y1;\r\n                var x2;\r\n                var y2;\r\n                var cpx1;\r\n                var cpy1;\r\n                var cpx2;\r\n                var cpy2;\r\n                curve.shape.extent = Math.max(1, edgeLayout.dy);\r\n                curve.shape.orient = orient;\r\n                if (orient === 'vertical') {\r\n                    x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;\r\n                    y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;\r\n                    x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;\r\n                    y2 = dragY2 != null ? dragY2 * height : n2Layout.y;\r\n                    cpx1 = x1;\r\n                    cpy1 = y1 * (1 - curvature) + y2 * curvature;\r\n                    cpx2 = x2;\r\n                    cpy2 = y1 * curvature + y2 * (1 - curvature);\r\n                }\r\n                else {\r\n                    x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;\r\n                    y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;\r\n                    x2 = dragX2 != null ? dragX2 * width : n2Layout.x;\r\n                    y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;\r\n                    cpx1 = x1 * (1 - curvature) + x2 * curvature;\r\n                    cpy1 = y1;\r\n                    cpx2 = x1 * curvature + x2 * (1 - curvature);\r\n                    cpy2 = y2;\r\n                }\r\n                curve.setShape({\r\n                    x1: x1,\r\n                    y1: y1,\r\n                    x2: x2,\r\n                    y2: y2,\r\n                    cpx1: cpx1,\r\n                    cpy1: cpy1,\r\n                    cpx2: cpx2,\r\n                    cpy2: cpy2\r\n                });\r\n                curve.useStyle(lineStyleModel.getItemStyle());\r\n                switch (curve.style.fill) {\r\n                    case 'source':\r\n                        curve.style.fill = edge.node1.getVisual('color');\r\n                        curve.style.decal = edge.node1.getVisual('style').decal;\r\n                        break;\r\n                    case 'target':\r\n                        curve.style.fill = edge.node2.getVisual('color');\r\n                        curve.style.decal = edge.node2.getVisual('style').decal;\r\n                        break;\r\n                    case 'gradient':\r\n                        var sourceColor = edge.node1.getVisual('color');\r\n                        var targetColor = edge.node2.getVisual('color');\r\n                        if (typeof sourceColor === 'string' && typeof targetColor === 'string') {\r\n                            curve.style.fill = new LinearGradient(0, 0, 1, 0, [{\r\n                                    color: sourceColor,\r\n                                    offset: 0\r\n                                }, {\r\n                                    color: targetColor,\r\n                                    offset: 1\r\n                                }]);\r\n                        }\r\n                }\r\n                var emphasisModel = edgeModel.getModel('emphasis');\r\n                setStatesStylesFromModel(curve, edgeModel, 'lineStyle', function (model) { return model.getItemStyle(); });\r\n                group.add(curve);\r\n                edgeData.setItemGraphicEl(edge.dataIndex, curve);\r\n                var focus = emphasisModel.get('focus');\r\n                enableHoverEmphasis(curve, focus === 'adjacency' ? edge.getAdjacentDataIndices() : focus, emphasisModel.get('blurScope'));\r\n                getECData(curve).dataType = 'edge';\r\n            });\r\n            graph.eachNode(function (node) {\r\n                var layout = node.getLayout();\r\n                var itemModel = node.getModel();\r\n                var dragX = itemModel.get('localX');\r\n                var dragY = itemModel.get('localY');\r\n                var emphasisModel = itemModel.getModel('emphasis');\r\n                var rect = new Rect({\r\n                    shape: {\r\n                        x: dragX != null ? dragX * width : layout.x,\r\n                        y: dragY != null ? dragY * height : layout.y,\r\n                        width: layout.dx,\r\n                        height: layout.dy\r\n                    },\r\n                    style: itemModel.getModel('itemStyle').getItemStyle()\r\n                });\r\n                setLabelStyle(rect, getLabelStatesModels(itemModel), {\r\n                    labelFetcher: seriesModel,\r\n                    labelDataIndex: node.dataIndex,\r\n                    defaultText: node.id\r\n                });\r\n                rect.disableLabelAnimation = true;\r\n                rect.setStyle('fill', node.getVisual('color'));\r\n                rect.setStyle('decal', node.getVisual('style').decal);\r\n                setStatesStylesFromModel(rect, itemModel);\r\n                group.add(rect);\r\n                nodeData.setItemGraphicEl(node.dataIndex, rect);\r\n                getECData(rect).dataType = 'node';\r\n                var focus = emphasisModel.get('focus');\r\n                enableHoverEmphasis(rect, focus === 'adjacency' ? node.getAdjacentDataIndices() : focus, emphasisModel.get('blurScope'));\r\n            });\r\n            nodeData.eachItemGraphicEl(function (el, dataIndex) {\r\n                var itemModel = nodeData.getItemModel(dataIndex);\r\n                if (itemModel.get('draggable')) {\r\n                    el.drift = function (dx, dy) {\r\n                        sankeyView._focusAdjacencyDisabled = true;\r\n                        this.shape.x += dx;\r\n                        this.shape.y += dy;\r\n                        this.dirty();\r\n                        api.dispatchAction({\r\n                            type: 'dragNode',\r\n                            seriesId: seriesModel.id,\r\n                            dataIndex: nodeData.getRawIndex(dataIndex),\r\n                            localX: this.shape.x / width,\r\n                            localY: this.shape.y / height\r\n                        });\r\n                    };\r\n                    el.ondragend = function () {\r\n                        sankeyView._focusAdjacencyDisabled = false;\r\n                    };\r\n                    el.draggable = true;\r\n                    el.cursor = 'move';\r\n                }\r\n            });\r\n            if (!this._data && seriesModel.isAnimationEnabled()) {\r\n                group.setClipPath(createGridClipShape$1(group.getBoundingRect(), seriesModel, function () {\r\n                    group.removeClipPath();\r\n                }));\r\n            }\r\n            this._data = seriesModel.getData();\r\n        };\r\n        SankeyView.prototype.dispose = function () {\r\n        };\r\n        SankeyView.type = 'sankey';\r\n        return SankeyView;\r\n    }(ChartView));\r\n    function createGridClipShape$1(rect, seriesModel, cb) {\r\n        var rectEl = new Rect({\r\n            shape: {\r\n                x: rect.x - 10,\r\n                y: rect.y - 10,\r\n                width: 0,\r\n                height: rect.height + 20\r\n            }\r\n        });\r\n        initProps(rectEl, {\r\n            shape: {\r\n                width: rect.width + 20\r\n            }\r\n        }, seriesModel, cb);\r\n        return rectEl;\r\n    }\r\n    ChartView.registerClass(SankeyView);\n\n    registerAction({\r\n        type: 'dragNode',\r\n        event: 'dragnode',\r\n        update: 'update'\r\n    }, function (payload, ecModel) {\r\n        ecModel.eachComponent({\r\n            mainType: 'series',\r\n            subType: 'sankey',\r\n            query: payload\r\n        }, function (seriesModel) {\r\n            seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);\r\n        });\r\n    });\n\n    function sankeyLayout(ecModel, api) {\r\n        ecModel.eachSeriesByType('sankey', function (seriesModel) {\r\n            var nodeWidth = seriesModel.get('nodeWidth');\r\n            var nodeGap = seriesModel.get('nodeGap');\r\n            var layoutInfo = getViewRect$4(seriesModel, api);\r\n            seriesModel.layoutInfo = layoutInfo;\r\n            var width = layoutInfo.width;\r\n            var height = layoutInfo.height;\r\n            var graph = seriesModel.getGraph();\r\n            var nodes = graph.nodes;\r\n            var edges = graph.edges;\r\n            computeNodeValues(nodes);\r\n            var filteredNodes = filter(nodes, function (node) {\r\n                return node.getLayout().value === 0;\r\n            });\r\n            var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\r\n            var orient = seriesModel.get('orient');\r\n            var nodeAlign = seriesModel.get('nodeAlign');\r\n            layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);\r\n        });\r\n    }\r\n    function getViewRect$4(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {\r\n        computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);\r\n        computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);\r\n        computeEdgeDepths(nodes, orient);\r\n    }\r\n    function computeNodeValues(nodes) {\r\n        each(nodes, function (node) {\r\n            var value1 = sum(node.outEdges, getEdgeValue);\r\n            var value2 = sum(node.inEdges, getEdgeValue);\r\n            var nodeRawValue = node.getValue() || 0;\r\n            var value = Math.max(value1, value2, nodeRawValue);\r\n            node.setLayout({ value: value }, true);\r\n        });\r\n    }\r\n    function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {\r\n        var remainEdges = [];\r\n        var indegreeArr = [];\r\n        var zeroIndegrees = [];\r\n        var nextTargetNode = [];\r\n        var x = 0;\r\n        for (var i = 0; i < edges.length; i++) {\r\n            remainEdges[i] = 1;\r\n        }\r\n        for (var i = 0; i < nodes.length; i++) {\r\n            indegreeArr[i] = nodes[i].inEdges.length;\r\n            if (indegreeArr[i] === 0) {\r\n                zeroIndegrees.push(nodes[i]);\r\n            }\r\n        }\r\n        var maxNodeDepth = -1;\r\n        while (zeroIndegrees.length) {\r\n            for (var idx = 0; idx < zeroIndegrees.length; idx++) {\r\n                var node = zeroIndegrees[idx];\r\n                var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\r\n                var isItemDepth = item.depth != null && item.depth >= 0;\r\n                if (isItemDepth && item.depth > maxNodeDepth) {\r\n                    maxNodeDepth = item.depth;\r\n                }\r\n                node.setLayout({ depth: isItemDepth ? item.depth : x }, true);\r\n                orient === 'vertical'\r\n                    ? node.setLayout({ dy: nodeWidth }, true)\r\n                    : node.setLayout({ dx: nodeWidth }, true);\r\n                for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {\r\n                    var edge = node.outEdges[edgeIdx];\r\n                    var indexEdge = edges.indexOf(edge);\r\n                    remainEdges[indexEdge] = 0;\r\n                    var targetNode = edge.node2;\r\n                    var nodeIndex = nodes.indexOf(targetNode);\r\n                    if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {\r\n                        nextTargetNode.push(targetNode);\r\n                    }\r\n                }\r\n            }\r\n            ++x;\r\n            zeroIndegrees = nextTargetNode;\r\n            nextTargetNode = [];\r\n        }\r\n        for (var i = 0; i < remainEdges.length; i++) {\r\n            if (remainEdges[i] === 1) {\r\n                throw new Error('Sankey is a DAG, the original data has cycle!');\r\n            }\r\n        }\r\n        var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;\r\n        if (nodeAlign && nodeAlign !== 'left') {\r\n            adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);\r\n        }\r\n        var kx = orient === 'vertical'\r\n            ? (height - nodeWidth) / maxDepth\r\n            : (width - nodeWidth) / maxDepth;\r\n        scaleNodeBreadths(nodes, kx, orient);\r\n    }\r\n    function isNodeDepth(node) {\r\n        var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\r\n        return item.depth != null && item.depth >= 0;\r\n    }\r\n    function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {\r\n        if (nodeAlign === 'right') {\r\n            var nextSourceNode = [];\r\n            var remainNodes = nodes;\r\n            var nodeHeight = 0;\r\n            while (remainNodes.length) {\r\n                for (var i = 0; i < remainNodes.length; i++) {\r\n                    var node = remainNodes[i];\r\n                    node.setLayout({ skNodeHeight: nodeHeight }, true);\r\n                    for (var j = 0; j < node.inEdges.length; j++) {\r\n                        var edge = node.inEdges[j];\r\n                        if (nextSourceNode.indexOf(edge.node1) < 0) {\r\n                            nextSourceNode.push(edge.node1);\r\n                        }\r\n                    }\r\n                }\r\n                remainNodes = nextSourceNode;\r\n                nextSourceNode = [];\r\n                ++nodeHeight;\r\n            }\r\n            each(nodes, function (node) {\r\n                if (!isNodeDepth(node)) {\r\n                    node.setLayout({ depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight) }, true);\r\n                }\r\n            });\r\n        }\r\n        else if (nodeAlign === 'justify') {\r\n            moveSinksRight(nodes, maxDepth);\r\n        }\r\n    }\r\n    function moveSinksRight(nodes, maxDepth) {\r\n        each(nodes, function (node) {\r\n            if (!isNodeDepth(node) && !node.outEdges.length) {\r\n                node.setLayout({ depth: maxDepth }, true);\r\n            }\r\n        });\r\n    }\r\n    function scaleNodeBreadths(nodes, kx, orient) {\r\n        each(nodes, function (node) {\r\n            var nodeDepth = node.getLayout().depth * kx;\r\n            orient === 'vertical'\r\n                ? node.setLayout({ y: nodeDepth }, true)\r\n                : node.setLayout({ x: nodeDepth }, true);\r\n        });\r\n    }\r\n    function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {\r\n        var nodesByBreadth = prepareNodesByBreadth(nodes, orient);\r\n        initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);\r\n        resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\r\n        for (var alpha = 1; iterations > 0; iterations--) {\r\n            alpha *= 0.99;\r\n            relaxRightToLeft(nodesByBreadth, alpha, orient);\r\n            resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\r\n            relaxLeftToRight(nodesByBreadth, alpha, orient);\r\n            resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\r\n        }\r\n    }\r\n    function prepareNodesByBreadth(nodes, orient) {\r\n        var nodesByBreadth = [];\r\n        var keyAttr = orient === 'vertical' ? 'y' : 'x';\r\n        var groupResult = groupData(nodes, function (node) {\r\n            return node.getLayout()[keyAttr];\r\n        });\r\n        groupResult.keys.sort(function (a, b) {\r\n            return a - b;\r\n        });\r\n        each(groupResult.keys, function (key) {\r\n            nodesByBreadth.push(groupResult.buckets.get(key));\r\n        });\r\n        return nodesByBreadth;\r\n    }\r\n    function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {\r\n        var minKy = Infinity;\r\n        each(nodesByBreadth, function (nodes) {\r\n            var n = nodes.length;\r\n            var sum = 0;\r\n            each(nodes, function (node) {\r\n                sum += node.getLayout().value;\r\n            });\r\n            var ky = orient === 'vertical'\r\n                ? (width - (n - 1) * nodeGap) / sum\r\n                : (height - (n - 1) * nodeGap) / sum;\r\n            if (ky < minKy) {\r\n                minKy = ky;\r\n            }\r\n        });\r\n        each(nodesByBreadth, function (nodes) {\r\n            each(nodes, function (node, i) {\r\n                var nodeDy = node.getLayout().value * minKy;\r\n                if (orient === 'vertical') {\r\n                    node.setLayout({ x: i }, true);\r\n                    node.setLayout({ dx: nodeDy }, true);\r\n                }\r\n                else {\r\n                    node.setLayout({ y: i }, true);\r\n                    node.setLayout({ dy: nodeDy }, true);\r\n                }\r\n            });\r\n        });\r\n        each(edges, function (edge) {\r\n            var edgeDy = +edge.getValue() * minKy;\r\n            edge.setLayout({ dy: edgeDy }, true);\r\n        });\r\n    }\r\n    function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {\r\n        var keyAttr = orient === 'vertical' ? 'x' : 'y';\r\n        each(nodesByBreadth, function (nodes) {\r\n            nodes.sort(function (a, b) {\r\n                return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];\r\n            });\r\n            var nodeX;\r\n            var node;\r\n            var dy;\r\n            var y0 = 0;\r\n            var n = nodes.length;\r\n            var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy';\r\n            for (var i = 0; i < n; i++) {\r\n                node = nodes[i];\r\n                dy = y0 - node.getLayout()[keyAttr];\r\n                if (dy > 0) {\r\n                    nodeX = node.getLayout()[keyAttr] + dy;\r\n                    orient === 'vertical'\r\n                        ? node.setLayout({ x: nodeX }, true)\r\n                        : node.setLayout({ y: nodeX }, true);\r\n                }\r\n                y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;\r\n            }\r\n            var viewWidth = orient === 'vertical' ? width : height;\r\n            dy = y0 - nodeGap - viewWidth;\r\n            if (dy > 0) {\r\n                nodeX = node.getLayout()[keyAttr] - dy;\r\n                orient === 'vertical'\r\n                    ? node.setLayout({ x: nodeX }, true)\r\n                    : node.setLayout({ y: nodeX }, true);\r\n                y0 = nodeX;\r\n                for (var i = n - 2; i >= 0; --i) {\r\n                    node = nodes[i];\r\n                    dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;\r\n                    if (dy > 0) {\r\n                        nodeX = node.getLayout()[keyAttr] - dy;\r\n                        orient === 'vertical'\r\n                            ? node.setLayout({ x: nodeX }, true)\r\n                            : node.setLayout({ y: nodeX }, true);\r\n                    }\r\n                    y0 = node.getLayout()[keyAttr];\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function relaxRightToLeft(nodesByBreadth, alpha, orient) {\r\n        each(nodesByBreadth.slice().reverse(), function (nodes) {\r\n            each(nodes, function (node) {\r\n                if (node.outEdges.length) {\r\n                    var y = sum(node.outEdges, weightedTarget, orient)\r\n                        / sum(node.outEdges, getEdgeValue);\r\n                    if (isNaN(y)) {\r\n                        var len = node.outEdges.length;\r\n                        y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;\r\n                    }\r\n                    if (orient === 'vertical') {\r\n                        var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha;\r\n                        node.setLayout({ x: nodeX }, true);\r\n                    }\r\n                    else {\r\n                        var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha;\r\n                        node.setLayout({ y: nodeY }, true);\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n    function weightedTarget(edge, orient) {\r\n        return center$1(edge.node2, orient) * edge.getValue();\r\n    }\r\n    function centerTarget(edge, orient) {\r\n        return center$1(edge.node2, orient);\r\n    }\r\n    function weightedSource(edge, orient) {\r\n        return center$1(edge.node1, orient) * edge.getValue();\r\n    }\r\n    function centerSource(edge, orient) {\r\n        return center$1(edge.node1, orient);\r\n    }\r\n    function center$1(node, orient) {\r\n        return orient === 'vertical'\r\n            ? node.getLayout().x + node.getLayout().dx / 2\r\n            : node.getLayout().y + node.getLayout().dy / 2;\r\n    }\r\n    function getEdgeValue(edge) {\r\n        return edge.getValue();\r\n    }\r\n    function sum(array, cb, orient) {\r\n        var sum = 0;\r\n        var len = array.length;\r\n        var i = -1;\r\n        while (++i < len) {\r\n            var value = +cb(array[i], orient);\r\n            if (!isNaN(value)) {\r\n                sum += value;\r\n            }\r\n        }\r\n        return sum;\r\n    }\r\n    function relaxLeftToRight(nodesByBreadth, alpha, orient) {\r\n        each(nodesByBreadth, function (nodes) {\r\n            each(nodes, function (node) {\r\n                if (node.inEdges.length) {\r\n                    var y = sum(node.inEdges, weightedSource, orient)\r\n                        / sum(node.inEdges, getEdgeValue);\r\n                    if (isNaN(y)) {\r\n                        var len = node.inEdges.length;\r\n                        y = len ? sum(node.inEdges, centerSource, orient) / len : 0;\r\n                    }\r\n                    if (orient === 'vertical') {\r\n                        var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha;\r\n                        node.setLayout({ x: nodeX }, true);\r\n                    }\r\n                    else {\r\n                        var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha;\r\n                        node.setLayout({ y: nodeY }, true);\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n    function computeEdgeDepths(nodes, orient) {\r\n        var keyAttr = orient === 'vertical' ? 'x' : 'y';\r\n        each(nodes, function (node) {\r\n            node.outEdges.sort(function (a, b) {\r\n                return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];\r\n            });\r\n            node.inEdges.sort(function (a, b) {\r\n                return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];\r\n            });\r\n        });\r\n        each(nodes, function (node) {\r\n            var sy = 0;\r\n            var ty = 0;\r\n            each(node.outEdges, function (edge) {\r\n                edge.setLayout({ sy: sy }, true);\r\n                sy += edge.getLayout().dy;\r\n            });\r\n            each(node.inEdges, function (edge) {\r\n                edge.setLayout({ ty: ty }, true);\r\n                ty += edge.getLayout().dy;\r\n            });\r\n        });\r\n    }\n\n    function sankeyVisual(ecModel) {\r\n        ecModel.eachSeriesByType('sankey', function (seriesModel) {\r\n            var graph = seriesModel.getGraph();\r\n            var nodes = graph.nodes;\r\n            if (nodes.length) {\r\n                var minValue_1 = Infinity;\r\n                var maxValue_1 = -Infinity;\r\n                each(nodes, function (node) {\r\n                    var nodeValue = node.getLayout().value;\r\n                    if (nodeValue < minValue_1) {\r\n                        minValue_1 = nodeValue;\r\n                    }\r\n                    if (nodeValue > maxValue_1) {\r\n                        maxValue_1 = nodeValue;\r\n                    }\r\n                });\r\n                each(nodes, function (node) {\r\n                    var mapping = new VisualMapping({\r\n                        type: 'color',\r\n                        mappingMethod: 'linear',\r\n                        dataExtent: [minValue_1, maxValue_1],\r\n                        visual: seriesModel.get('color')\r\n                    });\r\n                    var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\r\n                    var customColor = node.getModel().get(['itemStyle', 'color']);\r\n                    if (customColor != null) {\r\n                        node.setVisual('color', customColor);\r\n                        node.setVisual('style', { fill: customColor });\r\n                    }\r\n                    else {\r\n                        node.setVisual('color', mapValueToColor);\r\n                        node.setVisual('style', { fill: mapValueToColor });\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\n\n    registerLayout(sankeyLayout);\r\n    registerVisual(sankeyVisual);\n\n    var WhiskerBoxCommonMixin = (function () {\r\n        function WhiskerBoxCommonMixin() {\r\n        }\r\n        WhiskerBoxCommonMixin.prototype.getInitialData = function (option, ecModel) {\r\n            var ordinalMeta;\r\n            var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\r\n            var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\r\n            var xAxisType = xAxisModel.get('type');\r\n            var yAxisType = yAxisModel.get('type');\r\n            var addOrdinal;\r\n            if (xAxisType === 'category') {\r\n                option.layout = 'horizontal';\r\n                ordinalMeta = xAxisModel.getOrdinalMeta();\r\n                addOrdinal = true;\r\n            }\r\n            else if (yAxisType === 'category') {\r\n                option.layout = 'vertical';\r\n                ordinalMeta = yAxisModel.getOrdinalMeta();\r\n                addOrdinal = true;\r\n            }\r\n            else {\r\n                option.layout = option.layout || 'horizontal';\r\n            }\r\n            var coordDims = ['x', 'y'];\r\n            var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\r\n            var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\r\n            var otherAxisDim = coordDims[1 - baseAxisDimIndex];\r\n            var axisModels = [xAxisModel, yAxisModel];\r\n            var baseAxisType = axisModels[baseAxisDimIndex].get('type');\r\n            var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\r\n            var data = option.data;\r\n            if (data && addOrdinal) {\r\n                var newOptionData_1 = [];\r\n                each(data, function (item, index) {\r\n                    var newItem;\r\n                    if (isArray(item)) {\r\n                        newItem = item.slice();\r\n                        item.unshift(index);\r\n                    }\r\n                    else if (isArray(item.value)) {\r\n                        newItem = item.value.slice();\r\n                        item.value.unshift(index);\r\n                    }\r\n                    else {\r\n                        newItem = item;\r\n                    }\r\n                    newOptionData_1.push(newItem);\r\n                });\r\n                option.data = newOptionData_1;\r\n            }\r\n            var defaultValueDimensions = this.defaultValueDimensions;\r\n            var coordDimensions = [{\r\n                    name: baseAxisDim,\r\n                    type: getDimensionTypeByAxis(baseAxisType),\r\n                    ordinalMeta: ordinalMeta,\r\n                    otherDims: {\r\n                        tooltip: false,\r\n                        itemName: 0\r\n                    },\r\n                    dimsDef: ['base']\r\n                }, {\r\n                    name: otherAxisDim,\r\n                    type: getDimensionTypeByAxis(otherAxisType),\r\n                    dimsDef: defaultValueDimensions.slice()\r\n                }];\r\n            return createListSimply(this, {\r\n                coordDimensions: coordDimensions,\r\n                dimensionsCount: defaultValueDimensions.length + 1,\r\n                encodeDefaulter: curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\r\n            });\r\n        };\r\n        WhiskerBoxCommonMixin.prototype.getBaseAxis = function () {\r\n            var dim = this._baseAxisDim;\r\n            return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\r\n        };\r\n        return WhiskerBoxCommonMixin;\r\n    }());\n\n    var BoxplotSeriesModel = (function (_super) {\r\n        __extends(BoxplotSeriesModel, _super);\r\n        function BoxplotSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BoxplotSeriesModel.type;\r\n            _this.defaultValueDimensions = [\r\n                { name: 'min', defaultTooltip: true },\r\n                { name: 'Q1', defaultTooltip: true },\r\n                { name: 'median', defaultTooltip: true },\r\n                { name: 'Q3', defaultTooltip: true },\r\n                { name: 'max', defaultTooltip: true }\r\n            ];\r\n            _this.visualDrawType = 'stroke';\r\n            return _this;\r\n        }\r\n        BoxplotSeriesModel.type = 'series.boxplot';\r\n        BoxplotSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid'];\r\n        BoxplotSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            layout: null,\r\n            boxWidth: [7, 50],\r\n            itemStyle: {\r\n                color: '#fff',\r\n                borderWidth: 1\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                itemStyle: {\r\n                    borderWidth: 2,\r\n                    shadowBlur: 5,\r\n                    shadowOffsetX: 1,\r\n                    shadowOffsetY: 1,\r\n                    shadowColor: 'rgba(0,0,0,0.2)'\r\n                }\r\n            },\r\n            animationDuration: 800\r\n        };\r\n        return BoxplotSeriesModel;\r\n    }(SeriesModel));\r\n    mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);\r\n    SeriesModel.registerClass(BoxplotSeriesModel);\n\n    var BoxplotView = (function (_super) {\r\n        __extends(BoxplotView, _super);\r\n        function BoxplotView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BoxplotView.type;\r\n            return _this;\r\n        }\r\n        BoxplotView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var group = this.group;\r\n            var oldData = this._data;\r\n            if (!this._data) {\r\n                group.removeAll();\r\n            }\r\n            var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                if (data.hasValue(newIdx)) {\r\n                    var itemLayout = data.getItemLayout(newIdx);\r\n                    var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\r\n                    data.setItemGraphicEl(newIdx, symbolEl);\r\n                    group.add(symbolEl);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                if (!data.hasValue(newIdx)) {\r\n                    group.remove(symbolEl);\r\n                    return;\r\n                }\r\n                var itemLayout = data.getItemLayout(newIdx);\r\n                if (!symbolEl) {\r\n                    symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\r\n                }\r\n                else {\r\n                    updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\r\n                }\r\n                group.add(symbolEl);\r\n                data.setItemGraphicEl(newIdx, symbolEl);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                el && group.remove(el);\r\n            })\r\n                .execute();\r\n            this._data = data;\r\n        };\r\n        BoxplotView.prototype.remove = function (ecModel) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            this._data = null;\r\n            data && data.eachItemGraphicEl(function (el) {\r\n                el && group.remove(el);\r\n            });\r\n        };\r\n        BoxplotView.type = 'boxplot';\r\n        return BoxplotView;\r\n    }(ChartView));\r\n    var BoxPathShape = (function () {\r\n        function BoxPathShape() {\r\n        }\r\n        return BoxPathShape;\r\n    }());\r\n    var BoxPath = (function (_super) {\r\n        __extends(BoxPath, _super);\r\n        function BoxPath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'boxplotBoxPath';\r\n            return _this;\r\n        }\r\n        BoxPath.prototype.getDefaultShape = function () {\r\n            return new BoxPathShape();\r\n        };\r\n        BoxPath.prototype.buildPath = function (ctx, shape) {\r\n            var ends = shape.points;\r\n            var i = 0;\r\n            ctx.moveTo(ends[i][0], ends[i][1]);\r\n            i++;\r\n            for (; i < 4; i++) {\r\n                ctx.lineTo(ends[i][0], ends[i][1]);\r\n            }\r\n            ctx.closePath();\r\n            for (; i < ends.length; i++) {\r\n                ctx.moveTo(ends[i][0], ends[i][1]);\r\n                i++;\r\n                ctx.lineTo(ends[i][0], ends[i][1]);\r\n            }\r\n        };\r\n        return BoxPath;\r\n    }(Path));\r\n    function createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\r\n        var ends = itemLayout.ends;\r\n        var el = new BoxPath({\r\n            shape: {\r\n                points: isInit\r\n                    ? transInit(ends, constDim, itemLayout)\r\n                    : ends\r\n            }\r\n        });\r\n        updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\r\n        return el;\r\n    }\r\n    function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\r\n        var seriesModel = data.hostModel;\r\n        var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\r\n        updateMethod(el, { shape: { points: itemLayout.ends } }, seriesModel, dataIndex);\r\n        el.useStyle(data.getItemVisual(dataIndex, 'style'));\r\n        el.style.strokeNoScale = true;\r\n        el.z2 = 100;\r\n        var itemModel = data.getItemModel(dataIndex);\r\n        setStatesStylesFromModel(el, itemModel);\r\n        enableHoverEmphasis(el, itemModel.get(['emphasis', 'focus']), itemModel.get(['emphasis', 'blurScope']));\r\n    }\r\n    function transInit(points, dim, itemLayout) {\r\n        return map(points, function (point) {\r\n            point = point.slice();\r\n            point[dim] = itemLayout.initBaseline;\r\n            return point;\r\n        });\r\n    }\r\n    ChartView.registerClass(BoxplotView);\n\n    function boxplotVisual(ecModel, api) {\r\n        ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\r\n            seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n        });\r\n    }\n\n    var each$7 = each;\r\n    function boxplotLayout(ecModel) {\r\n        var groupResult = groupSeriesByAxis(ecModel);\r\n        each$7(groupResult, function (groupItem) {\r\n            var seriesModels = groupItem.seriesModels;\r\n            if (!seriesModels.length) {\r\n                return;\r\n            }\r\n            calculateBase(groupItem);\r\n            each$7(seriesModels, function (seriesModel, idx) {\r\n                layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\r\n            });\r\n        });\r\n    }\r\n    function groupSeriesByAxis(ecModel) {\r\n        var result = [];\r\n        var axisList = [];\r\n        ecModel.eachSeriesByType('boxplot', function (seriesModel) {\r\n            var baseAxis = seriesModel.getBaseAxis();\r\n            var idx = indexOf(axisList, baseAxis);\r\n            if (idx < 0) {\r\n                idx = axisList.length;\r\n                axisList[idx] = baseAxis;\r\n                result[idx] = {\r\n                    axis: baseAxis,\r\n                    seriesModels: []\r\n                };\r\n            }\r\n            result[idx].seriesModels.push(seriesModel);\r\n        });\r\n        return result;\r\n    }\r\n    function calculateBase(groupItem) {\r\n        var extent;\r\n        var baseAxis = groupItem.axis;\r\n        var seriesModels = groupItem.seriesModels;\r\n        var seriesCount = seriesModels.length;\r\n        var boxWidthList = groupItem.boxWidthList = [];\r\n        var boxOffsetList = groupItem.boxOffsetList = [];\r\n        var boundList = [];\r\n        var bandWidth;\r\n        if (baseAxis.type === 'category') {\r\n            bandWidth = baseAxis.getBandWidth();\r\n        }\r\n        else {\r\n            var maxDataCount_1 = 0;\r\n            each$7(seriesModels, function (seriesModel) {\r\n                maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count());\r\n            });\r\n            extent = baseAxis.getExtent(),\r\n                Math.abs(extent[1] - extent[0]) / maxDataCount_1;\r\n        }\r\n        each$7(seriesModels, function (seriesModel) {\r\n            var boxWidthBound = seriesModel.get('boxWidth');\r\n            if (!isArray(boxWidthBound)) {\r\n                boxWidthBound = [boxWidthBound, boxWidthBound];\r\n            }\r\n            boundList.push([\r\n                parsePercent$2(boxWidthBound[0], bandWidth) || 0,\r\n                parsePercent$2(boxWidthBound[1], bandWidth) || 0\r\n            ]);\r\n        });\r\n        var availableWidth = bandWidth * 0.8 - 2;\r\n        var boxGap = availableWidth / seriesCount * 0.3;\r\n        var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\r\n        var base = boxWidth / 2 - availableWidth / 2;\r\n        each$7(seriesModels, function (seriesModel, idx) {\r\n            boxOffsetList.push(base);\r\n            base += boxGap + boxWidth;\r\n            boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\r\n        });\r\n    }\r\n    function layoutSingleSeries(seriesModel, offset, boxWidth) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        var data = seriesModel.getData();\r\n        var halfWidth = boxWidth / 2;\r\n        var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\r\n        var vDimIdx = 1 - cDimIdx;\r\n        var coordDims = ['x', 'y'];\r\n        var cDim = data.mapDimension(coordDims[cDimIdx]);\r\n        var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);\r\n        if (cDim == null || vDims.length < 5) {\r\n            return;\r\n        }\r\n        for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\r\n            var axisDimVal = data.get(cDim, dataIndex);\r\n            var median = getPoint(axisDimVal, vDims[2], dataIndex);\r\n            var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\r\n            var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\r\n            var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\r\n            var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\r\n            var ends = [];\r\n            addBodyEnd(ends, end2, false);\r\n            addBodyEnd(ends, end4, true);\r\n            ends.push(end1, end2, end5, end4);\r\n            layEndLine(ends, end1);\r\n            layEndLine(ends, end5);\r\n            layEndLine(ends, median);\r\n            data.setItemLayout(dataIndex, {\r\n                initBaseline: median[vDimIdx],\r\n                ends: ends\r\n            });\r\n        }\r\n        function getPoint(axisDimVal, dim, dataIndex) {\r\n            var val = data.get(dim, dataIndex);\r\n            var p = [];\r\n            p[cDimIdx] = axisDimVal;\r\n            p[vDimIdx] = val;\r\n            var point;\r\n            if (isNaN(axisDimVal) || isNaN(val)) {\r\n                point = [NaN, NaN];\r\n            }\r\n            else {\r\n                point = coordSys.dataToPoint(p);\r\n                point[cDimIdx] += offset;\r\n            }\r\n            return point;\r\n        }\r\n        function addBodyEnd(ends, point, start) {\r\n            var point1 = point.slice();\r\n            var point2 = point.slice();\r\n            point1[cDimIdx] += halfWidth;\r\n            point2[cDimIdx] -= halfWidth;\r\n            start\r\n                ? ends.push(point1, point2)\r\n                : ends.push(point2, point1);\r\n        }\r\n        function layEndLine(ends, endCenter) {\r\n            var from = endCenter.slice();\r\n            var to = endCenter.slice();\r\n            from[cDimIdx] -= halfWidth;\r\n            to[cDimIdx] += halfWidth;\r\n            ends.push(from, to);\r\n        }\r\n    }\n\n    function prepareBoxplotData(rawData, opt) {\r\n        opt = opt || {};\r\n        var boxData = [];\r\n        var outliers = [];\r\n        var boundIQR = opt.boundIQR;\r\n        var useExtreme = boundIQR === 'none' || boundIQR === 0;\r\n        for (var i = 0; i < rawData.length; i++) {\r\n            var ascList = asc(rawData[i].slice());\r\n            var Q1 = quantile(ascList, 0.25);\r\n            var Q2 = quantile(ascList, 0.5);\r\n            var Q3 = quantile(ascList, 0.75);\r\n            var min = ascList[0];\r\n            var max = ascList[ascList.length - 1];\r\n            var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);\r\n            var low = useExtreme\r\n                ? min\r\n                : Math.max(min, Q1 - bound);\r\n            var high = useExtreme\r\n                ? max\r\n                : Math.min(max, Q3 + bound);\r\n            var itemNameFormatter = opt.itemNameFormatter;\r\n            var itemName = isFunction(itemNameFormatter)\r\n                ? itemNameFormatter({ value: i })\r\n                : isString(itemNameFormatter)\r\n                    ? itemNameFormatter.replace('{value}', i + '')\r\n                    : i + '';\r\n            boxData.push([itemName, low, Q1, Q2, Q3, high]);\r\n            for (var j = 0; j < ascList.length; j++) {\r\n                var dataItem = ascList[j];\r\n                if (dataItem < low || dataItem > high) {\r\n                    var outlier = [itemName, dataItem];\r\n                    outliers.push(outlier);\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            boxData: boxData,\r\n            outliers: outliers\r\n        };\r\n    }\n\n    var boxplotTransform = {\r\n        type: 'echarts:boxplot',\r\n        transform: function transform(params) {\r\n            var upstream = params.upstream;\r\n            if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = makePrintable('source data is not applicable for this boxplot transform. Expect number[][].');\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            var result = prepareBoxplotData(upstream.getRawData(), params.config);\r\n            return [{\r\n                    dimensions: ['ItemName', 'Low', 'Q1', 'Q2', 'Q3', 'High'],\r\n                    data: result.boxData\r\n                }, {\r\n                    data: result.outliers\r\n                }];\r\n        }\r\n    };\n\n    registerVisual(boxplotVisual);\r\n    registerLayout(boxplotLayout);\r\n    registerTransform(boxplotTransform);\n\n    var CandlestickSeriesModel = (function (_super) {\r\n        __extends(CandlestickSeriesModel, _super);\r\n        function CandlestickSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CandlestickSeriesModel.type;\r\n            _this.defaultValueDimensions = [\r\n                { name: 'open', defaultTooltip: true },\r\n                { name: 'close', defaultTooltip: true },\r\n                { name: 'lowest', defaultTooltip: true },\r\n                { name: 'highest', defaultTooltip: true }\r\n            ];\r\n            return _this;\r\n        }\r\n        CandlestickSeriesModel.prototype.getShadowDim = function () {\r\n            return 'open';\r\n        };\r\n        CandlestickSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            var itemLayout = data.getItemLayout(dataIndex);\r\n            return itemLayout && selectors.rect(itemLayout.brushRect);\r\n        };\r\n        CandlestickSeriesModel.type = 'series.candlestick';\r\n        CandlestickSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid'];\r\n        CandlestickSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            layout: null,\r\n            clip: true,\r\n            itemStyle: {\r\n                color: '#c23531',\r\n                color0: '#314656',\r\n                borderWidth: 1,\r\n                borderColor: '#c23531',\r\n                borderColor0: '#314656'\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                itemStyle: {\r\n                    borderWidth: 2\r\n                }\r\n            },\r\n            barMaxWidth: null,\r\n            barMinWidth: null,\r\n            barWidth: null,\r\n            large: true,\r\n            largeThreshold: 600,\r\n            progressive: 3e3,\r\n            progressiveThreshold: 1e4,\r\n            progressiveChunkMode: 'mod',\r\n            animationEasing: 'linear',\r\n            animationDuration: 300\r\n        };\r\n        return CandlestickSeriesModel;\r\n    }(SeriesModel));\r\n    mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);\r\n    SeriesModel.registerClass(CandlestickSeriesModel);\n\n    var SKIP_PROPS = ['color', 'borderColor'];\r\n    var CandlestickView = (function (_super) {\r\n        __extends(CandlestickView, _super);\r\n        function CandlestickView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CandlestickView.type;\r\n            return _this;\r\n        }\r\n        CandlestickView.prototype.render = function (seriesModel, ecModel, api) {\r\n            this.group.removeClipPath();\r\n            this._updateDrawMode(seriesModel);\r\n            this._isLargeDraw\r\n                ? this._renderLarge(seriesModel)\r\n                : this._renderNormal(seriesModel);\r\n        };\r\n        CandlestickView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n            this._clear();\r\n            this._updateDrawMode(seriesModel);\r\n        };\r\n        CandlestickView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) {\r\n            this._isLargeDraw\r\n                ? this._incrementalRenderLarge(params, seriesModel)\r\n                : this._incrementalRenderNormal(params, seriesModel);\r\n        };\r\n        CandlestickView.prototype._updateDrawMode = function (seriesModel) {\r\n            var isLargeDraw = seriesModel.pipelineContext.large;\r\n            if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n                this._isLargeDraw = isLargeDraw;\r\n                this._clear();\r\n            }\r\n        };\r\n        CandlestickView.prototype._renderNormal = function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var group = this.group;\r\n            var isSimpleBox = data.getLayout('isSimpleBox');\r\n            var needsClip = seriesModel.get('clip', true);\r\n            var coord = seriesModel.coordinateSystem;\r\n            var clipArea = coord.getArea && coord.getArea();\r\n            if (!this._data) {\r\n                group.removeAll();\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                if (data.hasValue(newIdx)) {\r\n                    var itemLayout = data.getItemLayout(newIdx);\r\n                    if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\r\n                        return;\r\n                    }\r\n                    var el = createNormalBox$1(itemLayout, newIdx, true);\r\n                    initProps(el, { shape: { points: itemLayout.ends } }, seriesModel, newIdx);\r\n                    setBoxCommon(el, data, newIdx, isSimpleBox);\r\n                    group.add(el);\r\n                    data.setItemGraphicEl(newIdx, el);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                if (!data.hasValue(newIdx)) {\r\n                    group.remove(el);\r\n                    return;\r\n                }\r\n                var itemLayout = data.getItemLayout(newIdx);\r\n                if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\r\n                    group.remove(el);\r\n                    return;\r\n                }\r\n                if (!el) {\r\n                    el = createNormalBox$1(itemLayout);\r\n                }\r\n                else {\r\n                    updateProps(el, {\r\n                        shape: {\r\n                            points: itemLayout.ends\r\n                        }\r\n                    }, seriesModel, newIdx);\r\n                }\r\n                setBoxCommon(el, data, newIdx, isSimpleBox);\r\n                group.add(el);\r\n                data.setItemGraphicEl(newIdx, el);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                el && group.remove(el);\r\n            })\r\n                .execute();\r\n            this._data = data;\r\n        };\r\n        CandlestickView.prototype._renderLarge = function (seriesModel) {\r\n            this._clear();\r\n            createLarge$1(seriesModel, this.group);\r\n            var clipPath = seriesModel.get('clip', true)\r\n                ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n                : null;\r\n            if (clipPath) {\r\n                this.group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                this.group.removeClipPath();\r\n            }\r\n        };\r\n        CandlestickView.prototype._incrementalRenderNormal = function (params, seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var isSimpleBox = data.getLayout('isSimpleBox');\r\n            var dataIndex;\r\n            while ((dataIndex = params.next()) != null) {\r\n                var itemLayout = data.getItemLayout(dataIndex);\r\n                var el = createNormalBox$1(itemLayout);\r\n                setBoxCommon(el, data, dataIndex, isSimpleBox);\r\n                el.incremental = true;\r\n                this.group.add(el);\r\n            }\r\n        };\r\n        CandlestickView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n            createLarge$1(seriesModel, this.group, true);\r\n        };\r\n        CandlestickView.prototype.remove = function (ecModel) {\r\n            this._clear();\r\n        };\r\n        CandlestickView.prototype._clear = function () {\r\n            this.group.removeAll();\r\n            this._data = null;\r\n        };\r\n        CandlestickView.type = 'candlestick';\r\n        return CandlestickView;\r\n    }(ChartView));\r\n    ChartView.registerClass(CandlestickView);\r\n    var NormalBoxPathShape = (function () {\r\n        function NormalBoxPathShape() {\r\n        }\r\n        return NormalBoxPathShape;\r\n    }());\r\n    var NormalBoxPath = (function (_super) {\r\n        __extends(NormalBoxPath, _super);\r\n        function NormalBoxPath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'normalCandlestickBox';\r\n            return _this;\r\n        }\r\n        NormalBoxPath.prototype.getDefaultShape = function () {\r\n            return new NormalBoxPathShape();\r\n        };\r\n        NormalBoxPath.prototype.buildPath = function (ctx, shape) {\r\n            var ends = shape.points;\r\n            if (this.__simpleBox) {\r\n                ctx.moveTo(ends[4][0], ends[4][1]);\r\n                ctx.lineTo(ends[6][0], ends[6][1]);\r\n            }\r\n            else {\r\n                ctx.moveTo(ends[0][0], ends[0][1]);\r\n                ctx.lineTo(ends[1][0], ends[1][1]);\r\n                ctx.lineTo(ends[2][0], ends[2][1]);\r\n                ctx.lineTo(ends[3][0], ends[3][1]);\r\n                ctx.closePath();\r\n                ctx.moveTo(ends[4][0], ends[4][1]);\r\n                ctx.lineTo(ends[5][0], ends[5][1]);\r\n                ctx.moveTo(ends[6][0], ends[6][1]);\r\n                ctx.lineTo(ends[7][0], ends[7][1]);\r\n            }\r\n        };\r\n        return NormalBoxPath;\r\n    }(Path));\r\n    function createNormalBox$1(itemLayout, dataIndex, isInit) {\r\n        var ends = itemLayout.ends;\r\n        return new NormalBoxPath({\r\n            shape: {\r\n                points: isInit\r\n                    ? transInit$1(ends, itemLayout)\r\n                    : ends\r\n            },\r\n            z2: 100\r\n        });\r\n    }\r\n    function isNormalBoxClipped(clipArea, itemLayout) {\r\n        var clipped = true;\r\n        for (var i = 0; i < itemLayout.ends.length; i++) {\r\n            if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\r\n                clipped = false;\r\n                break;\r\n            }\r\n        }\r\n        return clipped;\r\n    }\r\n    function setBoxCommon(el, data, dataIndex, isSimpleBox) {\r\n        var itemModel = data.getItemModel(dataIndex);\r\n        el.useStyle(data.getItemVisual(dataIndex, 'style'));\r\n        el.style.strokeNoScale = true;\r\n        el.__simpleBox = isSimpleBox;\r\n        setStatesStylesFromModel(el, itemModel);\r\n    }\r\n    function transInit$1(points, itemLayout) {\r\n        return map(points, function (point) {\r\n            point = point.slice();\r\n            point[1] = itemLayout.initBaseline;\r\n            return point;\r\n        });\r\n    }\r\n    var LargeBoxPathShape = (function () {\r\n        function LargeBoxPathShape() {\r\n        }\r\n        return LargeBoxPathShape;\r\n    }());\r\n    var LargeBoxPath = (function (_super) {\r\n        __extends(LargeBoxPath, _super);\r\n        function LargeBoxPath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'largeCandlestickBox';\r\n            return _this;\r\n        }\r\n        LargeBoxPath.prototype.getDefaultShape = function () {\r\n            return new LargeBoxPathShape();\r\n        };\r\n        LargeBoxPath.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            for (var i = 0; i < points.length;) {\r\n                if (this.__sign === points[i++]) {\r\n                    var x = points[i++];\r\n                    ctx.moveTo(x, points[i++]);\r\n                    ctx.lineTo(x, points[i++]);\r\n                }\r\n                else {\r\n                    i += 3;\r\n                }\r\n            }\r\n        };\r\n        return LargeBoxPath;\r\n    }(Path));\r\n    function createLarge$1(seriesModel, group, incremental) {\r\n        var data = seriesModel.getData();\r\n        var largePoints = data.getLayout('largePoints');\r\n        var elP = new LargeBoxPath({\r\n            shape: { points: largePoints },\r\n            __sign: 1\r\n        });\r\n        group.add(elP);\r\n        var elN = new LargeBoxPath({\r\n            shape: { points: largePoints },\r\n            __sign: -1\r\n        });\r\n        group.add(elN);\r\n        setLargeStyle$1(1, elP, seriesModel);\r\n        setLargeStyle$1(-1, elN, seriesModel);\r\n        if (incremental) {\r\n            elP.incremental = true;\r\n            elN.incremental = true;\r\n        }\r\n    }\r\n    function setLargeStyle$1(sign, el, seriesModel, data) {\r\n        var borderColor = seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0'])\r\n            || seriesModel.get(['itemStyle', sign > 0 ? 'color' : 'color0']);\r\n        var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(SKIP_PROPS);\r\n        el.useStyle(itemStyle);\r\n        el.style.fill = null;\r\n        el.style.stroke = borderColor;\r\n    }\n\n    function candlestickPreprocessor(option) {\r\n        if (!option || !isArray(option.series)) {\r\n            return;\r\n        }\r\n        each(option.series, function (seriesItem) {\r\n            if (isObject(seriesItem) && seriesItem.type === 'k') {\r\n                seriesItem.type = 'candlestick';\r\n            }\r\n        });\r\n    }\n\n    var positiveBorderColorQuery = ['itemStyle', 'borderColor'];\r\n    var negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\r\n    var positiveColorQuery = ['itemStyle', 'color'];\r\n    var negativeColorQuery = ['itemStyle', 'color0'];\r\n    var candlestickVisual = {\r\n        seriesType: 'candlestick',\r\n        plan: createRenderPlanner(),\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            function getColor(sign, model) {\r\n                return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\r\n            }\r\n            function getBorderColor(sign, model) {\r\n                return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\r\n            }\r\n            var data = seriesModel.getData();\r\n            data.setVisual('legendSymbol', 'roundRect');\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var isLargeRender = seriesModel.pipelineContext.large;\r\n            return !isLargeRender && {\r\n                progress: function (params, data) {\r\n                    var dataIndex;\r\n                    while ((dataIndex = params.next()) != null) {\r\n                        var itemModel = data.getItemModel(dataIndex);\r\n                        var sign = data.getItemLayout(dataIndex).sign;\r\n                        var style = itemModel.getItemStyle();\r\n                        style.fill = getColor(sign, itemModel);\r\n                        style.stroke = getBorderColor(sign, itemModel) || style.fill;\r\n                        var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style');\r\n                        extend(existsStyle, style);\r\n                    }\r\n                }\r\n            };\r\n        }\r\n    };\n\n    var LargeArr$1 = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\n    var candlestickLayout = {\r\n        seriesType: 'candlestick',\r\n        plan: createRenderPlanner(),\r\n        reset: function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var data = seriesModel.getData();\r\n            var candleWidth = calculateCandleWidth(seriesModel, data);\r\n            var cDimIdx = 0;\r\n            var vDimIdx = 1;\r\n            var coordDims = ['x', 'y'];\r\n            var cDim = data.mapDimension(coordDims[cDimIdx]);\r\n            var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);\r\n            var openDim = vDims[0];\r\n            var closeDim = vDims[1];\r\n            var lowestDim = vDims[2];\r\n            var highestDim = vDims[3];\r\n            data.setLayout({\r\n                candleWidth: candleWidth,\r\n                isSimpleBox: candleWidth <= 1.3\r\n            });\r\n            if (cDim == null || vDims.length < 4) {\r\n                return;\r\n            }\r\n            return {\r\n                progress: seriesModel.pipelineContext.large\r\n                    ? largeProgress : normalProgress\r\n            };\r\n            function normalProgress(params, data) {\r\n                var dataIndex;\r\n                while ((dataIndex = params.next()) != null) {\r\n                    var axisDimVal = data.get(cDim, dataIndex);\r\n                    var openVal = data.get(openDim, dataIndex);\r\n                    var closeVal = data.get(closeDim, dataIndex);\r\n                    var lowestVal = data.get(lowestDim, dataIndex);\r\n                    var highestVal = data.get(highestDim, dataIndex);\r\n                    var ocLow = Math.min(openVal, closeVal);\r\n                    var ocHigh = Math.max(openVal, closeVal);\r\n                    var ocLowPoint = getPoint(ocLow, axisDimVal);\r\n                    var ocHighPoint = getPoint(ocHigh, axisDimVal);\r\n                    var lowestPoint = getPoint(lowestVal, axisDimVal);\r\n                    var highestPoint = getPoint(highestVal, axisDimVal);\r\n                    var ends = [];\r\n                    addBodyEnd(ends, ocHighPoint, 0);\r\n                    addBodyEnd(ends, ocLowPoint, 1);\r\n                    ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\r\n                    data.setItemLayout(dataIndex, {\r\n                        sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\r\n                        initBaseline: openVal > closeVal\r\n                            ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\r\n                        ends: ends,\r\n                        brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\r\n                    });\r\n                }\r\n                function getPoint(val, axisDimVal) {\r\n                    var p = [];\r\n                    p[cDimIdx] = axisDimVal;\r\n                    p[vDimIdx] = val;\r\n                    return (isNaN(axisDimVal) || isNaN(val))\r\n                        ? [NaN, NaN]\r\n                        : coordSys.dataToPoint(p);\r\n                }\r\n                function addBodyEnd(ends, point, start) {\r\n                    var point1 = point.slice();\r\n                    var point2 = point.slice();\r\n                    point1[cDimIdx] = subPixelOptimize$1(point1[cDimIdx] + candleWidth / 2, 1, false);\r\n                    point2[cDimIdx] = subPixelOptimize$1(point2[cDimIdx] - candleWidth / 2, 1, true);\r\n                    start\r\n                        ? ends.push(point1, point2)\r\n                        : ends.push(point2, point1);\r\n                }\r\n                function makeBrushRect(lowestVal, highestVal, axisDimVal) {\r\n                    var pmin = getPoint(lowestVal, axisDimVal);\r\n                    var pmax = getPoint(highestVal, axisDimVal);\r\n                    pmin[cDimIdx] -= candleWidth / 2;\r\n                    pmax[cDimIdx] -= candleWidth / 2;\r\n                    return {\r\n                        x: pmin[0],\r\n                        y: pmin[1],\r\n                        width:  candleWidth ,\r\n                        height:  pmax[1] - pmin[1] \r\n                    };\r\n                }\r\n                function subPixelOptimizePoint(point) {\r\n                    point[cDimIdx] = subPixelOptimize$1(point[cDimIdx], 1);\r\n                    return point;\r\n                }\r\n            }\r\n            function largeProgress(params, data) {\r\n                var points = new LargeArr$1(params.count * 4);\r\n                var offset = 0;\r\n                var point;\r\n                var tmpIn = [];\r\n                var tmpOut = [];\r\n                var dataIndex;\r\n                while ((dataIndex = params.next()) != null) {\r\n                    var axisDimVal = data.get(cDim, dataIndex);\r\n                    var openVal = data.get(openDim, dataIndex);\r\n                    var closeVal = data.get(closeDim, dataIndex);\r\n                    var lowestVal = data.get(lowestDim, dataIndex);\r\n                    var highestVal = data.get(highestDim, dataIndex);\r\n                    if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\r\n                        points[offset++] = NaN;\r\n                        offset += 3;\r\n                        continue;\r\n                    }\r\n                    points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\r\n                    tmpIn[cDimIdx] = axisDimVal;\r\n                    tmpIn[vDimIdx] = lowestVal;\r\n                    point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n                    points[offset++] = point ? point[0] : NaN;\r\n                    points[offset++] = point ? point[1] : NaN;\r\n                    tmpIn[vDimIdx] = highestVal;\r\n                    point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n                    points[offset++] = point ? point[1] : NaN;\r\n                }\r\n                data.setLayout('largePoints', points);\r\n            }\r\n        }\r\n    };\r\n    function getSign(data, dataIndex, openVal, closeVal, closeDim) {\r\n        var sign;\r\n        if (openVal > closeVal) {\r\n            sign = -1;\r\n        }\r\n        else if (openVal < closeVal) {\r\n            sign = 1;\r\n        }\r\n        else {\r\n            sign = dataIndex > 0\r\n                ? (data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1)\r\n                : 1;\r\n        }\r\n        return sign;\r\n    }\r\n    function calculateCandleWidth(seriesModel, data) {\r\n        var baseAxis = seriesModel.getBaseAxis();\r\n        var extent;\r\n        var bandWidth = baseAxis.type === 'category'\r\n            ? baseAxis.getBandWidth()\r\n            : (extent = baseAxis.getExtent(),\r\n                Math.abs(extent[1] - extent[0]) / data.count());\r\n        var barMaxWidth = parsePercent$2(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\r\n        var barMinWidth = parsePercent$2(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\r\n        var barWidth = seriesModel.get('barWidth');\r\n        return barWidth != null\r\n            ? parsePercent$2(barWidth, bandWidth)\r\n            : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\r\n    }\n\n    registerPreprocessor(candlestickPreprocessor);\r\n    registerVisual(candlestickVisual);\r\n    registerLayout(candlestickLayout);\n\n    var EffectScatterSeriesModel = (function (_super) {\r\n        __extends(EffectScatterSeriesModel, _super);\r\n        function EffectScatterSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = EffectScatterSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            return _this;\r\n        }\r\n        EffectScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n        };\r\n        EffectScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.point(data.getItemLayout(dataIndex));\r\n        };\r\n        EffectScatterSeriesModel.type = 'series.effectScatter';\r\n        EffectScatterSeriesModel.dependencies = ['grid', 'polar'];\r\n        EffectScatterSeriesModel.defaultOption = {\r\n            coordinateSystem: 'cartesian2d',\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            effectType: 'ripple',\r\n            progressive: 0,\r\n            showEffectOn: 'render',\r\n            rippleEffect: {\r\n                period: 4,\r\n                scale: 2.5,\r\n                brushType: 'fill'\r\n            },\r\n            symbolSize: 10\r\n        };\r\n        return EffectScatterSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(EffectScatterSeriesModel);\n\n    var EFFECT_RIPPLE_NUMBER = 3;\r\n    function normalizeSymbolSize$1(symbolSize) {\r\n        if (!isArray(symbolSize)) {\r\n            symbolSize = [+symbolSize, +symbolSize];\r\n        }\r\n        return symbolSize;\r\n    }\r\n    function updateRipplePath(rippleGroup, effectCfg) {\r\n        var color = effectCfg.rippleEffectColor || effectCfg.color;\r\n        rippleGroup.eachChild(function (ripplePath) {\r\n            ripplePath.attr({\r\n                z: effectCfg.z,\r\n                zlevel: effectCfg.zlevel,\r\n                style: {\r\n                    stroke: effectCfg.brushType === 'stroke' ? color : null,\r\n                    fill: effectCfg.brushType === 'fill' ? color : null\r\n                }\r\n            });\r\n        });\r\n    }\r\n    var EffectSymbol = (function (_super) {\r\n        __extends(EffectSymbol, _super);\r\n        function EffectSymbol(data, idx) {\r\n            var _this = _super.call(this) || this;\r\n            var symbol = new Symbol(data, idx);\r\n            var rippleGroup = new Group();\r\n            _this.add(symbol);\r\n            _this.add(rippleGroup);\r\n            _this.updateData(data, idx);\r\n            return _this;\r\n        }\r\n        EffectSymbol.prototype.stopEffectAnimation = function () {\r\n            this.childAt(1).removeAll();\r\n        };\r\n        EffectSymbol.prototype.startEffectAnimation = function (effectCfg) {\r\n            var symbolType = effectCfg.symbolType;\r\n            var color = effectCfg.color;\r\n            var rippleGroup = this.childAt(1);\r\n            for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\r\n                var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\r\n                ripplePath.attr({\r\n                    style: {\r\n                        strokeNoScale: true\r\n                    },\r\n                    z2: 99,\r\n                    silent: true,\r\n                    scaleX: 0.5,\r\n                    scaleY: 0.5\r\n                });\r\n                var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset;\r\n                ripplePath.animate('', true)\r\n                    .when(effectCfg.period, {\r\n                    scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\r\n                })\r\n                    .delay(delay)\r\n                    .start();\r\n                ripplePath.animateStyle(true)\r\n                    .when(effectCfg.period, {\r\n                    opacity: 0\r\n                })\r\n                    .delay(delay)\r\n                    .start();\r\n                rippleGroup.add(ripplePath);\r\n            }\r\n            updateRipplePath(rippleGroup, effectCfg);\r\n        };\r\n        EffectSymbol.prototype.updateEffectAnimation = function (effectCfg) {\r\n            var oldEffectCfg = this._effectCfg;\r\n            var rippleGroup = this.childAt(1);\r\n            var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\r\n            for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\r\n                var propName = DIFFICULT_PROPS[i];\r\n                if (oldEffectCfg[propName] !== effectCfg[propName]) {\r\n                    this.stopEffectAnimation();\r\n                    this.startEffectAnimation(effectCfg);\r\n                    return;\r\n                }\r\n            }\r\n            updateRipplePath(rippleGroup, effectCfg);\r\n        };\r\n        EffectSymbol.prototype.highlight = function () {\r\n            enterEmphasis(this);\r\n        };\r\n        EffectSymbol.prototype.downplay = function () {\r\n            leaveEmphasis(this);\r\n        };\r\n        EffectSymbol.prototype.updateData = function (data, idx) {\r\n            var _this = this;\r\n            var seriesModel = data.hostModel;\r\n            this.childAt(0).updateData(data, idx);\r\n            var rippleGroup = this.childAt(1);\r\n            var itemModel = data.getItemModel(idx);\r\n            var symbolType = data.getItemVisual(idx, 'symbol');\r\n            var symbolSize = normalizeSymbolSize$1(data.getItemVisual(idx, 'symbolSize'));\r\n            var symbolStyle = data.getItemVisual(idx, 'style');\r\n            var color = symbolStyle && symbolStyle.fill;\r\n            rippleGroup.setScale(symbolSize);\r\n            rippleGroup.traverse(function (ripplePath) {\r\n                ripplePath.setStyle('fill', color);\r\n            });\r\n            var symbolOffset = itemModel.getShallow('symbolOffset');\r\n            if (symbolOffset) {\r\n                rippleGroup.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n                rippleGroup.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n            }\r\n            var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n            rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\r\n            var effectCfg = {};\r\n            effectCfg.showEffectOn = seriesModel.get('showEffectOn');\r\n            effectCfg.rippleScale = itemModel.get(['rippleEffect', 'scale']);\r\n            effectCfg.brushType = itemModel.get(['rippleEffect', 'brushType']);\r\n            effectCfg.period = itemModel.get(['rippleEffect', 'period']) * 1000;\r\n            effectCfg.effectOffset = idx / data.count();\r\n            effectCfg.z = seriesModel.getShallow('z') || 0;\r\n            effectCfg.zlevel = seriesModel.getShallow('zlevel') || 0;\r\n            effectCfg.symbolType = symbolType;\r\n            effectCfg.color = color;\r\n            effectCfg.rippleEffectColor = itemModel.get(['rippleEffect', 'color']);\r\n            this.off('mouseover').off('mouseout').off('emphasis').off('normal');\r\n            if (effectCfg.showEffectOn === 'render') {\r\n                this._effectCfg\r\n                    ? this.updateEffectAnimation(effectCfg)\r\n                    : this.startEffectAnimation(effectCfg);\r\n                this._effectCfg = effectCfg;\r\n            }\r\n            else {\r\n                this._effectCfg = null;\r\n                this.stopEffectAnimation();\r\n                this.onHoverStateChange = function (toState) {\r\n                    if (toState === 'emphasis') {\r\n                        if (effectCfg.showEffectOn !== 'render') {\r\n                            _this.startEffectAnimation(effectCfg);\r\n                        }\r\n                    }\r\n                    else if (toState === 'normal') {\r\n                        if (effectCfg.showEffectOn !== 'render') {\r\n                            _this.stopEffectAnimation();\r\n                        }\r\n                    }\r\n                };\r\n            }\r\n            this._effectCfg = effectCfg;\r\n            enableHoverEmphasis(this);\r\n        };\r\n        EffectSymbol.prototype.fadeOut = function (cb) {\r\n            this.off('mouseover').off('mouseout');\r\n            cb && cb();\r\n        };\r\n        return EffectSymbol;\r\n    }(Group));\r\n    inherits(EffectSymbol, Group);\n\n    var EffectScatterView = (function (_super) {\r\n        __extends(EffectScatterView, _super);\r\n        function EffectScatterView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = EffectScatterView.type;\r\n            return _this;\r\n        }\r\n        EffectScatterView.prototype.init = function () {\r\n            this._symbolDraw = new SymbolDraw(EffectSymbol);\r\n        };\r\n        EffectScatterView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var effectSymbolDraw = this._symbolDraw;\r\n            effectSymbolDraw.updateData(data);\r\n            this.group.add(effectSymbolDraw.group);\r\n        };\r\n        EffectScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            this.group.dirty();\r\n            var res = pointsLayout('').reset(seriesModel, ecModel, api);\r\n            if (res.progress) {\r\n                res.progress({\r\n                    start: 0,\r\n                    end: data.count(),\r\n                    count: data.count()\r\n                }, data);\r\n            }\r\n            this._symbolDraw.updateLayout();\r\n        };\r\n        EffectScatterView.prototype._updateGroupTransform = function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && coordSys.getRoamTransform) {\r\n                this.group.transform = clone$2(coordSys.getRoamTransform());\r\n                this.group.decomposeTransform();\r\n            }\r\n        };\r\n        EffectScatterView.prototype.remove = function (ecModel, api) {\r\n            this._symbolDraw && this._symbolDraw.remove(true);\r\n        };\r\n        EffectScatterView.type = 'effectScatter';\r\n        return EffectScatterView;\r\n    }(ChartView));\r\n    ChartView.registerClass(EffectScatterView);\n\n    registerLayout(pointsLayout('effectScatter'));\n\n    var Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\r\n    var Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\r\n    function compatEc2(seriesOpt) {\r\n        var data = seriesOpt.data;\r\n        if (data && data[0] && data[0][0] && data[0][0].coord) {\r\n            if (__DEV__) {\r\n                console.warn('Lines data configuration has been changed to'\r\n                    + ' { coords:[[1,2],[2,3]] }');\r\n            }\r\n            seriesOpt.data = map(data, function (itemOpt) {\r\n                var coords = [\r\n                    itemOpt[0].coord, itemOpt[1].coord\r\n                ];\r\n                var target = {\r\n                    coords: coords\r\n                };\r\n                if (itemOpt[0].name) {\r\n                    target.fromName = itemOpt[0].name;\r\n                }\r\n                if (itemOpt[1].name) {\r\n                    target.toName = itemOpt[1].name;\r\n                }\r\n                return mergeAll([target, itemOpt[0], itemOpt[1]]);\r\n            });\r\n        }\r\n    }\r\n    var LinesSeriesModel = (function (_super) {\r\n        __extends(LinesSeriesModel, _super);\r\n        function LinesSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LinesSeriesModel.type;\r\n            _this.visualStyleAccessPath = 'lineStyle';\r\n            _this.visualDrawType = 'stroke';\r\n            return _this;\r\n        }\r\n        LinesSeriesModel.prototype.init = function (option) {\r\n            option.data = option.data || [];\r\n            compatEc2(option);\r\n            var result = this._processFlatCoordsArray(option.data);\r\n            this._flatCoords = result.flatCoords;\r\n            this._flatCoordsOffset = result.flatCoordsOffset;\r\n            if (result.flatCoords) {\r\n                option.data = new Float32Array(result.count);\r\n            }\r\n            _super.prototype.init.apply(this, arguments);\r\n        };\r\n        LinesSeriesModel.prototype.mergeOption = function (option) {\r\n            compatEc2(option);\r\n            if (option.data) {\r\n                var result = this._processFlatCoordsArray(option.data);\r\n                this._flatCoords = result.flatCoords;\r\n                this._flatCoordsOffset = result.flatCoordsOffset;\r\n                if (result.flatCoords) {\r\n                    option.data = new Float32Array(result.count);\r\n                }\r\n            }\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n        };\r\n        LinesSeriesModel.prototype.appendData = function (params) {\r\n            var result = this._processFlatCoordsArray(params.data);\r\n            if (result.flatCoords) {\r\n                if (!this._flatCoords) {\r\n                    this._flatCoords = result.flatCoords;\r\n                    this._flatCoordsOffset = result.flatCoordsOffset;\r\n                }\r\n                else {\r\n                    this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\r\n                    this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\r\n                }\r\n                params.data = new Float32Array(result.count);\r\n            }\r\n            this.getRawData().appendData(params.data);\r\n        };\r\n        LinesSeriesModel.prototype._getCoordsFromItemModel = function (idx) {\r\n            var itemModel = this.getData().getItemModel(idx);\r\n            var coords = (itemModel.option instanceof Array)\r\n                ? itemModel.option : itemModel.getShallow('coords');\r\n            if (__DEV__) {\r\n                if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) {\r\n                    throw new Error('Invalid coords ' + JSON.stringify(coords) + '. Lines must have 2d coords array in data item.');\r\n                }\r\n            }\r\n            return coords;\r\n        };\r\n        LinesSeriesModel.prototype.getLineCoordsCount = function (idx) {\r\n            if (this._flatCoordsOffset) {\r\n                return this._flatCoordsOffset[idx * 2 + 1];\r\n            }\r\n            else {\r\n                return this._getCoordsFromItemModel(idx).length;\r\n            }\r\n        };\r\n        LinesSeriesModel.prototype.getLineCoords = function (idx, out) {\r\n            if (this._flatCoordsOffset) {\r\n                var offset = this._flatCoordsOffset[idx * 2];\r\n                var len = this._flatCoordsOffset[idx * 2 + 1];\r\n                for (var i = 0; i < len; i++) {\r\n                    out[i] = out[i] || [];\r\n                    out[i][0] = this._flatCoords[offset + i * 2];\r\n                    out[i][1] = this._flatCoords[offset + i * 2 + 1];\r\n                }\r\n                return len;\r\n            }\r\n            else {\r\n                var coords = this._getCoordsFromItemModel(idx);\r\n                for (var i = 0; i < coords.length; i++) {\r\n                    out[i] = out[i] || [];\r\n                    out[i][0] = coords[i][0];\r\n                    out[i][1] = coords[i][1];\r\n                }\r\n                return coords.length;\r\n            }\r\n        };\r\n        LinesSeriesModel.prototype._processFlatCoordsArray = function (data) {\r\n            var startOffset = 0;\r\n            if (this._flatCoords) {\r\n                startOffset = this._flatCoords.length;\r\n            }\r\n            if (typeof data[0] === 'number') {\r\n                var len = data.length;\r\n                var coordsOffsetAndLenStorage = new Uint32Arr(len);\r\n                var coordsStorage = new Float64Arr(len);\r\n                var coordsCursor = 0;\r\n                var offsetCursor = 0;\r\n                var dataCount = 0;\r\n                for (var i = 0; i < len;) {\r\n                    dataCount++;\r\n                    var count = data[i++];\r\n                    coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset;\r\n                    coordsOffsetAndLenStorage[offsetCursor++] = count;\r\n                    for (var k = 0; k < count; k++) {\r\n                        var x = data[i++];\r\n                        var y = data[i++];\r\n                        coordsStorage[coordsCursor++] = x;\r\n                        coordsStorage[coordsCursor++] = y;\r\n                        if (i > len) {\r\n                            if (__DEV__) {\r\n                                throw new Error('Invalid data format.');\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return {\r\n                    flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\r\n                    flatCoords: coordsStorage,\r\n                    count: dataCount\r\n                };\r\n            }\r\n            return {\r\n                flatCoordsOffset: null,\r\n                flatCoords: null,\r\n                count: data.length\r\n            };\r\n        };\r\n        LinesSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            if (__DEV__) {\r\n                var CoordSys = CoordinateSystemManager.get(option.coordinateSystem);\r\n                if (!CoordSys) {\r\n                    throw new Error('Unkown coordinate system ' + option.coordinateSystem);\r\n                }\r\n            }\r\n            var lineData = new List(['value'], this);\r\n            lineData.hasItemOption = false;\r\n            lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\r\n                if (dataItem instanceof Array) {\r\n                    return NaN;\r\n                }\r\n                else {\r\n                    lineData.hasItemOption = true;\r\n                    var value = dataItem.value;\r\n                    if (value != null) {\r\n                        return value instanceof Array ? value[dimIndex] : value;\r\n                    }\r\n                }\r\n            });\r\n            return lineData;\r\n        };\r\n        LinesSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var data = this.getData();\r\n            var itemModel = data.getItemModel(dataIndex);\r\n            var name = itemModel.get('name');\r\n            if (name) {\r\n                return name;\r\n            }\r\n            var fromName = itemModel.get('fromName');\r\n            var toName = itemModel.get('toName');\r\n            var nameArr = [];\r\n            fromName != null && nameArr.push(fromName);\r\n            toName != null && nameArr.push(toName);\r\n            return createTooltipMarkup('nameValue', {\r\n                name: nameArr.join(' > ')\r\n            });\r\n        };\r\n        LinesSeriesModel.prototype.preventIncremental = function () {\r\n            return !!this.get(['effect', 'show']);\r\n        };\r\n        LinesSeriesModel.prototype.getProgressive = function () {\r\n            var progressive = this.option.progressive;\r\n            if (progressive == null) {\r\n                return this.option.large ? 1e4 : this.get('progressive');\r\n            }\r\n            return progressive;\r\n        };\r\n        LinesSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.option.progressiveThreshold;\r\n            if (progressiveThreshold == null) {\r\n                return this.option.large ? 2e4 : this.get('progressiveThreshold');\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        LinesSeriesModel.type = 'series.lines';\r\n        LinesSeriesModel.dependencies = ['grid', 'polar', 'geo', 'calendar'];\r\n        LinesSeriesModel.defaultOption = {\r\n            coordinateSystem: 'geo',\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            xAxisIndex: 0,\r\n            yAxisIndex: 0,\r\n            symbol: ['none', 'none'],\r\n            symbolSize: [10, 10],\r\n            geoIndex: 0,\r\n            effect: {\r\n                show: false,\r\n                period: 4,\r\n                constantSpeed: 0,\r\n                symbol: 'circle',\r\n                symbolSize: 3,\r\n                loop: true,\r\n                trailLength: 0.2\r\n            },\r\n            large: false,\r\n            largeThreshold: 2000,\r\n            polyline: false,\r\n            clip: true,\r\n            label: {\r\n                show: false,\r\n                position: 'end'\r\n            },\r\n            lineStyle: {\r\n                opacity: 0.5\r\n            }\r\n        };\r\n        return LinesSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(LinesSeriesModel);\n\n    var EffectLine = (function (_super) {\r\n        __extends(EffectLine, _super);\r\n        function EffectLine(lineData, idx, seriesScope) {\r\n            var _this = _super.call(this) || this;\r\n            _this.add(_this.createLine(lineData, idx, seriesScope));\r\n            _this._updateEffectSymbol(lineData, idx);\r\n            return _this;\r\n        }\r\n        EffectLine.prototype.createLine = function (lineData, idx, seriesScope) {\r\n            return new Line$1(lineData, idx, seriesScope);\r\n        };\r\n        EffectLine.prototype._updateEffectSymbol = function (lineData, idx) {\r\n            var itemModel = lineData.getItemModel(idx);\r\n            var effectModel = itemModel.getModel('effect');\r\n            var size = effectModel.get('symbolSize');\r\n            var symbolType = effectModel.get('symbol');\r\n            if (!isArray(size)) {\r\n                size = [size, size];\r\n            }\r\n            var lineStyle = lineData.getItemVisual(idx, 'style');\r\n            var color = effectModel.get('color') || (lineStyle && lineStyle.stroke);\r\n            var symbol = this.childAt(1);\r\n            if (this._symbolType !== symbolType) {\r\n                this.remove(symbol);\r\n                symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\r\n                symbol.z2 = 100;\r\n                symbol.culling = true;\r\n                this.add(symbol);\r\n            }\r\n            if (!symbol) {\r\n                return;\r\n            }\r\n            symbol.setStyle('shadowColor', color);\r\n            symbol.setStyle(effectModel.getItemStyle(['color']));\r\n            symbol.scaleX = size[0];\r\n            symbol.scaleY = size[1];\r\n            symbol.setColor(color);\r\n            this._symbolType = symbolType;\r\n            this._symbolScale = size;\r\n            this._updateEffectAnimation(lineData, effectModel, idx);\r\n        };\r\n        EffectLine.prototype._updateEffectAnimation = function (lineData, effectModel, idx) {\r\n            var symbol = this.childAt(1);\r\n            if (!symbol) {\r\n                return;\r\n            }\r\n            var self = this;\r\n            var points = lineData.getItemLayout(idx);\r\n            var period = effectModel.get('period') * 1000;\r\n            var loop = effectModel.get('loop');\r\n            var constantSpeed = effectModel.get('constantSpeed');\r\n            var delayExpr = retrieve(effectModel.get('delay'), function (idx) {\r\n                return idx / lineData.count() * period / 3;\r\n            });\r\n            symbol.ignore = true;\r\n            this._updateAnimationPoints(symbol, points);\r\n            if (constantSpeed > 0) {\r\n                period = this._getLineLength(symbol) / constantSpeed * 1000;\r\n            }\r\n            if (period !== this._period || loop !== this._loop) {\r\n                symbol.stopAnimation();\r\n                if (period > 0) {\r\n                    var delayNum = void 0;\r\n                    if (typeof delayExpr === 'function') {\r\n                        delayNum = delayExpr(idx);\r\n                    }\r\n                    else {\r\n                        delayNum = delayExpr;\r\n                    }\r\n                    if (symbol.__t > 0) {\r\n                        delayNum = -period * symbol.__t;\r\n                    }\r\n                    symbol.__t = 0;\r\n                    var animator = symbol.animate('', loop)\r\n                        .when(period, {\r\n                        __t: 1\r\n                    })\r\n                        .delay(delayNum)\r\n                        .during(function () {\r\n                        self._updateSymbolPosition(symbol);\r\n                    });\r\n                    if (!loop) {\r\n                        animator.done(function () {\r\n                            self.remove(symbol);\r\n                        });\r\n                    }\r\n                    animator.start();\r\n                }\r\n            }\r\n            this._period = period;\r\n            this._loop = loop;\r\n        };\r\n        EffectLine.prototype._getLineLength = function (symbol) {\r\n            return (dist(symbol.__p1, symbol.__cp1)\r\n                + dist(symbol.__cp1, symbol.__p2));\r\n        };\r\n        EffectLine.prototype._updateAnimationPoints = function (symbol, points) {\r\n            symbol.__p1 = points[0];\r\n            symbol.__p2 = points[1];\r\n            symbol.__cp1 = points[2] || [\r\n                (points[0][0] + points[1][0]) / 2,\r\n                (points[0][1] + points[1][1]) / 2\r\n            ];\r\n        };\r\n        EffectLine.prototype.updateData = function (lineData, idx, seriesScope) {\r\n            this.childAt(0).updateData(lineData, idx, seriesScope);\r\n            this._updateEffectSymbol(lineData, idx);\r\n        };\r\n        EffectLine.prototype._updateSymbolPosition = function (symbol) {\r\n            var p1 = symbol.__p1;\r\n            var p2 = symbol.__p2;\r\n            var cp1 = symbol.__cp1;\r\n            var t = symbol.__t;\r\n            var pos = [symbol.x, symbol.y];\r\n            var lastPos = pos.slice();\r\n            var quadraticAt$1 = quadraticAt;\r\n            var quadraticDerivativeAt$1 = quadraticDerivativeAt;\r\n            pos[0] = quadraticAt$1(p1[0], cp1[0], p2[0], t);\r\n            pos[1] = quadraticAt$1(p1[1], cp1[1], p2[1], t);\r\n            var tx = quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t);\r\n            var ty = quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t);\r\n            symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\r\n            if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\r\n                if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\r\n                    symbol.scaleY = dist(lastPos, pos) * 1.05;\r\n                    if (t === 1) {\r\n                        pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\r\n                        pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\r\n                    }\r\n                }\r\n                else if (symbol.__lastT === 1) {\r\n                    symbol.scaleY = 2 * dist(p1, pos);\r\n                }\r\n                else {\r\n                    symbol.scaleY = this._symbolScale[1];\r\n                }\r\n            }\r\n            symbol.__lastT = symbol.__t;\r\n            symbol.ignore = false;\r\n            symbol.x = pos[0];\r\n            symbol.y = pos[1];\r\n        };\r\n        EffectLine.prototype.updateLayout = function (lineData, idx) {\r\n            this.childAt(0).updateLayout(lineData, idx);\r\n            var effectModel = lineData.getItemModel(idx).getModel('effect');\r\n            this._updateEffectAnimation(lineData, effectModel, idx);\r\n        };\r\n        return EffectLine;\r\n    }(Group));\n\n    var Polyline$1 = (function (_super) {\r\n        __extends(Polyline$1, _super);\r\n        function Polyline$1(lineData, idx, seriesScope) {\r\n            var _this = _super.call(this) || this;\r\n            _this._createPolyline(lineData, idx, seriesScope);\r\n            return _this;\r\n        }\r\n        Polyline$1.prototype._createPolyline = function (lineData, idx, seriesScope) {\r\n            var points = lineData.getItemLayout(idx);\r\n            var line = new Polyline({\r\n                shape: {\r\n                    points: points\r\n                }\r\n            });\r\n            this.add(line);\r\n            this._updateCommonStl(lineData, idx, seriesScope);\r\n        };\r\n        Polyline$1.prototype.updateData = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var line = this.childAt(0);\r\n            var target = {\r\n                shape: {\r\n                    points: lineData.getItemLayout(idx)\r\n                }\r\n            };\r\n            updateProps(line, target, seriesModel, idx);\r\n            this._updateCommonStl(lineData, idx, seriesScope);\r\n        };\r\n        Polyline$1.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\r\n            var line = this.childAt(0);\r\n            var itemModel = lineData.getItemModel(idx);\r\n            var hoverLineStyle = seriesScope && seriesScope.emphasisLineStyle;\r\n            if (!seriesScope || lineData.hasItemOption) {\r\n                hoverLineStyle = itemModel.getModel(['emphasis', 'lineStyle']).getLineStyle();\r\n            }\r\n            line.useStyle(lineData.getItemVisual(idx, 'style'));\r\n            line.style.fill = null;\r\n            line.style.strokeNoScale = true;\r\n            var lineEmphasisState = line.ensureState('emphasis');\r\n            lineEmphasisState.style = hoverLineStyle;\r\n            enableHoverEmphasis(this);\r\n        };\r\n        Polyline$1.prototype.updateLayout = function (lineData, idx) {\r\n            var polyline = this.childAt(0);\r\n            polyline.setShape('points', lineData.getItemLayout(idx));\r\n        };\r\n        return Polyline$1;\r\n    }(Group));\n\n    var EffectPolyline = (function (_super) {\r\n        __extends(EffectPolyline, _super);\r\n        function EffectPolyline() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this._lastFrame = 0;\r\n            _this._lastFramePercent = 0;\r\n            return _this;\r\n        }\r\n        EffectPolyline.prototype.createLine = function (lineData, idx, seriesScope) {\r\n            return new Polyline$1(lineData, idx, seriesScope);\r\n        };\r\n        EffectPolyline.prototype._updateAnimationPoints = function (symbol, points) {\r\n            this._points = points;\r\n            var accLenArr = [0];\r\n            var len = 0;\r\n            for (var i = 1; i < points.length; i++) {\r\n                var p1 = points[i - 1];\r\n                var p2 = points[i];\r\n                len += dist(p1, p2);\r\n                accLenArr.push(len);\r\n            }\r\n            if (len === 0) {\r\n                this._length = 0;\r\n                return;\r\n            }\r\n            for (var i = 0; i < accLenArr.length; i++) {\r\n                accLenArr[i] /= len;\r\n            }\r\n            this._offsets = accLenArr;\r\n            this._length = len;\r\n        };\r\n        EffectPolyline.prototype._getLineLength = function () {\r\n            return this._length;\r\n        };\r\n        EffectPolyline.prototype._updateSymbolPosition = function (symbol) {\r\n            var t = symbol.__t;\r\n            var points = this._points;\r\n            var offsets = this._offsets;\r\n            var len = points.length;\r\n            if (!offsets) {\r\n                return;\r\n            }\r\n            var lastFrame = this._lastFrame;\r\n            var frame;\r\n            if (t < this._lastFramePercent) {\r\n                var start = Math.min(lastFrame + 1, len - 1);\r\n                for (frame = start; frame >= 0; frame--) {\r\n                    if (offsets[frame] <= t) {\r\n                        break;\r\n                    }\r\n                }\r\n                frame = Math.min(frame, len - 2);\r\n            }\r\n            else {\r\n                for (frame = lastFrame; frame < len; frame++) {\r\n                    if (offsets[frame] > t) {\r\n                        break;\r\n                    }\r\n                }\r\n                frame = Math.min(frame - 1, len - 2);\r\n            }\r\n            var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);\r\n            var p0 = points[frame];\r\n            var p1 = points[frame + 1];\r\n            symbol.x = p0[0] * (1 - p) + p * p1[0];\r\n            symbol.y = p0[1] * (1 - p) + p * p1[1];\r\n            var tx = p1[0] - p0[0];\r\n            var ty = p1[1] - p0[1];\r\n            symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\r\n            this._lastFrame = frame;\r\n            this._lastFramePercent = t;\r\n            symbol.ignore = false;\r\n        };\r\n        return EffectPolyline;\r\n    }(EffectLine));\n\n    var LargeLinesPathShape = (function () {\r\n        function LargeLinesPathShape() {\r\n            this.polyline = false;\r\n            this.curveness = 0;\r\n            this.segs = [];\r\n        }\r\n        return LargeLinesPathShape;\r\n    }());\r\n    var LargeLinesPath = (function (_super) {\r\n        __extends(LargeLinesPath, _super);\r\n        function LargeLinesPath(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        LargeLinesPath.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        LargeLinesPath.prototype.getDefaultShape = function () {\r\n            return new LargeLinesPathShape();\r\n        };\r\n        LargeLinesPath.prototype.buildPath = function (ctx, shape) {\r\n            var segs = shape.segs;\r\n            var curveness = shape.curveness;\r\n            if (shape.polyline) {\r\n                for (var i = 0; i < segs.length;) {\r\n                    var count = segs[i++];\r\n                    if (count > 0) {\r\n                        ctx.moveTo(segs[i++], segs[i++]);\r\n                        for (var k = 1; k < count; k++) {\r\n                            ctx.lineTo(segs[i++], segs[i++]);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var i = 0; i < segs.length;) {\r\n                    var x0 = segs[i++];\r\n                    var y0 = segs[i++];\r\n                    var x1 = segs[i++];\r\n                    var y1 = segs[i++];\r\n                    ctx.moveTo(x0, y0);\r\n                    if (curveness > 0) {\r\n                        var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\r\n                        var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\r\n                        ctx.quadraticCurveTo(x2, y2, x1, y1);\r\n                    }\r\n                    else {\r\n                        ctx.lineTo(x1, y1);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        LargeLinesPath.prototype.findDataIndex = function (x, y) {\r\n            var shape = this.shape;\r\n            var segs = shape.segs;\r\n            var curveness = shape.curveness;\r\n            var lineWidth = this.style.lineWidth;\r\n            if (shape.polyline) {\r\n                var dataIndex = 0;\r\n                for (var i = 0; i < segs.length;) {\r\n                    var count = segs[i++];\r\n                    if (count > 0) {\r\n                        var x0 = segs[i++];\r\n                        var y0 = segs[i++];\r\n                        for (var k = 1; k < count; k++) {\r\n                            var x1 = segs[i++];\r\n                            var y1 = segs[i++];\r\n                            if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {\r\n                                return dataIndex;\r\n                            }\r\n                        }\r\n                    }\r\n                    dataIndex++;\r\n                }\r\n            }\r\n            else {\r\n                var dataIndex = 0;\r\n                for (var i = 0; i < segs.length;) {\r\n                    var x0 = segs[i++];\r\n                    var y0 = segs[i++];\r\n                    var x1 = segs[i++];\r\n                    var y1 = segs[i++];\r\n                    if (curveness > 0) {\r\n                        var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\r\n                        var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\r\n                        if (containStroke$2(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) {\r\n                            return dataIndex;\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {\r\n                            return dataIndex;\r\n                        }\r\n                    }\r\n                    dataIndex++;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        return LargeLinesPath;\r\n    }(Path));\r\n    var LargeLineDraw = (function () {\r\n        function LargeLineDraw() {\r\n            this.group = new Group();\r\n        }\r\n        LargeLineDraw.prototype.isPersistent = function () {\r\n            return !this._incremental;\r\n        };\r\n        LargeLineDraw.prototype.updateData = function (data) {\r\n            this.group.removeAll();\r\n            var lineEl = new LargeLinesPath({\r\n                rectHover: true,\r\n                cursor: 'default'\r\n            });\r\n            lineEl.setShape({\r\n                segs: data.getLayout('linesPoints')\r\n            });\r\n            this._setCommon(lineEl, data);\r\n            this.group.add(lineEl);\r\n            this._incremental = null;\r\n        };\r\n        LargeLineDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this.group.removeAll();\r\n            this._clearIncremental();\r\n            if (data.count() > 5e5) {\r\n                if (!this._incremental) {\r\n                    this._incremental = new IncrementalDisplayble({\r\n                        silent: true\r\n                    });\r\n                }\r\n                this.group.add(this._incremental);\r\n            }\r\n            else {\r\n                this._incremental = null;\r\n            }\r\n        };\r\n        LargeLineDraw.prototype.incrementalUpdate = function (taskParams, data) {\r\n            var lineEl = new LargeLinesPath();\r\n            lineEl.setShape({\r\n                segs: data.getLayout('linesPoints')\r\n            });\r\n            this._setCommon(lineEl, data, !!this._incremental);\r\n            if (!this._incremental) {\r\n                lineEl.rectHover = true;\r\n                lineEl.cursor = 'default';\r\n                lineEl.__startIndex = taskParams.start;\r\n                this.group.add(lineEl);\r\n            }\r\n            else {\r\n                this._incremental.addDisplayable(lineEl, true);\r\n            }\r\n        };\r\n        LargeLineDraw.prototype.remove = function () {\r\n            this._clearIncremental();\r\n            this._incremental = null;\r\n            this.group.removeAll();\r\n        };\r\n        LargeLineDraw.prototype._setCommon = function (lineEl, data, isIncremental) {\r\n            var hostModel = data.hostModel;\r\n            lineEl.setShape({\r\n                polyline: hostModel.get('polyline'),\r\n                curveness: hostModel.get(['lineStyle', 'curveness'])\r\n            });\r\n            lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\r\n            lineEl.style.strokeNoScale = true;\r\n            var style = data.getVisual('style');\r\n            if (style && style.stroke) {\r\n                lineEl.setStyle('stroke', style.stroke);\r\n            }\r\n            lineEl.setStyle('fill', null);\r\n            if (!isIncremental) {\r\n                var ecData_1 = getECData(lineEl);\r\n                ecData_1.seriesIndex = hostModel.seriesIndex;\r\n                lineEl.on('mousemove', function (e) {\r\n                    ecData_1.dataIndex = null;\r\n                    var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\r\n                    if (dataIndex > 0) {\r\n                        ecData_1.dataIndex = dataIndex + lineEl.__startIndex;\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LargeLineDraw.prototype._clearIncremental = function () {\r\n            var incremental = this._incremental;\r\n            if (incremental) {\r\n                incremental.clearDisplaybles();\r\n            }\r\n        };\r\n        return LargeLineDraw;\r\n    }());\n\n    var linesLayout = {\r\n        seriesType: 'lines',\r\n        plan: createRenderPlanner(),\r\n        reset: function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var isPolyline = seriesModel.get('polyline');\r\n            var isLarge = seriesModel.pipelineContext.large;\r\n            return {\r\n                progress: function (params, lineData) {\r\n                    var lineCoords = [];\r\n                    if (isLarge) {\r\n                        var points = void 0;\r\n                        var segCount = params.end - params.start;\r\n                        if (isPolyline) {\r\n                            var totalCoordsCount = 0;\r\n                            for (var i = params.start; i < params.end; i++) {\r\n                                totalCoordsCount += seriesModel.getLineCoordsCount(i);\r\n                            }\r\n                            points = new Float32Array(segCount + totalCoordsCount * 2);\r\n                        }\r\n                        else {\r\n                            points = new Float32Array(segCount * 4);\r\n                        }\r\n                        var offset = 0;\r\n                        var pt = [];\r\n                        for (var i = params.start; i < params.end; i++) {\r\n                            var len = seriesModel.getLineCoords(i, lineCoords);\r\n                            if (isPolyline) {\r\n                                points[offset++] = len;\r\n                            }\r\n                            for (var k = 0; k < len; k++) {\r\n                                pt = coordSys.dataToPoint(lineCoords[k], false, pt);\r\n                                points[offset++] = pt[0];\r\n                                points[offset++] = pt[1];\r\n                            }\r\n                        }\r\n                        lineData.setLayout('linesPoints', points);\r\n                    }\r\n                    else {\r\n                        for (var i = params.start; i < params.end; i++) {\r\n                            var itemModel = lineData.getItemModel(i);\r\n                            var len = seriesModel.getLineCoords(i, lineCoords);\r\n                            var pts = [];\r\n                            if (isPolyline) {\r\n                                for (var j = 0; j < len; j++) {\r\n                                    pts.push(coordSys.dataToPoint(lineCoords[j]));\r\n                                }\r\n                            }\r\n                            else {\r\n                                pts[0] = coordSys.dataToPoint(lineCoords[0]);\r\n                                pts[1] = coordSys.dataToPoint(lineCoords[1]);\r\n                                var curveness = itemModel.get(['lineStyle', 'curveness']);\r\n                                if (+curveness) {\r\n                                    pts[2] = [\r\n                                        (pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness,\r\n                                        (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness\r\n                                    ];\r\n                                }\r\n                            }\r\n                            lineData.setItemLayout(i, pts);\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n        }\r\n    };\n\n    var LinesView = (function (_super) {\r\n        __extends(LinesView, _super);\r\n        function LinesView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LinesView.type;\r\n            return _this;\r\n        }\r\n        LinesView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var lineDraw = this._updateLineDraw(data, seriesModel);\r\n            var zlevel = seriesModel.get('zlevel');\r\n            var trailLength = seriesModel.get(['effect', 'trailLength']);\r\n            var zr = api.getZr();\r\n            var isSvg = zr.painter.getType() === 'svg';\r\n            if (!isSvg) {\r\n                zr.painter.getLayer(zlevel).clear(true);\r\n            }\r\n            if (this._lastZlevel != null && !isSvg) {\r\n                zr.configLayer(this._lastZlevel, {\r\n                    motionBlur: false\r\n                });\r\n            }\r\n            if (this._showEffect(seriesModel) && trailLength) {\r\n                if (__DEV__) {\r\n                    var notInIndividual_1 = false;\r\n                    ecModel.eachSeries(function (otherSeriesModel) {\r\n                        if (otherSeriesModel !== seriesModel && otherSeriesModel.get('zlevel') === zlevel) {\r\n                            notInIndividual_1 = true;\r\n                        }\r\n                    });\r\n                    notInIndividual_1 && console.warn('Lines with trail effect should have an individual zlevel');\r\n                }\r\n                if (!isSvg) {\r\n                    zr.configLayer(zlevel, {\r\n                        motionBlur: true,\r\n                        lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\r\n                    });\r\n                }\r\n            }\r\n            lineDraw.updateData(data);\r\n            var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\r\n            if (clipPath) {\r\n                this.group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                this.group.removeClipPath();\r\n            }\r\n            this._lastZlevel = zlevel;\r\n            this._finished = true;\r\n        };\r\n        LinesView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var lineDraw = this._updateLineDraw(data, seriesModel);\r\n            lineDraw.incrementalPrepareUpdate(data);\r\n            this._clearLayer(api);\r\n            this._finished = false;\r\n        };\r\n        LinesView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n            this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\r\n            this._finished = taskParams.end === seriesModel.getData().count();\r\n        };\r\n        LinesView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\r\n                return {\r\n                    update: true\r\n                };\r\n            }\r\n            else {\r\n                var res = linesLayout.reset(seriesModel, ecModel, api);\r\n                if (res.progress) {\r\n                    res.progress({\r\n                        start: 0,\r\n                        end: data.count(),\r\n                        count: data.count()\r\n                    }, data);\r\n                }\r\n                this._lineDraw.updateLayout();\r\n                this._clearLayer(api);\r\n            }\r\n        };\r\n        LinesView.prototype._updateLineDraw = function (data, seriesModel) {\r\n            var lineDraw = this._lineDraw;\r\n            var hasEffect = this._showEffect(seriesModel);\r\n            var isPolyline = !!seriesModel.get('polyline');\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var isLargeDraw = pipelineContext.large;\r\n            if (__DEV__) {\r\n                if (hasEffect && isLargeDraw) {\r\n                    console.warn('Large lines not support effect');\r\n                }\r\n            }\r\n            if (!lineDraw\r\n                || hasEffect !== this._hasEffet\r\n                || isPolyline !== this._isPolyline\r\n                || isLargeDraw !== this._isLargeDraw) {\r\n                if (lineDraw) {\r\n                    lineDraw.remove();\r\n                }\r\n                lineDraw = this._lineDraw = isLargeDraw\r\n                    ? new LargeLineDraw()\r\n                    : new LineDraw(isPolyline\r\n                        ? (hasEffect ? EffectPolyline : Polyline$1)\r\n                        : (hasEffect ? EffectLine : Line$1));\r\n                this._hasEffet = hasEffect;\r\n                this._isPolyline = isPolyline;\r\n                this._isLargeDraw = isLargeDraw;\r\n                this.group.removeAll();\r\n            }\r\n            this.group.add(lineDraw.group);\r\n            return lineDraw;\r\n        };\r\n        LinesView.prototype._showEffect = function (seriesModel) {\r\n            return !!seriesModel.get(['effect', 'show']);\r\n        };\r\n        LinesView.prototype._clearLayer = function (api) {\r\n            var zr = api.getZr();\r\n            var isSvg = zr.painter.getType() === 'svg';\r\n            if (!isSvg && this._lastZlevel != null) {\r\n                zr.painter.getLayer(this._lastZlevel).clear(true);\r\n            }\r\n        };\r\n        LinesView.prototype.remove = function (ecModel, api) {\r\n            this._lineDraw && this._lineDraw.remove();\r\n            this._lineDraw = null;\r\n            this._clearLayer(api);\r\n        };\r\n        LinesView.type = 'lines';\r\n        return LinesView;\r\n    }(ChartView));\r\n    ChartView.registerClass(LinesView);\n\n    function normalize$3(a) {\r\n        if (!(a instanceof Array)) {\r\n            a = [a, a];\r\n        }\r\n        return a;\r\n    }\r\n    var linesVisual = {\r\n        seriesType: 'lines',\r\n        reset: function (seriesModel) {\r\n            var symbolType = normalize$3(seriesModel.get('symbol'));\r\n            var symbolSize = normalize$3(seriesModel.get('symbolSize'));\r\n            var data = seriesModel.getData();\r\n            data.setVisual('fromSymbol', symbolType && symbolType[0]);\r\n            data.setVisual('toSymbol', symbolType && symbolType[1]);\r\n            data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\r\n            data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\r\n            function dataEach(data, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var symbolType = normalize$3(itemModel.getShallow('symbol', true));\r\n                var symbolSize = normalize$3(itemModel.getShallow('symbolSize', true));\r\n                symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\r\n                symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\r\n                symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\r\n                symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\r\n            }\r\n            return {\r\n                dataEach: data.hasItemOption ? dataEach : null\r\n            };\r\n        }\r\n    };\n\n    registerLayout(linesLayout);\r\n    registerVisual(linesVisual);\n\n    var HeatmapSeriesModel = (function (_super) {\r\n        __extends(HeatmapSeriesModel, _super);\r\n        function HeatmapSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = HeatmapSeriesModel.type;\r\n            return _this;\r\n        }\r\n        HeatmapSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, {\r\n                generateCoord: 'value'\r\n            });\r\n        };\r\n        HeatmapSeriesModel.prototype.preventIncremental = function () {\r\n            var coordSysCreator = CoordinateSystemManager.get(this.get('coordinateSystem'));\r\n            if (coordSysCreator && coordSysCreator.dimensions) {\r\n                return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\r\n            }\r\n        };\r\n        HeatmapSeriesModel.type = 'series.heatmap';\r\n        HeatmapSeriesModel.defaultOption = {\r\n            coordinateSystem: 'cartesian2d',\r\n            zlevel: 0,\r\n            z: 2,\r\n            geoIndex: 0,\r\n            blurSize: 30,\r\n            pointSize: 20,\r\n            maxOpacity: 1,\r\n            minOpacity: 0,\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            }\r\n        };\r\n        return HeatmapSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(HeatmapSeriesModel);\n\n    var GRADIENT_LEVELS = 256;\r\n    var HeatmapLayer = (function () {\r\n        function HeatmapLayer() {\r\n            this.blurSize = 30;\r\n            this.pointSize = 20;\r\n            this.maxOpacity = 1;\r\n            this.minOpacity = 0;\r\n            this._gradientPixels = {\r\n                inRange: null,\r\n                outOfRange: null\r\n            };\r\n            var canvas = createCanvas();\r\n            this.canvas = canvas;\r\n        }\r\n        HeatmapLayer.prototype.update = function (data, width, height, normalize, colorFunc, isInRange) {\r\n            var brush = this._getBrush();\r\n            var gradientInRange = this._getGradient(colorFunc, 'inRange');\r\n            var gradientOutOfRange = this._getGradient(colorFunc, 'outOfRange');\r\n            var r = this.pointSize + this.blurSize;\r\n            var canvas = this.canvas;\r\n            var ctx = canvas.getContext('2d');\r\n            var len = data.length;\r\n            canvas.width = width;\r\n            canvas.height = height;\r\n            for (var i = 0; i < len; ++i) {\r\n                var p = data[i];\r\n                var x = p[0];\r\n                var y = p[1];\r\n                var value = p[2];\r\n                var alpha = normalize(value);\r\n                ctx.globalAlpha = alpha;\r\n                ctx.drawImage(brush, x - r, y - r);\r\n            }\r\n            if (!canvas.width || !canvas.height) {\r\n                return canvas;\r\n            }\r\n            var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n            var pixels = imageData.data;\r\n            var offset = 0;\r\n            var pixelLen = pixels.length;\r\n            var minOpacity = this.minOpacity;\r\n            var maxOpacity = this.maxOpacity;\r\n            var diffOpacity = maxOpacity - minOpacity;\r\n            while (offset < pixelLen) {\r\n                var alpha = pixels[offset + 3] / 256;\r\n                var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4;\r\n                if (alpha > 0) {\r\n                    var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange;\r\n                    alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\r\n                    pixels[offset++] = gradient[gradientOffset];\r\n                    pixels[offset++] = gradient[gradientOffset + 1];\r\n                    pixels[offset++] = gradient[gradientOffset + 2];\r\n                    pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\r\n                }\r\n                else {\r\n                    offset += 4;\r\n                }\r\n            }\r\n            ctx.putImageData(imageData, 0, 0);\r\n            return canvas;\r\n        };\r\n        HeatmapLayer.prototype._getBrush = function () {\r\n            var brushCanvas = this._brushCanvas || (this._brushCanvas = createCanvas());\r\n            var r = this.pointSize + this.blurSize;\r\n            var d = r * 2;\r\n            brushCanvas.width = d;\r\n            brushCanvas.height = d;\r\n            var ctx = brushCanvas.getContext('2d');\r\n            ctx.clearRect(0, 0, d, d);\r\n            ctx.shadowOffsetX = d;\r\n            ctx.shadowBlur = this.blurSize;\r\n            ctx.shadowColor = '#000';\r\n            ctx.beginPath();\r\n            ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\r\n            ctx.closePath();\r\n            ctx.fill();\r\n            return brushCanvas;\r\n        };\r\n        HeatmapLayer.prototype._getGradient = function (colorFunc, state) {\r\n            var gradientPixels = this._gradientPixels;\r\n            var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\r\n            var color = [0, 0, 0, 0];\r\n            var off = 0;\r\n            for (var i = 0; i < 256; i++) {\r\n                colorFunc[state](i / 255, true, color);\r\n                pixelsSingleState[off++] = color[0];\r\n                pixelsSingleState[off++] = color[1];\r\n                pixelsSingleState[off++] = color[2];\r\n                pixelsSingleState[off++] = color[3];\r\n            }\r\n            return pixelsSingleState;\r\n        };\r\n        return HeatmapLayer;\r\n    }());\n\n    function getIsInPiecewiseRange(dataExtent, pieceList, selected) {\r\n        var dataSpan = dataExtent[1] - dataExtent[0];\r\n        pieceList = map(pieceList, function (piece) {\r\n            return {\r\n                interval: [\r\n                    (piece.interval[0] - dataExtent[0]) / dataSpan,\r\n                    (piece.interval[1] - dataExtent[0]) / dataSpan\r\n                ]\r\n            };\r\n        });\r\n        var len = pieceList.length;\r\n        var lastIndex = 0;\r\n        return function (val) {\r\n            var i;\r\n            for (i = lastIndex; i < len; i++) {\r\n                var interval = pieceList[i].interval;\r\n                if (interval[0] <= val && val <= interval[1]) {\r\n                    lastIndex = i;\r\n                    break;\r\n                }\r\n            }\r\n            if (i === len) {\r\n                for (i = lastIndex - 1; i >= 0; i--) {\r\n                    var interval = pieceList[i].interval;\r\n                    if (interval[0] <= val && val <= interval[1]) {\r\n                        lastIndex = i;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            return i >= 0 && i < len && selected[i];\r\n        };\r\n    }\r\n    function getIsInContinuousRange(dataExtent, range) {\r\n        var dataSpan = dataExtent[1] - dataExtent[0];\r\n        range = [\r\n            (range[0] - dataExtent[0]) / dataSpan,\r\n            (range[1] - dataExtent[0]) / dataSpan\r\n        ];\r\n        return function (val) {\r\n            return val >= range[0] && val <= range[1];\r\n        };\r\n    }\r\n    function isGeoCoordSys(coordSys) {\r\n        var dimensions = coordSys.dimensions;\r\n        return dimensions[0] === 'lng' && dimensions[1] === 'lat';\r\n    }\r\n    var HeatmapView = (function (_super) {\r\n        __extends(HeatmapView, _super);\r\n        function HeatmapView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = HeatmapView.type;\r\n            return _this;\r\n        }\r\n        HeatmapView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var visualMapOfThisSeries;\r\n            ecModel.eachComponent('visualMap', function (visualMap) {\r\n                visualMap.eachTargetSeries(function (targetSeries) {\r\n                    if (targetSeries === seriesModel) {\r\n                        visualMapOfThisSeries = visualMap;\r\n                    }\r\n                });\r\n            });\r\n            if (__DEV__) {\r\n                if (!visualMapOfThisSeries) {\r\n                    throw new Error('Heatmap must use with visualMap');\r\n                }\r\n            }\r\n            this.group.removeAll();\r\n            this._incrementalDisplayable = null;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\r\n                this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\r\n            }\r\n            else if (isGeoCoordSys(coordSys)) {\r\n                this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\r\n            }\r\n        };\r\n        HeatmapView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n            this.group.removeAll();\r\n        };\r\n        HeatmapView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys) {\r\n                this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\r\n            }\r\n        };\r\n        HeatmapView.prototype._renderOnCartesianAndCalendar = function (seriesModel, api, start, end, incremental) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var width;\r\n            var height;\r\n            var xAxisExtent;\r\n            var yAxisExtent;\r\n            if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n                var xAxis = coordSys.getAxis('x');\r\n                var yAxis = coordSys.getAxis('y');\r\n                if (__DEV__) {\r\n                    if (!(xAxis.type === 'category' && yAxis.type === 'category')) {\r\n                        throw new Error('Heatmap on cartesian must have two category axes');\r\n                    }\r\n                    if (!(xAxis.onBand && yAxis.onBand)) {\r\n                        throw new Error('Heatmap on cartesian must have two axes with boundaryGap true');\r\n                    }\r\n                }\r\n                width = xAxis.getBandWidth();\r\n                height = yAxis.getBandWidth();\r\n                xAxisExtent = xAxis.scale.getExtent();\r\n                yAxisExtent = yAxis.scale.getExtent();\r\n            }\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var emphasisStyle = seriesModel.getModel(['emphasis', 'itemStyle']).getItemStyle();\r\n            var blurStyle = seriesModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n            var selectStyle = seriesModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n            var labelStatesModels = getLabelStatesModels(seriesModel);\r\n            var focus = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            var dataDims = isCoordinateSystemType(coordSys, 'cartesian2d')\r\n                ? [\r\n                    data.mapDimension('x'),\r\n                    data.mapDimension('y'),\r\n                    data.mapDimension('value')\r\n                ]\r\n                : [\r\n                    data.mapDimension('time'),\r\n                    data.mapDimension('value')\r\n                ];\r\n            for (var idx = start; idx < end; idx++) {\r\n                var rect = void 0;\r\n                var style = data.getItemVisual(idx, 'style');\r\n                if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n                    var dataDimX = data.get(dataDims[0], idx);\r\n                    var dataDimY = data.get(dataDims[1], idx);\r\n                    if (isNaN(data.get(dataDims[2], idx))\r\n                        || dataDimX < xAxisExtent[0]\r\n                        || dataDimX > xAxisExtent[1]\r\n                        || dataDimY < yAxisExtent[0]\r\n                        || dataDimY > yAxisExtent[1]) {\r\n                        continue;\r\n                    }\r\n                    var point = coordSys.dataToPoint([\r\n                        dataDimX,\r\n                        dataDimY\r\n                    ]);\r\n                    rect = new Rect({\r\n                        shape: {\r\n                            x: Math.floor(Math.round(point[0]) - width / 2),\r\n                            y: Math.floor(Math.round(point[1]) - height / 2),\r\n                            width: Math.ceil(width),\r\n                            height: Math.ceil(height)\r\n                        },\r\n                        style: style\r\n                    });\r\n                }\r\n                else {\r\n                    if (isNaN(data.get(dataDims[1], idx))) {\r\n                        continue;\r\n                    }\r\n                    rect = new Rect({\r\n                        z2: 1,\r\n                        shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\r\n                        style: style\r\n                    });\r\n                }\r\n                var itemModel = data.getItemModel(idx);\r\n                if (data.hasItemOption) {\r\n                    var emphasisModel = itemModel.getModel('emphasis');\r\n                    emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n                    blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n                    selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n                    focus = emphasisModel.get('focus');\r\n                    blurScope = emphasisModel.get('blurScope');\r\n                    labelStatesModels = getLabelStatesModels(itemModel);\r\n                }\r\n                var rawValue = seriesModel.getRawValue(idx);\r\n                var defaultText = '-';\r\n                if (rawValue && rawValue[2] != null) {\r\n                    defaultText = rawValue[2] + '';\r\n                }\r\n                setLabelStyle(rect, labelStatesModels, {\r\n                    labelFetcher: seriesModel,\r\n                    labelDataIndex: idx,\r\n                    defaultOpacity: style.opacity,\r\n                    defaultText: defaultText\r\n                });\r\n                rect.ensureState('emphasis').style = emphasisStyle;\r\n                rect.ensureState('blur').style = blurStyle;\r\n                rect.ensureState('select').style = selectStyle;\r\n                enableHoverEmphasis(rect, focus, blurScope);\r\n                rect.incremental = incremental;\r\n                if (incremental) {\r\n                    rect.states.emphasis.hoverLayer = true;\r\n                }\r\n                group.add(rect);\r\n                data.setItemGraphicEl(idx, rect);\r\n            }\r\n        };\r\n        HeatmapView.prototype._renderOnGeo = function (geo, seriesModel, visualMapModel, api) {\r\n            var inRangeVisuals = visualMapModel.targetVisuals.inRange;\r\n            var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange;\r\n            var data = seriesModel.getData();\r\n            var hmLayer = this._hmLayer || (this._hmLayer || new HeatmapLayer());\r\n            hmLayer.blurSize = seriesModel.get('blurSize');\r\n            hmLayer.pointSize = seriesModel.get('pointSize');\r\n            hmLayer.minOpacity = seriesModel.get('minOpacity');\r\n            hmLayer.maxOpacity = seriesModel.get('maxOpacity');\r\n            var rect = geo.getViewRect().clone();\r\n            var roamTransform = geo.getRoamTransform();\r\n            rect.applyTransform(roamTransform);\r\n            var x = Math.max(rect.x, 0);\r\n            var y = Math.max(rect.y, 0);\r\n            var x2 = Math.min(rect.width + rect.x, api.getWidth());\r\n            var y2 = Math.min(rect.height + rect.y, api.getHeight());\r\n            var width = x2 - x;\r\n            var height = y2 - y;\r\n            var dims = [\r\n                data.mapDimension('lng'),\r\n                data.mapDimension('lat'),\r\n                data.mapDimension('value')\r\n            ];\r\n            var points = data.mapArray(dims, function (lng, lat, value) {\r\n                var pt = geo.dataToPoint([lng, lat]);\r\n                pt[0] -= x;\r\n                pt[1] -= y;\r\n                pt.push(value);\r\n                return pt;\r\n            });\r\n            var dataExtent = visualMapModel.getExtent();\r\n            var isInRange = visualMapModel.type === 'visualMap.continuous'\r\n                ? getIsInContinuousRange(dataExtent, visualMapModel.option.range)\r\n                : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\r\n            hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\r\n                inRange: inRangeVisuals.color.getColorMapper(),\r\n                outOfRange: outOfRangeVisuals.color.getColorMapper()\r\n            }, isInRange);\r\n            var img = new ZRImage({\r\n                style: {\r\n                    width: width,\r\n                    height: height,\r\n                    x: x,\r\n                    y: y,\r\n                    image: hmLayer.canvas\r\n                },\r\n                silent: true\r\n            });\r\n            this.group.add(img);\r\n        };\r\n        HeatmapView.type = 'heatmap';\r\n        return HeatmapView;\r\n    }(ChartView));\r\n    ChartView.registerClass(HeatmapView);\n\n    var PictorialBarSeriesModel = (function (_super) {\r\n        __extends(PictorialBarSeriesModel, _super);\r\n        function PictorialBarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = PictorialBarSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            _this.defaultSymbol = 'roundRect';\r\n            return _this;\r\n        }\r\n        PictorialBarSeriesModel.prototype.getInitialData = function (option) {\r\n            option.stack = null;\r\n            return _super.prototype.getInitialData.apply(this, arguments);\r\n        };\r\n        PictorialBarSeriesModel.type = 'series.pictorialBar';\r\n        PictorialBarSeriesModel.dependencies = ['grid'];\r\n        PictorialBarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n            symbol: 'circle',\r\n            symbolSize: null,\r\n            symbolRotate: null,\r\n            symbolPosition: null,\r\n            symbolOffset: null,\r\n            symbolMargin: null,\r\n            symbolRepeat: false,\r\n            symbolRepeatDirection: 'end',\r\n            symbolClip: false,\r\n            symbolBoundingData: null,\r\n            symbolPatternSize: 400,\r\n            barGap: '-100%',\r\n            progressive: 0,\r\n            emphasis: {\r\n                scale: false\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            }\r\n        });\r\n        return PictorialBarSeriesModel;\r\n    }(BaseBarSeriesModel));\r\n    SeriesModel.registerClass(PictorialBarSeriesModel);\n\n    var BAR_BORDER_WIDTH_QUERY$1 = ['itemStyle', 'borderWidth'];\r\n    var LAYOUT_ATTRS = [\r\n        { xy: 'x', wh: 'width', index: 0, posDesc: ['left', 'right'] },\r\n        { xy: 'y', wh: 'height', index: 1, posDesc: ['top', 'bottom'] }\r\n    ];\r\n    var pathForLineWidth = new Circle();\r\n    var PictorialBarView = (function (_super) {\r\n        __extends(PictorialBarView, _super);\r\n        function PictorialBarView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = PictorialBarView.type;\r\n            return _this;\r\n        }\r\n        PictorialBarView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var isHorizontal = baseAxis.isHorizontal();\r\n            var coordSysRect = cartesian.master.getRect();\r\n            var opt = {\r\n                ecSize: { width: api.getWidth(), height: api.getHeight() },\r\n                seriesModel: seriesModel,\r\n                coordSys: cartesian,\r\n                coordSysExtent: [\r\n                    [coordSysRect.x, coordSysRect.x + coordSysRect.width],\r\n                    [coordSysRect.y, coordSysRect.y + coordSysRect.height]\r\n                ],\r\n                isHorizontal: isHorizontal,\r\n                valueDim: LAYOUT_ATTRS[+isHorizontal],\r\n                categoryDim: LAYOUT_ATTRS[1 - (+isHorizontal)]\r\n            };\r\n            data.diff(oldData)\r\n                .add(function (dataIndex) {\r\n                if (!data.hasValue(dataIndex)) {\r\n                    return;\r\n                }\r\n                var itemModel = getItemModel(data, dataIndex);\r\n                var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\r\n                var bar = createBar(data, opt, symbolMeta);\r\n                data.setItemGraphicEl(dataIndex, bar);\r\n                group.add(bar);\r\n                updateCommon$1(bar, opt, symbolMeta);\r\n            })\r\n                .update(function (newIndex, oldIndex) {\r\n                var bar = oldData.getItemGraphicEl(oldIndex);\r\n                if (!data.hasValue(newIndex)) {\r\n                    group.remove(bar);\r\n                    return;\r\n                }\r\n                var itemModel = getItemModel(data, newIndex);\r\n                var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\r\n                var pictorialShapeStr = getShapeStr(data, symbolMeta);\r\n                if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\r\n                    group.remove(bar);\r\n                    data.setItemGraphicEl(newIndex, null);\r\n                    bar = null;\r\n                }\r\n                if (bar) {\r\n                    updateBar(bar, opt, symbolMeta);\r\n                }\r\n                else {\r\n                    bar = createBar(data, opt, symbolMeta, true);\r\n                }\r\n                data.setItemGraphicEl(newIndex, bar);\r\n                bar.__pictorialSymbolMeta = symbolMeta;\r\n                group.add(bar);\r\n                updateCommon$1(bar, opt, symbolMeta);\r\n            })\r\n                .remove(function (dataIndex) {\r\n                var bar = oldData.getItemGraphicEl(dataIndex);\r\n                bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\r\n            })\r\n                .execute();\r\n            this._data = data;\r\n            return this.group;\r\n        };\r\n        PictorialBarView.prototype.remove = function (ecModel, api) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (ecModel.get('animation')) {\r\n                if (data) {\r\n                    data.eachItemGraphicEl(function (bar) {\r\n                        removeBar(data, getECData(bar).dataIndex, ecModel, bar);\r\n                    });\r\n                }\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n        };\r\n        PictorialBarView.type = 'pictorialBar';\r\n        return PictorialBarView;\r\n    }(ChartView));\r\n    function getSymbolMeta(data, dataIndex, itemModel, opt) {\r\n        var layout = data.getItemLayout(dataIndex);\r\n        var symbolRepeat = itemModel.get('symbolRepeat');\r\n        var symbolClip = itemModel.get('symbolClip');\r\n        var symbolPosition = itemModel.get('symbolPosition') || 'start';\r\n        var symbolRotate = itemModel.get('symbolRotate');\r\n        var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\r\n        var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\r\n        var isAnimationEnabled = itemModel.isAnimationEnabled();\r\n        var symbolMeta = {\r\n            dataIndex: dataIndex,\r\n            layout: layout,\r\n            itemModel: itemModel,\r\n            symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\r\n            style: data.getItemVisual(dataIndex, 'style'),\r\n            symbolClip: symbolClip,\r\n            symbolRepeat: symbolRepeat,\r\n            symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\r\n            symbolPatternSize: symbolPatternSize,\r\n            rotation: rotation,\r\n            animationModel: isAnimationEnabled ? itemModel : null,\r\n            hoverScale: isAnimationEnabled && itemModel.get(['emphasis', 'scale']),\r\n            z2: itemModel.getShallow('z', true) || 0\r\n        };\r\n        prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\r\n        prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\r\n        prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\r\n        var symbolSize = symbolMeta.symbolSize;\r\n        var symbolOffset = itemModel.get('symbolOffset');\r\n        if (isArray(symbolOffset)) {\r\n            symbolOffset = [\r\n                parsePercent$2(symbolOffset[0], symbolSize[0]),\r\n                parsePercent$2(symbolOffset[1], symbolSize[1])\r\n            ];\r\n        }\r\n        prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\r\n        return symbolMeta;\r\n    }\r\n    function prepareBarLength(itemModel, symbolRepeat, layout, opt, outputSymbolMeta) {\r\n        var valueDim = opt.valueDim;\r\n        var symbolBoundingData = itemModel.get('symbolBoundingData');\r\n        var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\r\n        var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\r\n        var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\r\n        var boundingLength;\r\n        if (isArray(symbolBoundingData)) {\r\n            var symbolBoundingExtent = [\r\n                convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx,\r\n                convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx\r\n            ];\r\n            symbolBoundingExtent[1] < symbolBoundingExtent[0] && (symbolBoundingExtent.reverse());\r\n            boundingLength = symbolBoundingExtent[pxSignIdx];\r\n        }\r\n        else if (symbolBoundingData != null) {\r\n            boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\r\n        }\r\n        else if (symbolRepeat) {\r\n            boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\r\n        }\r\n        else {\r\n            boundingLength = layout[valueDim.wh];\r\n        }\r\n        outputSymbolMeta.boundingLength = boundingLength;\r\n        if (symbolRepeat) {\r\n            outputSymbolMeta.repeatCutLength = layout[valueDim.wh];\r\n        }\r\n        outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\r\n    }\r\n    function convertToCoordOnAxis(axis, value) {\r\n        return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\r\n    }\r\n    function prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) {\r\n        var valueDim = opt.valueDim;\r\n        var categoryDim = opt.categoryDim;\r\n        var categorySize = Math.abs(layout[categoryDim.wh]);\r\n        var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\r\n        var parsedSymbolSize;\r\n        if (isArray(symbolSize)) {\r\n            parsedSymbolSize = symbolSize.slice();\r\n        }\r\n        else {\r\n            if (symbolSize == null) {\r\n                parsedSymbolSize = ['100%', '100%'];\r\n            }\r\n            else {\r\n                parsedSymbolSize = [symbolSize, symbolSize];\r\n            }\r\n        }\r\n        parsedSymbolSize[categoryDim.index] = parsePercent$2(parsedSymbolSize[categoryDim.index], categorySize);\r\n        parsedSymbolSize[valueDim.index] = parsePercent$2(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\r\n        outputSymbolMeta.symbolSize = parsedSymbolSize;\r\n        var symbolScale = outputSymbolMeta.symbolScale = [\r\n            parsedSymbolSize[0] / symbolPatternSize,\r\n            parsedSymbolSize[1] / symbolPatternSize\r\n        ];\r\n        symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\r\n    }\r\n    function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) {\r\n        var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY$1) || 0;\r\n        if (valueLineWidth) {\r\n            pathForLineWidth.attr({\r\n                scaleX: symbolScale[0],\r\n                scaleY: symbolScale[1],\r\n                rotation: rotation\r\n            });\r\n            pathForLineWidth.updateTransform();\r\n            valueLineWidth /= pathForLineWidth.getLineScale();\r\n            valueLineWidth *= symbolScale[opt.valueDim.index];\r\n        }\r\n        outputSymbolMeta.valueLineWidth = valueLineWidth;\r\n    }\r\n    function prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) {\r\n        var categoryDim = opt.categoryDim;\r\n        var valueDim = opt.valueDim;\r\n        var pxSign = outputSymbolMeta.pxSign;\r\n        var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\r\n        var pathLen = unitLength;\r\n        if (symbolRepeat) {\r\n            var absBoundingLength = Math.abs(boundingLength);\r\n            var symbolMargin = retrieve(itemModel.get('symbolMargin'), '15%') + '';\r\n            var hasEndGap = false;\r\n            if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\r\n                hasEndGap = true;\r\n                symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\r\n            }\r\n            var symbolMarginNumeric = parsePercent$2(symbolMargin, symbolSize[valueDim.index]);\r\n            var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0);\r\n            var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;\r\n            var repeatSpecified = isNumeric(symbolRepeat);\r\n            var repeatTimes = repeatSpecified\r\n                ? symbolRepeat\r\n                : toIntTimes((absBoundingLength + endFix) / uLenWithMargin);\r\n            var mDiff = absBoundingLength - repeatTimes * unitLength;\r\n            symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\r\n            uLenWithMargin = unitLength + symbolMarginNumeric * 2;\r\n            endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;\r\n            if (!repeatSpecified && symbolRepeat !== 'fixed') {\r\n                repeatTimes = repeatCutLength\r\n                    ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin)\r\n                    : 0;\r\n            }\r\n            pathLen = repeatTimes * uLenWithMargin - endFix;\r\n            outputSymbolMeta.repeatTimes = repeatTimes;\r\n            outputSymbolMeta.symbolMargin = symbolMarginNumeric;\r\n        }\r\n        var sizeFix = pxSign * (pathLen / 2);\r\n        var pathPosition = outputSymbolMeta.pathPosition = [];\r\n        pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\r\n        pathPosition[valueDim.index] = symbolPosition === 'start'\r\n            ? sizeFix\r\n            : symbolPosition === 'end'\r\n                ? boundingLength - sizeFix\r\n                : boundingLength / 2;\r\n        if (symbolOffset) {\r\n            pathPosition[0] += symbolOffset[0];\r\n            pathPosition[1] += symbolOffset[1];\r\n        }\r\n        var bundlePosition = outputSymbolMeta.bundlePosition = [];\r\n        bundlePosition[categoryDim.index] = layout[categoryDim.xy];\r\n        bundlePosition[valueDim.index] = layout[valueDim.xy];\r\n        var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout);\r\n        barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\r\n        barRectShape[categoryDim.wh] = layout[categoryDim.wh];\r\n        var clipShape = outputSymbolMeta.clipShape = {};\r\n        clipShape[categoryDim.xy] = -layout[categoryDim.xy];\r\n        clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\r\n        clipShape[valueDim.xy] = 0;\r\n        clipShape[valueDim.wh] = layout[valueDim.wh];\r\n    }\r\n    function createPath(symbolMeta) {\r\n        var symbolPatternSize = symbolMeta.symbolPatternSize;\r\n        var path = createSymbol(symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize);\r\n        path.attr({\r\n            culling: true\r\n        });\r\n        path.type !== 'image' && path.setStyle({\r\n            strokeNoScale: true\r\n        });\r\n        return path;\r\n    }\r\n    function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\r\n        var bundle = bar.__pictorialBundle;\r\n        var symbolSize = symbolMeta.symbolSize;\r\n        var valueLineWidth = symbolMeta.valueLineWidth;\r\n        var pathPosition = symbolMeta.pathPosition;\r\n        var valueDim = opt.valueDim;\r\n        var repeatTimes = symbolMeta.repeatTimes || 0;\r\n        var index = 0;\r\n        var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\r\n        eachPath(bar, function (path) {\r\n            path.__pictorialAnimationIndex = index;\r\n            path.__pictorialRepeatTimes = repeatTimes;\r\n            if (index < repeatTimes) {\r\n                updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\r\n            }\r\n            else {\r\n                updateAttr(path, null, { scaleX: 0, scaleY: 0 }, symbolMeta, isUpdate, function () {\r\n                    bundle.remove(path);\r\n                });\r\n            }\r\n            index++;\r\n        });\r\n        for (; index < repeatTimes; index++) {\r\n            var path = createPath(symbolMeta);\r\n            path.__pictorialAnimationIndex = index;\r\n            path.__pictorialRepeatTimes = repeatTimes;\r\n            bundle.add(path);\r\n            var target = makeTarget(index);\r\n            updateAttr(path, {\r\n                x: target.x,\r\n                y: target.y,\r\n                scaleX: 0,\r\n                scaleY: 0\r\n            }, {\r\n                scaleX: target.scaleX,\r\n                scaleY: target.scaleY,\r\n                rotation: target.rotation\r\n            }, symbolMeta, isUpdate);\r\n        }\r\n        function makeTarget(index) {\r\n            var position = pathPosition.slice();\r\n            var pxSign = symbolMeta.pxSign;\r\n            var i = index;\r\n            if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\r\n                i = repeatTimes - 1 - index;\r\n            }\r\n            position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\r\n            return {\r\n                x: position[0],\r\n                y: position[1],\r\n                scaleX: symbolMeta.symbolScale[0],\r\n                scaleY: symbolMeta.symbolScale[1],\r\n                rotation: symbolMeta.rotation\r\n            };\r\n        }\r\n    }\r\n    function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\r\n        var bundle = bar.__pictorialBundle;\r\n        var mainPath = bar.__pictorialMainPath;\r\n        if (!mainPath) {\r\n            mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\r\n            bundle.add(mainPath);\r\n            updateAttr(mainPath, {\r\n                x: symbolMeta.pathPosition[0],\r\n                y: symbolMeta.pathPosition[1],\r\n                scaleX: 0,\r\n                scaleY: 0,\r\n                rotation: symbolMeta.rotation\r\n            }, {\r\n                scaleX: symbolMeta.symbolScale[0],\r\n                scaleY: symbolMeta.symbolScale[1]\r\n            }, symbolMeta, isUpdate);\r\n        }\r\n        else {\r\n            updateAttr(mainPath, null, {\r\n                x: symbolMeta.pathPosition[0],\r\n                y: symbolMeta.pathPosition[1],\r\n                scaleX: symbolMeta.symbolScale[0],\r\n                scaleY: symbolMeta.symbolScale[1],\r\n                rotation: symbolMeta.rotation\r\n            }, symbolMeta, isUpdate);\r\n        }\r\n    }\r\n    function createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\r\n        var rectShape = extend({}, symbolMeta.barRectShape);\r\n        var barRect = bar.__pictorialBarRect;\r\n        if (!barRect) {\r\n            barRect = bar.__pictorialBarRect = new Rect({\r\n                z2: 2,\r\n                shape: rectShape,\r\n                silent: true,\r\n                style: {\r\n                    stroke: 'transparent',\r\n                    fill: 'transparent',\r\n                    lineWidth: 0\r\n                }\r\n            });\r\n            bar.add(barRect);\r\n        }\r\n        else {\r\n            updateAttr(barRect, null, { shape: rectShape }, symbolMeta, isUpdate);\r\n        }\r\n    }\r\n    function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\r\n        if (symbolMeta.symbolClip) {\r\n            var clipPath = bar.__pictorialClipPath;\r\n            var clipShape = extend({}, symbolMeta.clipShape);\r\n            var valueDim = opt.valueDim;\r\n            var animationModel = symbolMeta.animationModel;\r\n            var dataIndex = symbolMeta.dataIndex;\r\n            if (clipPath) {\r\n                updateProps(clipPath, { shape: clipShape }, animationModel, dataIndex);\r\n            }\r\n            else {\r\n                clipShape[valueDim.wh] = 0;\r\n                clipPath = new Rect({ shape: clipShape });\r\n                bar.__pictorialBundle.setClipPath(clipPath);\r\n                bar.__pictorialClipPath = clipPath;\r\n                var target = {};\r\n                target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\r\n                graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, { shape: target }, animationModel, dataIndex);\r\n            }\r\n        }\r\n    }\r\n    function getItemModel(data, dataIndex) {\r\n        var itemModel = data.getItemModel(dataIndex);\r\n        itemModel.getAnimationDelayParams = getAnimationDelayParams;\r\n        itemModel.isAnimationEnabled = isAnimationEnabled;\r\n        return itemModel;\r\n    }\r\n    function getAnimationDelayParams(path) {\r\n        return {\r\n            index: path.__pictorialAnimationIndex,\r\n            count: path.__pictorialRepeatTimes\r\n        };\r\n    }\r\n    function isAnimationEnabled() {\r\n        return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\r\n    }\r\n    function createBar(data, opt, symbolMeta, isUpdate) {\r\n        var bar = new Group();\r\n        var bundle = new Group();\r\n        bar.add(bundle);\r\n        bar.__pictorialBundle = bundle;\r\n        bundle.x = symbolMeta.bundlePosition[0];\r\n        bundle.y = symbolMeta.bundlePosition[1];\r\n        if (symbolMeta.symbolRepeat) {\r\n            createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\r\n        }\r\n        else {\r\n            createOrUpdateSingleSymbol(bar, opt, symbolMeta);\r\n        }\r\n        createOrUpdateBarRect(bar, symbolMeta, isUpdate);\r\n        createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\r\n        bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\r\n        bar.__pictorialSymbolMeta = symbolMeta;\r\n        return bar;\r\n    }\r\n    function updateBar(bar, opt, symbolMeta) {\r\n        var animationModel = symbolMeta.animationModel;\r\n        var dataIndex = symbolMeta.dataIndex;\r\n        var bundle = bar.__pictorialBundle;\r\n        updateProps(bundle, {\r\n            x: symbolMeta.bundlePosition[0],\r\n            y: symbolMeta.bundlePosition[1]\r\n        }, animationModel, dataIndex);\r\n        if (symbolMeta.symbolRepeat) {\r\n            createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\r\n        }\r\n        else {\r\n            createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\r\n        }\r\n        createOrUpdateBarRect(bar, symbolMeta, true);\r\n        createOrUpdateClip(bar, opt, symbolMeta, true);\r\n    }\r\n    function removeBar(data, dataIndex, animationModel, bar) {\r\n        var labelRect = bar.__pictorialBarRect;\r\n        labelRect && (labelRect.removeTextContent());\r\n        var pathes = [];\r\n        eachPath(bar, function (path) {\r\n            pathes.push(path);\r\n        });\r\n        bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath);\r\n        bar.__pictorialClipPath && (animationModel = null);\r\n        each(pathes, function (path) {\r\n            removeElement(path, { scaleX: 0, scaleY: 0 }, animationModel, dataIndex, function () {\r\n                bar.parent && bar.parent.remove(bar);\r\n            });\r\n        });\r\n        data.setItemGraphicEl(dataIndex, null);\r\n    }\r\n    function getShapeStr(data, symbolMeta) {\r\n        return [\r\n            data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none',\r\n            !!symbolMeta.symbolRepeat,\r\n            !!symbolMeta.symbolClip\r\n        ].join(':');\r\n    }\r\n    function eachPath(bar, cb, context) {\r\n        each(bar.__pictorialBundle.children(), function (el) {\r\n            el !== bar.__pictorialBarRect && cb.call(context, el);\r\n        });\r\n    }\r\n    function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\r\n        immediateAttrs && el.attr(immediateAttrs);\r\n        if (symbolMeta.symbolClip && !isUpdate) {\r\n            animationAttrs && el.attr(animationAttrs);\r\n        }\r\n        else {\r\n            animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\r\n        }\r\n    }\r\n    function updateCommon$1(bar, opt, symbolMeta) {\r\n        var dataIndex = symbolMeta.dataIndex;\r\n        var itemModel = symbolMeta.itemModel;\r\n        var emphasisModel = itemModel.getModel('emphasis');\r\n        var emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n        var blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n        var selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n        var cursorStyle = itemModel.getShallow('cursor');\r\n        var focus = emphasisModel.get('focus');\r\n        var blurScope = emphasisModel.get('blurScope');\r\n        var hoverScale = emphasisModel.get('scale');\r\n        eachPath(bar, function (path) {\r\n            if (path instanceof ZRImage) {\r\n                var pathStyle = path.style;\r\n                path.useStyle(extend({\r\n                    image: pathStyle.image,\r\n                    x: pathStyle.x, y: pathStyle.y,\r\n                    width: pathStyle.width, height: pathStyle.height\r\n                }, symbolMeta.style));\r\n            }\r\n            else {\r\n                path.useStyle(symbolMeta.style);\r\n            }\r\n            var emphasisState = path.ensureState('emphasis');\r\n            emphasisState.style = emphasisStyle;\r\n            if (hoverScale) {\r\n                emphasisState.scaleX = path.scaleX * 1.1;\r\n                emphasisState.scaleY = path.scaleY * 1.1;\r\n            }\r\n            path.ensureState('blur').style = blurStyle;\r\n            path.ensureState('select').style = selectStyle;\r\n            cursorStyle && (path.cursor = cursorStyle);\r\n            path.z2 = symbolMeta.z2;\r\n        });\r\n        var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\r\n        var barRect = bar.__pictorialBarRect;\r\n        setLabelStyle(barRect, getLabelStatesModels(itemModel), {\r\n            labelFetcher: opt.seriesModel,\r\n            labelDataIndex: dataIndex,\r\n            defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),\r\n            inheritColor: symbolMeta.style.fill,\r\n            defaultOpacity: symbolMeta.style.opacity,\r\n            defaultOutsidePosition: barPositionOutside\r\n        });\r\n        enableHoverEmphasis(bar, focus, blurScope);\r\n    }\r\n    function toIntTimes(times) {\r\n        var roundedTimes = Math.round(times);\r\n        return Math.abs(times - roundedTimes) < 1e-4\r\n            ? roundedTimes\r\n            : Math.ceil(times);\r\n    }\r\n    ChartView.registerClass(PictorialBarView);\n\n    registerLayout(curry(layout, 'pictorialBar'));\n\n    var SingleAxis = (function (_super) {\r\n        __extends(SingleAxis, _super);\r\n        function SingleAxis(dim, scale, coordExtent, axisType, position) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.type = axisType || 'value';\r\n            _this.position = position || 'bottom';\r\n            return _this;\r\n        }\r\n        SingleAxis.prototype.isHorizontal = function () {\r\n            var position = this.position;\r\n            return position === 'top' || position === 'bottom';\r\n        };\r\n        SingleAxis.prototype.pointToData = function (point, clamp) {\r\n            return this.coordinateSystem.pointToData(point)[0];\r\n        };\r\n        return SingleAxis;\r\n    }(Axis));\n\n    var Single = (function () {\r\n        function Single(axisModel, ecModel, api) {\r\n            this.type = 'single';\r\n            this.dimension = 'single';\r\n            this.dimensions = ['single'];\r\n            this.axisPointerEnabled = true;\r\n            this.model = axisModel;\r\n            this._init(axisModel, ecModel, api);\r\n        }\r\n        Single.prototype._init = function (axisModel, ecModel, api) {\r\n            var dim = this.dimension;\r\n            var axis = new SingleAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\r\n            var isCategory = axis.type === 'category';\r\n            axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n            axis.inverse = axisModel.get('inverse');\r\n            axis.orient = axisModel.get('orient');\r\n            axisModel.axis = axis;\r\n            axis.model = axisModel;\r\n            axis.coordinateSystem = this;\r\n            this._axis = axis;\r\n        };\r\n        Single.prototype.update = function (ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (seriesModel.coordinateSystem === this) {\r\n                    var data_1 = seriesModel.getData();\r\n                    each(data_1.mapDimensionsAll(this.dimension), function (dim) {\r\n                        this._axis.scale.unionExtentFromData(data_1, dim);\r\n                    }, this);\r\n                    niceScaleExtent(this._axis.scale, this._axis.model);\r\n                }\r\n            }, this);\r\n        };\r\n        Single.prototype.resize = function (axisModel, api) {\r\n            this._rect = getLayoutRect({\r\n                left: axisModel.get('left'),\r\n                top: axisModel.get('top'),\r\n                right: axisModel.get('right'),\r\n                bottom: axisModel.get('bottom'),\r\n                width: axisModel.get('width'),\r\n                height: axisModel.get('height')\r\n            }, {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            this._adjustAxis();\r\n        };\r\n        Single.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Single.prototype._adjustAxis = function () {\r\n            var rect = this._rect;\r\n            var axis = this._axis;\r\n            var isHorizontal = axis.isHorizontal();\r\n            var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\r\n            var idx = axis.reverse ? 1 : 0;\r\n            axis.setExtent(extent[idx], extent[1 - idx]);\r\n            this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\r\n        };\r\n        Single.prototype._updateAxisTransform = function (axis, coordBase) {\r\n            var axisExtent = axis.getExtent();\r\n            var extentSum = axisExtent[0] + axisExtent[1];\r\n            var isHorizontal = axis.isHorizontal();\r\n            axis.toGlobalCoord = isHorizontal\r\n                ? function (coord) {\r\n                    return coord + coordBase;\r\n                }\r\n                : function (coord) {\r\n                    return extentSum - coord + coordBase;\r\n                };\r\n            axis.toLocalCoord = isHorizontal\r\n                ? function (coord) {\r\n                    return coord - coordBase;\r\n                }\r\n                : function (coord) {\r\n                    return extentSum - coord + coordBase;\r\n                };\r\n        };\r\n        Single.prototype.getAxis = function () {\r\n            return this._axis;\r\n        };\r\n        Single.prototype.getBaseAxis = function () {\r\n            return this._axis;\r\n        };\r\n        Single.prototype.getAxes = function () {\r\n            return [this._axis];\r\n        };\r\n        Single.prototype.getTooltipAxes = function () {\r\n            return {\r\n                baseAxes: [this.getAxis()],\r\n                otherAxes: []\r\n            };\r\n        };\r\n        Single.prototype.containPoint = function (point) {\r\n            var rect = this.getRect();\r\n            var axis = this.getAxis();\r\n            var orient = axis.orient;\r\n            if (orient === 'horizontal') {\r\n                return axis.contain(axis.toLocalCoord(point[0]))\r\n                    && (point[1] >= rect.y && point[1] <= (rect.y + rect.height));\r\n            }\r\n            else {\r\n                return axis.contain(axis.toLocalCoord(point[1]))\r\n                    && (point[0] >= rect.y && point[0] <= (rect.y + rect.height));\r\n            }\r\n        };\r\n        Single.prototype.pointToData = function (point) {\r\n            var axis = this.getAxis();\r\n            return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\r\n        };\r\n        Single.prototype.dataToPoint = function (val) {\r\n            var axis = this.getAxis();\r\n            var rect = this.getRect();\r\n            var pt = [];\r\n            var idx = axis.orient === 'horizontal' ? 0 : 1;\r\n            if (val instanceof Array) {\r\n                val = val[0];\r\n            }\r\n            pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\r\n            pt[1 - idx] = idx === 0 ? (rect.y + rect.height / 2) : (rect.x + rect.width / 2);\r\n            return pt;\r\n        };\r\n        Single.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var coordSys = getCoordSys$2(finder);\r\n            return coordSys === this ? this.dataToPoint(value) : null;\r\n        };\r\n        Single.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n            var coordSys = getCoordSys$2(finder);\r\n            return coordSys === this ? this.pointToData(pixel) : null;\r\n        };\r\n        return Single;\r\n    }());\r\n    function getCoordSys$2(finder) {\r\n        var seriesModel = finder.seriesModel;\r\n        var singleModel = finder.singleAxisModel;\r\n        return singleModel && singleModel.coordinateSystem\r\n            || seriesModel && seriesModel.coordinateSystem;\r\n    }\n\n    function create$3(ecModel, api) {\r\n        var singles = [];\r\n        ecModel.eachComponent('singleAxis', function (axisModel, idx) {\r\n            var single = new Single(axisModel, ecModel, api);\r\n            single.name = 'single_' + idx;\r\n            single.resize(axisModel, api);\r\n            axisModel.coordinateSystem = single;\r\n            singles.push(single);\r\n        });\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (seriesModel.get('coordinateSystem') === 'singleAxis') {\r\n                var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n                seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\r\n            }\r\n        });\r\n        return singles;\r\n    }\r\n    CoordinateSystemManager.register('single', {\r\n        create: create$3,\r\n        dimensions: Single.prototype.dimensions\r\n    });\n\n    function layout$2(axisModel, opt) {\r\n        opt = opt || {};\r\n        var single = axisModel.coordinateSystem;\r\n        var axis = axisModel.axis;\r\n        var layout = {};\r\n        var axisPosition = axis.position;\r\n        var orient = axis.orient;\r\n        var rect = single.getRect();\r\n        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n        var positionMap = {\r\n            horizontal: { top: rectBound[2], bottom: rectBound[3] },\r\n            vertical: { left: rectBound[0], right: rectBound[1] }\r\n        };\r\n        layout.position = [\r\n            orient === 'vertical'\r\n                ? positionMap.vertical[axisPosition]\r\n                : rectBound[0],\r\n            orient === 'horizontal'\r\n                ? positionMap.horizontal[axisPosition]\r\n                : rectBound[3]\r\n        ];\r\n        var r = { horizontal: 0, vertical: 1 };\r\n        layout.rotation = Math.PI / 2 * r[orient];\r\n        var directionMap = { top: -1, bottom: 1, right: 1, left: -1 };\r\n        layout.labelDirection = layout.tickDirection =\r\n            layout.nameDirection = directionMap[axisPosition];\r\n        if (axisModel.get(['axisTick', 'inside'])) {\r\n            layout.tickDirection = -layout.tickDirection;\r\n        }\r\n        if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n            layout.labelDirection = -layout.labelDirection;\r\n        }\r\n        var labelRotation = opt.rotate;\r\n        labelRotation == null && (labelRotation = axisModel.get(['axisLabel', 'rotate']));\r\n        layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\r\n        layout.z2 = 1;\r\n        return layout;\r\n    }\n\n    var axisBuilderAttrs$2 = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var selfBuilderAttrs$1 = ['splitArea', 'splitLine'];\r\n    var SingleAxisView = (function (_super) {\r\n        __extends(SingleAxisView, _super);\r\n        function SingleAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SingleAxisView.type;\r\n            _this.axisPointerClass = 'SingleAxisPointer';\r\n            return _this;\r\n        }\r\n        SingleAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            var group = this.group;\r\n            group.removeAll();\r\n            var oldAxisGroup = this._axisGroup;\r\n            this._axisGroup = new Group();\r\n            var layout = layout$2(axisModel);\r\n            var axisBuilder = new AxisBuilder(axisModel, layout);\r\n            each(axisBuilderAttrs$2, axisBuilder.add, axisBuilder);\r\n            group.add(this._axisGroup);\r\n            group.add(axisBuilder.getGroup());\r\n            each(selfBuilderAttrs$1, function (name) {\r\n                if (axisModel.get([name, 'show'])) {\r\n                    axisElementBuilders$1[name](this, this.group, this._axisGroup, axisModel);\r\n                }\r\n            }, this);\r\n            groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n            _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n        };\r\n        SingleAxisView.prototype.remove = function () {\r\n            rectCoordAxisHandleRemove(this);\r\n        };\r\n        SingleAxisView.type = 'singleAxis';\r\n        return SingleAxisView;\r\n    }(AxisView));\r\n    var axisElementBuilders$1 = {\r\n        splitLine: function (axisView, group, axisGroup, axisModel) {\r\n            var axis = axisModel.axis;\r\n            if (axis.scale.isBlank()) {\r\n                return;\r\n            }\r\n            var splitLineModel = axisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            lineColors = lineColors instanceof Array ? lineColors : [lineColors];\r\n            var gridRect = axisModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var splitLines = [];\r\n            var lineCount = 0;\r\n            var ticksCoords = axis.getTicksCoords({\r\n                tickModel: splitLineModel\r\n            });\r\n            var p1 = [];\r\n            var p2 = [];\r\n            for (var i = 0; i < ticksCoords.length; ++i) {\r\n                var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n                if (isHorizontal) {\r\n                    p1[0] = tickCoord;\r\n                    p1[1] = gridRect.y;\r\n                    p2[0] = tickCoord;\r\n                    p2[1] = gridRect.y + gridRect.height;\r\n                }\r\n                else {\r\n                    p1[0] = gridRect.x;\r\n                    p1[1] = tickCoord;\r\n                    p2[0] = gridRect.x + gridRect.width;\r\n                    p2[1] = tickCoord;\r\n                }\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                splitLines[colorIndex] = splitLines[colorIndex] || [];\r\n                splitLines[colorIndex].push(new Line({\r\n                    subPixelOptimize: true,\r\n                    shape: {\r\n                        x1: p1[0],\r\n                        y1: p1[1],\r\n                        x2: p2[0],\r\n                        y2: p2[1]\r\n                    },\r\n                    silent: true\r\n                }));\r\n            }\r\n            var lineStyle = lineStyleModel.getLineStyle(['color']);\r\n            for (var i = 0; i < splitLines.length; ++i) {\r\n                group.add(mergePath$1(splitLines[i], {\r\n                    style: defaults({\r\n                        stroke: lineColors[i % lineColors.length]\r\n                    }, lineStyle),\r\n                    silent: true\r\n                }));\r\n            }\r\n        },\r\n        splitArea: function (axisView, group, axisGroup, axisModel) {\r\n            rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel);\r\n        }\r\n    };\r\n    ComponentView.registerClass(SingleAxisView);\n\n    var SingleAxisModel = (function (_super) {\r\n        __extends(SingleAxisModel, _super);\r\n        function SingleAxisModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SingleAxisModel.type;\r\n            return _this;\r\n        }\r\n        SingleAxisModel.prototype.getCoordSysModel = function () {\r\n            return this;\r\n        };\r\n        SingleAxisModel.type = 'singleAxis';\r\n        SingleAxisModel.layoutMode = 'box';\r\n        SingleAxisModel.defaultOption = {\r\n            left: '5%',\r\n            top: '5%',\r\n            right: '5%',\r\n            bottom: '5%',\r\n            type: 'value',\r\n            position: 'bottom',\r\n            orient: 'horizontal',\r\n            axisLine: {\r\n                show: true,\r\n                lineStyle: {\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            tooltip: {\r\n                show: true\r\n            },\r\n            axisTick: {\r\n                show: true,\r\n                length: 6,\r\n                lineStyle: {\r\n                    width: 1\r\n                }\r\n            },\r\n            axisLabel: {\r\n                show: true,\r\n                interval: 'auto'\r\n            },\r\n            splitLine: {\r\n                show: true,\r\n                lineStyle: {\r\n                    type: 'dashed',\r\n                    opacity: 0.2\r\n                }\r\n            }\r\n        };\r\n        return SingleAxisModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(SingleAxisModel);\r\n    mixin(SingleAxisModel, AxisModelCommonMixin.prototype);\r\n    axisModelCreator('single', SingleAxisModel, SingleAxisModel.defaultOption);\n\n    function findPointFromSeries(finder, ecModel) {\r\n        var point = [];\r\n        var seriesIndex = finder.seriesIndex;\r\n        var seriesModel;\r\n        if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\r\n            return {\r\n                point: []\r\n            };\r\n        }\r\n        var data = seriesModel.getData();\r\n        var dataIndex = queryDataIndex(data, finder);\r\n        if (dataIndex == null || dataIndex < 0 || isArray(dataIndex)) {\r\n            return { point: [] };\r\n        }\r\n        var el = data.getItemGraphicEl(dataIndex);\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (seriesModel.getTooltipPosition) {\r\n            point = seriesModel.getTooltipPosition(dataIndex) || [];\r\n        }\r\n        else if (coordSys && coordSys.dataToPoint) {\r\n            if (finder.isStacked) {\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n                var valueAxisDim = valueAxis.dim;\r\n                var baseAxisDim = baseAxis.dim;\r\n                var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n                var baseDim = data.mapDimension(baseAxisDim);\r\n                var stackedData = [];\r\n                stackedData[baseDataOffset] = data.get(baseDim, dataIndex);\r\n                stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex);\r\n                point = coordSys.dataToPoint(stackedData) || [];\r\n            }\r\n            else {\r\n                point = coordSys.dataToPoint(data.getValues(map(coordSys.dimensions, function (dim) {\r\n                    return data.mapDimension(dim);\r\n                }), dataIndex)) || [];\r\n            }\r\n        }\r\n        else if (el) {\r\n            var rect = el.getBoundingRect().clone();\r\n            rect.applyTransform(el.transform);\r\n            point = [\r\n                rect.x + rect.width / 2,\r\n                rect.y + rect.height / 2\r\n            ];\r\n        }\r\n        return { point: point, el: el };\r\n    }\n\n    var inner$b = makeInner();\r\n    function axisTrigger(payload, ecModel, api) {\r\n        var currTrigger = payload.currTrigger;\r\n        var point = [payload.x, payload.y];\r\n        var finder = payload;\r\n        var dispatchAction = payload.dispatchAction || bind(api.dispatchAction, api);\r\n        var coordSysAxesInfo = ecModel.getComponent('axisPointer')\r\n            .coordSysAxesInfo;\r\n        if (!coordSysAxesInfo) {\r\n            return;\r\n        }\r\n        if (illegalPoint(point)) {\r\n            point = findPointFromSeries({\r\n                seriesIndex: finder.seriesIndex,\r\n                dataIndex: finder.dataIndex\r\n            }, ecModel).point;\r\n        }\r\n        var isIllegalPoint = illegalPoint(point);\r\n        var inputAxesInfo = finder.axesInfo;\r\n        var axesInfo = coordSysAxesInfo.axesInfo;\r\n        var shouldHide = currTrigger === 'leave' || illegalPoint(point);\r\n        var outputPayload = {};\r\n        var showValueMap = {};\r\n        var dataByCoordSys = {\r\n            list: [],\r\n            map: {}\r\n        };\r\n        var updaters = {\r\n            showPointer: curry(showPointer, showValueMap),\r\n            showTooltip: curry(showTooltip, dataByCoordSys)\r\n        };\r\n        each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\r\n            var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\r\n            each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\r\n                var axis = axisInfo.axis;\r\n                var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo);\r\n                if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\r\n                    var val = inputAxisInfo && inputAxisInfo.value;\r\n                    if (val == null && !isIllegalPoint) {\r\n                        val = axis.pointToData(point);\r\n                    }\r\n                    val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);\r\n                }\r\n            });\r\n        });\r\n        var linkTriggers = {};\r\n        each(axesInfo, function (tarAxisInfo, tarKey) {\r\n            var linkGroup = tarAxisInfo.linkGroup;\r\n            if (linkGroup && !showValueMap[tarKey]) {\r\n                each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\r\n                    var srcValItem = showValueMap[srcKey];\r\n                    if (srcAxisInfo !== tarAxisInfo && srcValItem) {\r\n                        var val = srcValItem.value;\r\n                        linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\r\n                        linkTriggers[tarAxisInfo.key] = val;\r\n                    }\r\n                });\r\n            }\r\n        });\r\n        each(linkTriggers, function (val, tarKey) {\r\n            processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);\r\n        });\r\n        updateModelActually(showValueMap, axesInfo, outputPayload);\r\n        dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\r\n        dispatchHighDownActually(axesInfo, dispatchAction, api);\r\n        return outputPayload;\r\n    }\r\n    function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {\r\n        var axis = axisInfo.axis;\r\n        if (axis.scale.isBlank() || !axis.containData(newValue)) {\r\n            return;\r\n        }\r\n        if (!axisInfo.involveSeries) {\r\n            updaters.showPointer(axisInfo, newValue);\r\n            return;\r\n        }\r\n        var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\r\n        var payloadBatch = payloadInfo.payloadBatch;\r\n        var snapToValue = payloadInfo.snapToValue;\r\n        if (payloadBatch[0] && outputFinder.seriesIndex == null) {\r\n            extend(outputFinder, payloadBatch[0]);\r\n        }\r\n        if (!noSnap && axisInfo.snap) {\r\n            if (axis.containData(snapToValue) && snapToValue != null) {\r\n                newValue = snapToValue;\r\n            }\r\n        }\r\n        updaters.showPointer(axisInfo, newValue, payloadBatch);\r\n        updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\r\n    }\r\n    function buildPayloadsBySeries(value, axisInfo) {\r\n        var axis = axisInfo.axis;\r\n        var dim = axis.dim;\r\n        var snapToValue = value;\r\n        var payloadBatch = [];\r\n        var minDist = Number.MAX_VALUE;\r\n        var minDiff = -1;\r\n        each(axisInfo.seriesModels, function (series, idx) {\r\n            var dataDim = series.getData().mapDimensionsAll(dim);\r\n            var seriesNestestValue;\r\n            var dataIndices;\r\n            if (series.getAxisTooltipData) {\r\n                var result = series.getAxisTooltipData(dataDim, value, axis);\r\n                dataIndices = result.dataIndices;\r\n                seriesNestestValue = result.nestestValue;\r\n            }\r\n            else {\r\n                dataIndices = series.getData().indicesOfNearest(dataDim[0], value, axis.type === 'category' ? 0.5 : null);\r\n                if (!dataIndices.length) {\r\n                    return;\r\n                }\r\n                seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\r\n            }\r\n            if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\r\n                return;\r\n            }\r\n            var diff = value - seriesNestestValue;\r\n            var dist = Math.abs(diff);\r\n            if (dist <= minDist) {\r\n                if (dist < minDist || (diff >= 0 && minDiff < 0)) {\r\n                    minDist = dist;\r\n                    minDiff = diff;\r\n                    snapToValue = seriesNestestValue;\r\n                    payloadBatch.length = 0;\r\n                }\r\n                each(dataIndices, function (dataIndex) {\r\n                    payloadBatch.push({\r\n                        seriesIndex: series.seriesIndex,\r\n                        dataIndexInside: dataIndex,\r\n                        dataIndex: series.getData().getRawIndex(dataIndex)\r\n                    });\r\n                });\r\n            }\r\n        });\r\n        return {\r\n            payloadBatch: payloadBatch,\r\n            snapToValue: snapToValue\r\n        };\r\n    }\r\n    function showPointer(showValueMap, axisInfo, value, payloadBatch) {\r\n        showValueMap[axisInfo.key] = {\r\n            value: value,\r\n            payloadBatch: payloadBatch\r\n        };\r\n    }\r\n    function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\r\n        var payloadBatch = payloadInfo.payloadBatch;\r\n        var axis = axisInfo.axis;\r\n        var axisModel = axis.model;\r\n        var axisPointerModel = axisInfo.axisPointerModel;\r\n        if (!axisInfo.triggerTooltip || !payloadBatch.length) {\r\n            return;\r\n        }\r\n        var coordSysModel = axisInfo.coordSys.model;\r\n        var coordSysKey = makeKey(coordSysModel);\r\n        var coordSysItem = dataByCoordSys.map[coordSysKey];\r\n        if (!coordSysItem) {\r\n            coordSysItem = dataByCoordSys.map[coordSysKey] = {\r\n                coordSysId: coordSysModel.id,\r\n                coordSysIndex: coordSysModel.componentIndex,\r\n                coordSysType: coordSysModel.type,\r\n                coordSysMainType: coordSysModel.mainType,\r\n                dataByAxis: []\r\n            };\r\n            dataByCoordSys.list.push(coordSysItem);\r\n        }\r\n        coordSysItem.dataByAxis.push({\r\n            axisDim: axis.dim,\r\n            axisIndex: axisModel.componentIndex,\r\n            axisType: axisModel.type,\r\n            axisId: axisModel.id,\r\n            value: value,\r\n            valueLabelOpt: {\r\n                precision: axisPointerModel.get(['label', 'precision']),\r\n                formatter: axisPointerModel.get(['label', 'formatter'])\r\n            },\r\n            seriesDataIndices: payloadBatch.slice()\r\n        });\r\n    }\r\n    function updateModelActually(showValueMap, axesInfo, outputPayload) {\r\n        var outputAxesInfo = outputPayload.axesInfo = [];\r\n        each(axesInfo, function (axisInfo, key) {\r\n            var option = axisInfo.axisPointerModel.option;\r\n            var valItem = showValueMap[key];\r\n            if (valItem) {\r\n                !axisInfo.useHandle && (option.status = 'show');\r\n                option.value = valItem.value;\r\n                option.seriesDataIndices = (valItem.payloadBatch || []).slice();\r\n            }\r\n            else {\r\n                !axisInfo.useHandle && (option.status = 'hide');\r\n            }\r\n            option.status === 'show' && outputAxesInfo.push({\r\n                axisDim: axisInfo.axis.dim,\r\n                axisIndex: axisInfo.axis.model.componentIndex,\r\n                value: option.value\r\n            });\r\n        });\r\n    }\r\n    function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\r\n        if (illegalPoint(point) || !dataByCoordSys.list.length) {\r\n            dispatchAction({ type: 'hideTip' });\r\n            return;\r\n        }\r\n        var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\r\n        dispatchAction({\r\n            type: 'showTip',\r\n            escapeConnect: true,\r\n            x: point[0],\r\n            y: point[1],\r\n            tooltipOption: payload.tooltipOption,\r\n            position: payload.position,\r\n            dataIndexInside: sampleItem.dataIndexInside,\r\n            dataIndex: sampleItem.dataIndex,\r\n            seriesIndex: sampleItem.seriesIndex,\r\n            dataByCoordSys: dataByCoordSys.list\r\n        });\r\n    }\r\n    function dispatchHighDownActually(axesInfo, dispatchAction, api) {\r\n        var zr = api.getZr();\r\n        var highDownKey = 'axisPointerLastHighlights';\r\n        var lastHighlights = inner$b(zr)[highDownKey] || {};\r\n        var newHighlights = inner$b(zr)[highDownKey] = {};\r\n        each(axesInfo, function (axisInfo, key) {\r\n            var option = axisInfo.axisPointerModel.option;\r\n            option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\r\n                var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\r\n                newHighlights[key] = batchItem;\r\n            });\r\n        });\r\n        var toHighlight = [];\r\n        var toDownplay = [];\r\n        each(lastHighlights, function (batchItem, key) {\r\n            !newHighlights[key] && toDownplay.push(batchItem);\r\n        });\r\n        each(newHighlights, function (batchItem, key) {\r\n            !lastHighlights[key] && toHighlight.push(batchItem);\r\n        });\r\n        toDownplay.length && api.dispatchAction({\r\n            type: 'downplay',\r\n            escapeConnect: true,\r\n            notBlur: true,\r\n            batch: toDownplay\r\n        });\r\n        toHighlight.length && api.dispatchAction({\r\n            type: 'highlight',\r\n            escapeConnect: true,\r\n            notBlur: true,\r\n            batch: toHighlight\r\n        });\r\n    }\r\n    function findInputAxisInfo(inputAxesInfo, axisInfo) {\r\n        for (var i = 0; i < (inputAxesInfo || []).length; i++) {\r\n            var inputAxisInfo = inputAxesInfo[i];\r\n            if (axisInfo.axis.dim === inputAxisInfo.axisDim\r\n                && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\r\n                return inputAxisInfo;\r\n            }\r\n        }\r\n    }\r\n    function makeMapperParam(axisInfo) {\r\n        var axisModel = axisInfo.axis.model;\r\n        var item = {};\r\n        var dim = item.axisDim = axisInfo.axis.dim;\r\n        item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\r\n        item.axisName = item[dim + 'AxisName'] = axisModel.name;\r\n        item.axisId = item[dim + 'AxisId'] = axisModel.id;\r\n        return item;\r\n    }\r\n    function illegalPoint(point) {\r\n        return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\r\n    }\n\n    var inner$c = makeInner();\r\n    var each$8 = each;\r\n    function register(key, api, handler) {\r\n        if (env.node) {\r\n            return;\r\n        }\r\n        var zr = api.getZr();\r\n        inner$c(zr).records || (inner$c(zr).records = {});\r\n        initGlobalListeners(zr, api);\r\n        var record = inner$c(zr).records[key] || (inner$c(zr).records[key] = {});\r\n        record.handler = handler;\r\n    }\r\n    function initGlobalListeners(zr, api) {\r\n        if (inner$c(zr).initialized) {\r\n            return;\r\n        }\r\n        inner$c(zr).initialized = true;\r\n        useHandler('click', curry(doEnter, 'click'));\r\n        useHandler('mousemove', curry(doEnter, 'mousemove'));\r\n        useHandler('globalout', onLeave);\r\n        function useHandler(eventType, cb) {\r\n            zr.on(eventType, function (e) {\r\n                var dis = makeDispatchAction(api);\r\n                each$8(inner$c(zr).records, function (record) {\r\n                    record && cb(record, e, dis.dispatchAction);\r\n                });\r\n                dispatchTooltipFinally(dis.pendings, api);\r\n            });\r\n        }\r\n    }\r\n    function dispatchTooltipFinally(pendings, api) {\r\n        var showLen = pendings.showTip.length;\r\n        var hideLen = pendings.hideTip.length;\r\n        var actuallyPayload;\r\n        if (showLen) {\r\n            actuallyPayload = pendings.showTip[showLen - 1];\r\n        }\r\n        else if (hideLen) {\r\n            actuallyPayload = pendings.hideTip[hideLen - 1];\r\n        }\r\n        if (actuallyPayload) {\r\n            actuallyPayload.dispatchAction = null;\r\n            api.dispatchAction(actuallyPayload);\r\n        }\r\n    }\r\n    function onLeave(record, e, dispatchAction) {\r\n        record.handler('leave', null, dispatchAction);\r\n    }\r\n    function doEnter(currTrigger, record, e, dispatchAction) {\r\n        record.handler(currTrigger, e, dispatchAction);\r\n    }\r\n    function makeDispatchAction(api) {\r\n        var pendings = {\r\n            showTip: [],\r\n            hideTip: []\r\n        };\r\n        var dispatchAction = function (payload) {\r\n            var pendingList = pendings[payload.type];\r\n            if (pendingList) {\r\n                pendingList.push(payload);\r\n            }\r\n            else {\r\n                payload.dispatchAction = dispatchAction;\r\n                api.dispatchAction(payload);\r\n            }\r\n        };\r\n        return {\r\n            dispatchAction: dispatchAction,\r\n            pendings: pendings\r\n        };\r\n    }\r\n    function unregister(key, api) {\r\n        if (env.node) {\r\n            return;\r\n        }\r\n        var zr = api.getZr();\r\n        var record = (inner$c(zr).records || {})[key];\r\n        if (record) {\r\n            inner$c(zr).records[key] = null;\r\n        }\r\n    }\n\n    var AxisPointerView = (function (_super) {\r\n        __extends(AxisPointerView, _super);\r\n        function AxisPointerView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisPointerView.type;\r\n            return _this;\r\n        }\r\n        AxisPointerView.prototype.render = function (globalAxisPointerModel, ecModel, api) {\r\n            var globalTooltipModel = ecModel.getComponent('tooltip');\r\n            var triggerOn = globalAxisPointerModel.get('triggerOn')\r\n                || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click');\r\n            register('axisPointer', api, function (currTrigger, e, dispatchAction) {\r\n                if (triggerOn !== 'none'\r\n                    && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\r\n                    dispatchAction({\r\n                        type: 'updateAxisPointer',\r\n                        currTrigger: currTrigger,\r\n                        x: e && e.offsetX,\r\n                        y: e && e.offsetY\r\n                    });\r\n                }\r\n            });\r\n        };\r\n        AxisPointerView.prototype.remove = function (ecModel, api) {\r\n            unregister('axisPointer', api);\r\n        };\r\n        AxisPointerView.prototype.dispose = function (ecModel, api) {\r\n            unregister('axisPointer', api);\r\n        };\r\n        AxisPointerView.type = 'axisPointer';\r\n        return AxisPointerView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(AxisPointerView);\n\n    var inner$d = makeInner();\r\n    var clone$3 = clone;\r\n    var bind$1 = bind;\r\n    var BaseAxisPointer = (function () {\r\n        function BaseAxisPointer() {\r\n            this._dragging = false;\r\n            this.animationThreshold = 15;\r\n        }\r\n        BaseAxisPointer.prototype.render = function (axisModel, axisPointerModel, api, forceRender) {\r\n            var value = axisPointerModel.get('value');\r\n            var status = axisPointerModel.get('status');\r\n            this._axisModel = axisModel;\r\n            this._axisPointerModel = axisPointerModel;\r\n            this._api = api;\r\n            if (!forceRender\r\n                && this._lastValue === value\r\n                && this._lastStatus === status) {\r\n                return;\r\n            }\r\n            this._lastValue = value;\r\n            this._lastStatus = status;\r\n            var group = this._group;\r\n            var handle = this._handle;\r\n            if (!status || status === 'hide') {\r\n                group && group.hide();\r\n                handle && handle.hide();\r\n                return;\r\n            }\r\n            group && group.show();\r\n            handle && handle.show();\r\n            var elOption = {};\r\n            this.makeElOption(elOption, value, axisModel, axisPointerModel, api);\r\n            var graphicKey = elOption.graphicKey;\r\n            if (graphicKey !== this._lastGraphicKey) {\r\n                this.clear(api);\r\n            }\r\n            this._lastGraphicKey = graphicKey;\r\n            var moveAnimation = this._moveAnimation =\r\n                this.determineAnimation(axisModel, axisPointerModel);\r\n            if (!group) {\r\n                group = this._group = new Group();\r\n                this.createPointerEl(group, elOption, axisModel, axisPointerModel);\r\n                this.createLabelEl(group, elOption, axisModel, axisPointerModel);\r\n                api.getZr().add(group);\r\n            }\r\n            else {\r\n                var doUpdateProps = curry(updateProps$1, axisPointerModel, moveAnimation);\r\n                this.updatePointerEl(group, elOption, doUpdateProps);\r\n                this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\r\n            }\r\n            updateMandatoryProps(group, axisPointerModel, true);\r\n            this._renderHandle(value);\r\n        };\r\n        BaseAxisPointer.prototype.remove = function (api) {\r\n            this.clear(api);\r\n        };\r\n        BaseAxisPointer.prototype.dispose = function (api) {\r\n            this.clear(api);\r\n        };\r\n        BaseAxisPointer.prototype.determineAnimation = function (axisModel, axisPointerModel) {\r\n            var animation = axisPointerModel.get('animation');\r\n            var axis = axisModel.axis;\r\n            var isCategoryAxis = axis.type === 'category';\r\n            var useSnap = axisPointerModel.get('snap');\r\n            if (!useSnap && !isCategoryAxis) {\r\n                return false;\r\n            }\r\n            if (animation === 'auto' || animation == null) {\r\n                var animationThreshold = this.animationThreshold;\r\n                if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\r\n                    return true;\r\n                }\r\n                if (useSnap) {\r\n                    var seriesDataCount = getAxisInfo(axisModel).seriesDataCount;\r\n                    var axisExtent = axis.getExtent();\r\n                    return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\r\n                }\r\n                return false;\r\n            }\r\n            return animation === true;\r\n        };\r\n        BaseAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n        };\r\n        BaseAxisPointer.prototype.createPointerEl = function (group, elOption, axisModel, axisPointerModel) {\r\n            var pointerOption = elOption.pointer;\r\n            if (pointerOption) {\r\n                var pointerEl = inner$d(group).pointerEl = new graphic[pointerOption.type](clone$3(elOption.pointer));\r\n                group.add(pointerEl);\r\n            }\r\n        };\r\n        BaseAxisPointer.prototype.createLabelEl = function (group, elOption, axisModel, axisPointerModel) {\r\n            if (elOption.label) {\r\n                var labelEl = inner$d(group).labelEl = new ZRText(clone$3(elOption.label));\r\n                group.add(labelEl);\r\n                updateLabelShowHide(labelEl, axisPointerModel);\r\n            }\r\n        };\r\n        BaseAxisPointer.prototype.updatePointerEl = function (group, elOption, updateProps) {\r\n            var pointerEl = inner$d(group).pointerEl;\r\n            if (pointerEl && elOption.pointer) {\r\n                pointerEl.setStyle(elOption.pointer.style);\r\n                updateProps(pointerEl, { shape: elOption.pointer.shape });\r\n            }\r\n        };\r\n        BaseAxisPointer.prototype.updateLabelEl = function (group, elOption, updateProps, axisPointerModel) {\r\n            var labelEl = inner$d(group).labelEl;\r\n            if (labelEl) {\r\n                labelEl.setStyle(elOption.label.style);\r\n                updateProps(labelEl, {\r\n                    x: elOption.label.x,\r\n                    y: elOption.label.y\r\n                });\r\n                updateLabelShowHide(labelEl, axisPointerModel);\r\n            }\r\n        };\r\n        BaseAxisPointer.prototype._renderHandle = function (value) {\r\n            if (this._dragging || !this.updateHandleTransform) {\r\n                return;\r\n            }\r\n            var axisPointerModel = this._axisPointerModel;\r\n            var zr = this._api.getZr();\r\n            var handle = this._handle;\r\n            var handleModel = axisPointerModel.getModel('handle');\r\n            var status = axisPointerModel.get('status');\r\n            if (!handleModel.get('show') || !status || status === 'hide') {\r\n                handle && zr.remove(handle);\r\n                this._handle = null;\r\n                return;\r\n            }\r\n            var isInit;\r\n            if (!this._handle) {\r\n                isInit = true;\r\n                handle = this._handle = createIcon(handleModel.get('icon'), {\r\n                    cursor: 'move',\r\n                    draggable: true,\r\n                    onmousemove: function (e) {\r\n                        stop(e.event);\r\n                    },\r\n                    onmousedown: bind$1(this._onHandleDragMove, this, 0, 0),\r\n                    drift: bind$1(this._onHandleDragMove, this),\r\n                    ondragend: bind$1(this._onHandleDragEnd, this)\r\n                });\r\n                zr.add(handle);\r\n            }\r\n            updateMandatoryProps(handle, axisPointerModel, false);\r\n            handle.setStyle(handleModel.getItemStyle(null, [\r\n                'color', 'borderColor', 'borderWidth', 'opacity',\r\n                'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n            ]));\r\n            var handleSize = handleModel.get('size');\r\n            if (!isArray(handleSize)) {\r\n                handleSize = [handleSize, handleSize];\r\n            }\r\n            handle.scaleX = handleSize[0] / 2;\r\n            handle.scaleY = handleSize[1] / 2;\r\n            createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\r\n            this._moveHandleToValue(value, isInit);\r\n        };\r\n        BaseAxisPointer.prototype._moveHandleToValue = function (value, isInit) {\r\n            updateProps$1(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\r\n        };\r\n        BaseAxisPointer.prototype._onHandleDragMove = function (dx, dy) {\r\n            var handle = this._handle;\r\n            if (!handle) {\r\n                return;\r\n            }\r\n            this._dragging = true;\r\n            var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\r\n            this._payloadInfo = trans;\r\n            handle.stopAnimation();\r\n            handle.attr(getHandleTransProps(trans));\r\n            inner$d(handle).lastProp = null;\r\n            this._doDispatchAxisPointer();\r\n        };\r\n        BaseAxisPointer.prototype._doDispatchAxisPointer = function () {\r\n            var handle = this._handle;\r\n            if (!handle) {\r\n                return;\r\n            }\r\n            var payloadInfo = this._payloadInfo;\r\n            var axisModel = this._axisModel;\r\n            this._api.dispatchAction({\r\n                type: 'updateAxisPointer',\r\n                x: payloadInfo.cursorPoint[0],\r\n                y: payloadInfo.cursorPoint[1],\r\n                tooltipOption: payloadInfo.tooltipOption,\r\n                axesInfo: [{\r\n                        axisDim: axisModel.axis.dim,\r\n                        axisIndex: axisModel.componentIndex\r\n                    }]\r\n            });\r\n        };\r\n        BaseAxisPointer.prototype._onHandleDragEnd = function () {\r\n            this._dragging = false;\r\n            var handle = this._handle;\r\n            if (!handle) {\r\n                return;\r\n            }\r\n            var value = this._axisPointerModel.get('value');\r\n            this._moveHandleToValue(value);\r\n            this._api.dispatchAction({\r\n                type: 'hideTip'\r\n            });\r\n        };\r\n        BaseAxisPointer.prototype.clear = function (api) {\r\n            this._lastValue = null;\r\n            this._lastStatus = null;\r\n            var zr = api.getZr();\r\n            var group = this._group;\r\n            var handle = this._handle;\r\n            if (zr && group) {\r\n                this._lastGraphicKey = null;\r\n                group && zr.remove(group);\r\n                handle && zr.remove(handle);\r\n                this._group = null;\r\n                this._handle = null;\r\n                this._payloadInfo = null;\r\n            }\r\n        };\r\n        BaseAxisPointer.prototype.doClear = function () {\r\n        };\r\n        BaseAxisPointer.prototype.buildLabel = function (xy, wh, xDimIndex) {\r\n            xDimIndex = xDimIndex || 0;\r\n            return {\r\n                x: xy[xDimIndex],\r\n                y: xy[1 - xDimIndex],\r\n                width: wh[xDimIndex],\r\n                height: wh[1 - xDimIndex]\r\n            };\r\n        };\r\n        return BaseAxisPointer;\r\n    }());\r\n    function updateProps$1(animationModel, moveAnimation, el, props) {\r\n        if (!propsEqual(inner$d(el).lastProp, props)) {\r\n            inner$d(el).lastProp = props;\r\n            moveAnimation\r\n                ? updateProps(el, props, animationModel)\r\n                : (el.stopAnimation(), el.attr(props));\r\n        }\r\n    }\r\n    function propsEqual(lastProps, newProps) {\r\n        if (isObject(lastProps) && isObject(newProps)) {\r\n            var equals_1 = true;\r\n            each(newProps, function (item, key) {\r\n                equals_1 = equals_1 && propsEqual(lastProps[key], item);\r\n            });\r\n            return !!equals_1;\r\n        }\r\n        else {\r\n            return lastProps === newProps;\r\n        }\r\n    }\r\n    function updateLabelShowHide(labelEl, axisPointerModel) {\r\n        labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']();\r\n    }\r\n    function getHandleTransProps(trans) {\r\n        return {\r\n            x: trans.x || 0,\r\n            y: trans.y || 0,\r\n            rotation: trans.rotation || 0\r\n        };\r\n    }\r\n    function updateMandatoryProps(group, axisPointerModel, silent) {\r\n        var z = axisPointerModel.get('z');\r\n        var zlevel = axisPointerModel.get('zlevel');\r\n        group && group.traverse(function (el) {\r\n            if (el.type !== 'group') {\r\n                z != null && (el.z = z);\r\n                zlevel != null && (el.zlevel = zlevel);\r\n                el.silent = silent;\r\n            }\r\n        });\r\n    }\n\n    function buildElStyle(axisPointerModel) {\r\n        var axisPointerType = axisPointerModel.get('type');\r\n        var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\r\n        var style;\r\n        if (axisPointerType === 'line') {\r\n            style = styleModel.getLineStyle();\r\n            style.fill = null;\r\n        }\r\n        else if (axisPointerType === 'shadow') {\r\n            style = styleModel.getAreaStyle();\r\n            style.stroke = null;\r\n        }\r\n        return style;\r\n    }\r\n    function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\r\n        var value = axisPointerModel.get('value');\r\n        var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\r\n            precision: axisPointerModel.get(['label', 'precision']),\r\n            formatter: axisPointerModel.get(['label', 'formatter'])\r\n        });\r\n        var labelModel = axisPointerModel.getModel('label');\r\n        var paddings = normalizeCssArray$1(labelModel.get('padding') || 0);\r\n        var font = labelModel.getFont();\r\n        var textRect = getBoundingRect(text, font);\r\n        var position = labelPos.position;\r\n        var width = textRect.width + paddings[1] + paddings[3];\r\n        var height = textRect.height + paddings[0] + paddings[2];\r\n        var align = labelPos.align;\r\n        align === 'right' && (position[0] -= width);\r\n        align === 'center' && (position[0] -= width / 2);\r\n        var verticalAlign = labelPos.verticalAlign;\r\n        verticalAlign === 'bottom' && (position[1] -= height);\r\n        verticalAlign === 'middle' && (position[1] -= height / 2);\r\n        confineInContainer(position, width, height, api);\r\n        var bgColor = labelModel.get('backgroundColor');\r\n        if (!bgColor || bgColor === 'auto') {\r\n            bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n        }\r\n        elOption.label = {\r\n            x: position[0],\r\n            y: position[1],\r\n            style: createTextStyle(labelModel, {\r\n                text: text,\r\n                font: font,\r\n                fill: labelModel.getTextColor(),\r\n                padding: paddings,\r\n                backgroundColor: bgColor\r\n            }),\r\n            z2: 10\r\n        };\r\n    }\r\n    function confineInContainer(position, width, height, api) {\r\n        var viewWidth = api.getWidth();\r\n        var viewHeight = api.getHeight();\r\n        position[0] = Math.min(position[0] + width, viewWidth) - width;\r\n        position[1] = Math.min(position[1] + height, viewHeight) - height;\r\n        position[0] = Math.max(position[0], 0);\r\n        position[1] = Math.max(position[1], 0);\r\n    }\r\n    function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\r\n        value = axis.scale.parse(value);\r\n        var text = axis.scale.getLabel({\r\n            value: value\r\n        }, {\r\n            precision: opt.precision\r\n        });\r\n        var formatter = opt.formatter;\r\n        if (formatter) {\r\n            var params_1 = {\r\n                value: getAxisRawValue(axis, { value: value }),\r\n                axisDimension: axis.dim,\r\n                axisIndex: axis.index,\r\n                seriesData: []\r\n            };\r\n            each(seriesDataIndices, function (idxItem) {\r\n                var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\r\n                var dataIndex = idxItem.dataIndexInside;\r\n                var dataParams = series && series.getDataParams(dataIndex);\r\n                dataParams && params_1.seriesData.push(dataParams);\r\n            });\r\n            if (isString(formatter)) {\r\n                text = formatter.replace('{value}', text);\r\n            }\r\n            else if (isFunction(formatter)) {\r\n                text = formatter(params_1);\r\n            }\r\n        }\r\n        return text;\r\n    }\r\n    function getTransformedPosition(axis, value, layoutInfo) {\r\n        var transform = create$1();\r\n        rotate(transform, transform, layoutInfo.rotation);\r\n        translate(transform, transform, layoutInfo.position);\r\n        return applyTransform$1([\r\n            axis.dataToCoord(value),\r\n            (layoutInfo.labelOffset || 0)\r\n                + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)\r\n        ], transform);\r\n    }\r\n    function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\r\n        var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\r\n        layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin']);\r\n        buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\r\n            position: getTransformedPosition(axisModel.axis, value, layoutInfo),\r\n            align: textLayout.textAlign,\r\n            verticalAlign: textLayout.textVerticalAlign\r\n        });\r\n    }\r\n    function makeLineShape(p1, p2, xDimIndex) {\r\n        xDimIndex = xDimIndex || 0;\r\n        return {\r\n            x1: p1[xDimIndex],\r\n            y1: p1[1 - xDimIndex],\r\n            x2: p2[xDimIndex],\r\n            y2: p2[1 - xDimIndex]\r\n        };\r\n    }\r\n    function makeRectShape(xy, wh, xDimIndex) {\r\n        xDimIndex = xDimIndex || 0;\r\n        return {\r\n            x: xy[xDimIndex],\r\n            y: xy[1 - xDimIndex],\r\n            width: wh[xDimIndex],\r\n            height: wh[1 - xDimIndex]\r\n        };\r\n    }\r\n    function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\r\n        return {\r\n            cx: cx,\r\n            cy: cy,\r\n            r0: r0,\r\n            r: r,\r\n            startAngle: startAngle,\r\n            endAngle: endAngle,\r\n            clockwise: true\r\n        };\r\n    }\n\n    var CartesianAxisPointer = (function (_super) {\r\n        __extends(CartesianAxisPointer, _super);\r\n        function CartesianAxisPointer() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        CartesianAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n            var axis = axisModel.axis;\r\n            var grid = axis.grid;\r\n            var axisPointerType = axisPointerModel.get('type');\r\n            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\r\n            var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\r\n            if (axisPointerType && axisPointerType !== 'none') {\r\n                var elStyle = buildElStyle(axisPointerModel);\r\n                var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\r\n                pointerOption.style = elStyle;\r\n                elOption.graphicKey = pointerOption.type;\r\n                elOption.pointer = pointerOption;\r\n            }\r\n            var layoutInfo = layout$1(grid.model, axisModel);\r\n            buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\r\n        };\r\n        CartesianAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\r\n            var layoutInfo = layout$1(axisModel.axis.grid.model, axisModel, {\r\n                labelInside: false\r\n            });\r\n            layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\r\n            var pos = getTransformedPosition(axisModel.axis, value, layoutInfo);\r\n            return {\r\n                x: pos[0],\r\n                y: pos[1],\r\n                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\r\n            };\r\n        };\r\n        CartesianAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\r\n            var axis = axisModel.axis;\r\n            var grid = axis.grid;\r\n            var axisExtent = axis.getGlobalExtent(true);\r\n            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\r\n            var dimIndex = axis.dim === 'x' ? 0 : 1;\r\n            var currPosition = [transform.x, transform.y];\r\n            currPosition[dimIndex] += delta[dimIndex];\r\n            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\r\n            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\r\n            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\r\n            var cursorPoint = [cursorOtherValue, cursorOtherValue];\r\n            cursorPoint[dimIndex] = currPosition[dimIndex];\r\n            var tooltipOptions = [\r\n                { verticalAlign: 'middle' },\r\n                { align: 'center' }\r\n            ];\r\n            return {\r\n                x: currPosition[0],\r\n                y: currPosition[1],\r\n                rotation: transform.rotation,\r\n                cursorPoint: cursorPoint,\r\n                tooltipOption: tooltipOptions[dimIndex]\r\n            };\r\n        };\r\n        return CartesianAxisPointer;\r\n    }(BaseAxisPointer));\r\n    function getCartesian(grid, axis) {\r\n        var opt = {};\r\n        opt[axis.dim + 'AxisIndex'] = axis.index;\r\n        return grid.getCartesian(opt);\r\n    }\r\n    var pointerShapeBuilder = {\r\n        line: function (axis, pixelValue, otherExtent) {\r\n            var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\r\n            return {\r\n                type: 'Line',\r\n                subPixelOptimize: true,\r\n                shape: targetShape\r\n            };\r\n        },\r\n        shadow: function (axis, pixelValue, otherExtent) {\r\n            var bandWidth = Math.max(1, axis.getBandWidth());\r\n            var span = otherExtent[1] - otherExtent[0];\r\n            return {\r\n                type: 'Rect',\r\n                shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\r\n            };\r\n        }\r\n    };\r\n    function getAxisDimIndex(axis) {\r\n        return axis.dim === 'x' ? 0 : 1;\r\n    }\r\n    AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\n\n    var AxisPointerModel = (function (_super) {\r\n        __extends(AxisPointerModel, _super);\r\n        function AxisPointerModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisPointerModel.type;\r\n            return _this;\r\n        }\r\n        AxisPointerModel.type = 'axisPointer';\r\n        AxisPointerModel.defaultOption = {\r\n            show: 'auto',\r\n            zlevel: 0,\r\n            z: 50,\r\n            type: 'line',\r\n            snap: false,\r\n            triggerTooltip: true,\r\n            value: null,\r\n            status: null,\r\n            link: [],\r\n            animation: null,\r\n            animationDurationUpdate: 200,\r\n            lineStyle: {\r\n                color: '#B9BEC9',\r\n                width: 1,\r\n                type: 'dashed'\r\n            },\r\n            shadowStyle: {\r\n                color: 'rgba(210,219,238,0.2)'\r\n            },\r\n            label: {\r\n                show: true,\r\n                formatter: null,\r\n                precision: 'auto',\r\n                margin: 3,\r\n                color: '#fff',\r\n                padding: [5, 7, 5, 7],\r\n                backgroundColor: 'auto',\r\n                borderColor: null,\r\n                borderWidth: 0,\r\n                borderRadius: 3\r\n            },\r\n            handle: {\r\n                show: false,\r\n                icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\r\n                size: 45,\r\n                margin: 50,\r\n                color: '#333',\r\n                shadowBlur: 3,\r\n                shadowColor: '#aaa',\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 2,\r\n                throttle: 40\r\n            }\r\n        };\r\n        return AxisPointerModel;\r\n    }(ComponentModel));\n\n    ComponentModel.registerClass(AxisPointerModel);\r\n    registerPreprocessor(function (option) {\r\n        if (option) {\r\n            (!option.axisPointer || option.axisPointer.length === 0)\r\n                && (option.axisPointer = {});\r\n            var link = option.axisPointer.link;\r\n            if (link && !isArray(link)) {\r\n                option.axisPointer.link = [link];\r\n            }\r\n        }\r\n    });\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\r\n        ecModel.getComponent('axisPointer').coordSysAxesInfo =\r\n            collect(ecModel, api);\r\n    });\r\n    registerAction({\r\n        type: 'updateAxisPointer',\r\n        event: 'updateAxisPointer',\r\n        update: ':updateAxisPointer'\r\n    }, axisTrigger);\n\n    var XY = ['x', 'y'];\r\n    var WH = ['width', 'height'];\r\n    var SingleAxisPointer = (function (_super) {\r\n        __extends(SingleAxisPointer, _super);\r\n        function SingleAxisPointer() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SingleAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n            var axis = axisModel.axis;\r\n            var coordSys = axis.coordinateSystem;\r\n            var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\r\n            var pixelValue = coordSys.dataToPoint(value)[0];\r\n            var axisPointerType = axisPointerModel.get('type');\r\n            if (axisPointerType && axisPointerType !== 'none') {\r\n                var elStyle = buildElStyle(axisPointerModel);\r\n                var pointerOption = pointerShapeBuilder$1[axisPointerType](axis, pixelValue, otherExtent);\r\n                pointerOption.style = elStyle;\r\n                elOption.graphicKey = pointerOption.type;\r\n                elOption.pointer = pointerOption;\r\n            }\r\n            var layoutInfo = layout$2(axisModel);\r\n            buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\r\n        };\r\n        SingleAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\r\n            var layoutInfo = layout$2(axisModel, { labelInside: false });\r\n            layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\r\n            var position = getTransformedPosition(axisModel.axis, value, layoutInfo);\r\n            return {\r\n                x: position[0],\r\n                y: position[1],\r\n                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\r\n            };\r\n        };\r\n        SingleAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\r\n            var axis = axisModel.axis;\r\n            var coordSys = axis.coordinateSystem;\r\n            var dimIndex = getPointDimIndex(axis);\r\n            var axisExtent = getGlobalExtent(coordSys, dimIndex);\r\n            var currPosition = [transform.x, transform.y];\r\n            currPosition[dimIndex] += delta[dimIndex];\r\n            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\r\n            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\r\n            var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\r\n            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\r\n            var cursorPoint = [cursorOtherValue, cursorOtherValue];\r\n            cursorPoint[dimIndex] = currPosition[dimIndex];\r\n            return {\r\n                x: currPosition[0],\r\n                y: currPosition[1],\r\n                rotation: transform.rotation,\r\n                cursorPoint: cursorPoint,\r\n                tooltipOption: {\r\n                    verticalAlign: 'middle'\r\n                }\r\n            };\r\n        };\r\n        return SingleAxisPointer;\r\n    }(BaseAxisPointer));\r\n    var pointerShapeBuilder$1 = {\r\n        line: function (axis, pixelValue, otherExtent) {\r\n            var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\r\n            return {\r\n                type: 'Line',\r\n                subPixelOptimize: true,\r\n                shape: targetShape\r\n            };\r\n        },\r\n        shadow: function (axis, pixelValue, otherExtent) {\r\n            var bandWidth = axis.getBandWidth();\r\n            var span = otherExtent[1] - otherExtent[0];\r\n            return {\r\n                type: 'Rect',\r\n                shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\r\n            };\r\n        }\r\n    };\r\n    function getPointDimIndex(axis) {\r\n        return axis.isHorizontal() ? 0 : 1;\r\n    }\r\n    function getGlobalExtent(coordSys, dimIndex) {\r\n        var rect = coordSys.getRect();\r\n        return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\r\n    }\r\n    AxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\n\n    extendComponentView({\r\n        type: 'single'\r\n    });\n\n    var DATA_NAME_INDEX = 2;\r\n    var ThemeRiverSeriesModel = (function (_super) {\r\n        __extends(ThemeRiverSeriesModel, _super);\r\n        function ThemeRiverSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ThemeRiverSeriesModel.type;\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        ThemeRiverSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n        };\r\n        ThemeRiverSeriesModel.prototype.fixData = function (data) {\r\n            var rawDataLength = data.length;\r\n            var timeValueKeys = {};\r\n            var groupResult = groupData(data, function (item) {\r\n                if (!timeValueKeys.hasOwnProperty(item[0] + '')) {\r\n                    timeValueKeys[item[0] + ''] = -1;\r\n                }\r\n                return item[2];\r\n            });\r\n            var layerData = [];\r\n            groupResult.buckets.each(function (items, key) {\r\n                layerData.push({\r\n                    name: key, dataList: items\r\n                });\r\n            });\r\n            var layerNum = layerData.length;\r\n            for (var k = 0; k < layerNum; ++k) {\r\n                var name_1 = layerData[k].name;\r\n                for (var j = 0; j < layerData[k].dataList.length; ++j) {\r\n                    var timeValue = layerData[k].dataList[j][0] + '';\r\n                    timeValueKeys[timeValue] = k;\r\n                }\r\n                for (var timeValue in timeValueKeys) {\r\n                    if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {\r\n                        timeValueKeys[timeValue] = k;\r\n                        data[rawDataLength] = [timeValue, 0, name_1];\r\n                        rawDataLength++;\r\n                    }\r\n                }\r\n            }\r\n            return data;\r\n        };\r\n        ThemeRiverSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            var singleAxisModel = this.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n            var axisType = singleAxisModel.get('type');\r\n            var filterData = filter(option.data, function (dataItem) {\r\n                return dataItem[2] !== undefined;\r\n            });\r\n            var data = this.fixData(filterData || []);\r\n            var nameList = [];\r\n            var nameMap = this.nameMap = createHashMap();\r\n            var count = 0;\r\n            for (var i = 0; i < data.length; ++i) {\r\n                nameList.push(data[i][DATA_NAME_INDEX]);\r\n                if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\r\n                    nameMap.set(data[i][DATA_NAME_INDEX], count);\r\n                    count++;\r\n                }\r\n            }\r\n            var dimensionsInfo = createDimensions(data, {\r\n                coordDimensions: ['single'],\r\n                dimensionsDefine: [\r\n                    {\r\n                        name: 'time',\r\n                        type: getDimensionTypeByAxis(axisType)\r\n                    },\r\n                    {\r\n                        name: 'value',\r\n                        type: 'float'\r\n                    },\r\n                    {\r\n                        name: 'name',\r\n                        type: 'ordinal'\r\n                    }\r\n                ],\r\n                encodeDefine: {\r\n                    single: 0,\r\n                    value: 1,\r\n                    itemName: 2\r\n                }\r\n            });\r\n            var list = new List(dimensionsInfo, this);\r\n            list.initData(data);\r\n            return list;\r\n        };\r\n        ThemeRiverSeriesModel.prototype.getLayerSeries = function () {\r\n            var data = this.getData();\r\n            var lenCount = data.count();\r\n            var indexArr = [];\r\n            for (var i = 0; i < lenCount; ++i) {\r\n                indexArr[i] = i;\r\n            }\r\n            var timeDim = data.mapDimension('single');\r\n            var groupResult = groupData(indexArr, function (index) {\r\n                return data.get('name', index);\r\n            });\r\n            var layerSeries = [];\r\n            groupResult.buckets.each(function (items, key) {\r\n                items.sort(function (index1, index2) {\r\n                    return data.get(timeDim, index1) - data.get(timeDim, index2);\r\n                });\r\n                layerSeries.push({\r\n                    name: key,\r\n                    indices: items\r\n                });\r\n            });\r\n            return layerSeries;\r\n        };\r\n        ThemeRiverSeriesModel.prototype.getAxisTooltipData = function (dim, value, baseAxis) {\r\n            if (!isArray(dim)) {\r\n                dim = dim ? [dim] : [];\r\n            }\r\n            var data = this.getData();\r\n            var layerSeries = this.getLayerSeries();\r\n            var indices = [];\r\n            var layerNum = layerSeries.length;\r\n            var nestestValue;\r\n            for (var i = 0; i < layerNum; ++i) {\r\n                var minDist = Number.MAX_VALUE;\r\n                var nearestIdx = -1;\r\n                var pointNum = layerSeries[i].indices.length;\r\n                for (var j = 0; j < pointNum; ++j) {\r\n                    var theValue = data.get(dim[0], layerSeries[i].indices[j]);\r\n                    var dist = Math.abs(theValue - value);\r\n                    if (dist <= minDist) {\r\n                        nestestValue = theValue;\r\n                        minDist = dist;\r\n                        nearestIdx = layerSeries[i].indices[j];\r\n                    }\r\n                }\r\n                indices.push(nearestIdx);\r\n            }\r\n            return { dataIndices: indices, nestestValue: nestestValue };\r\n        };\r\n        ThemeRiverSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var data = this.getData();\r\n            var name = data.getName(dataIndex);\r\n            var value = data.get(data.mapDimension('value'), dataIndex);\r\n            return createTooltipMarkup('nameValue', { name: name, value: value });\r\n        };\r\n        ThemeRiverSeriesModel.type = 'series.themeRiver';\r\n        ThemeRiverSeriesModel.dependencies = ['singleAxis'];\r\n        ThemeRiverSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'singleAxis',\r\n            boundaryGap: ['10%', '10%'],\r\n            singleAxisIndex: 0,\r\n            animationEasing: 'linear',\r\n            label: {\r\n                margin: 4,\r\n                show: true,\r\n                position: 'left',\r\n                fontSize: 11\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                }\r\n            }\r\n        };\r\n        return ThemeRiverSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(ThemeRiverSeriesModel);\n\n    var ThemeRiverView = (function (_super) {\r\n        __extends(ThemeRiverView, _super);\r\n        function ThemeRiverView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ThemeRiverView.type;\r\n            _this._layers = [];\r\n            return _this;\r\n        }\r\n        ThemeRiverView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var self = this;\r\n            var group = this.group;\r\n            var layersSeries = seriesModel.getLayerSeries();\r\n            var layoutInfo = data.getLayout('layoutInfo');\r\n            var rect = layoutInfo.rect;\r\n            var boundaryGap = layoutInfo.boundaryGap;\r\n            group.x = 0;\r\n            group.y = rect.y + boundaryGap[0];\r\n            function keyGetter(item) {\r\n                return item.name;\r\n            }\r\n            var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter);\r\n            var newLayersGroups = [];\r\n            dataDiffer\r\n                .add(bind(process, this, 'add'))\r\n                .update(bind(process, this, 'update'))\r\n                .remove(bind(process, this, 'remove'))\r\n                .execute();\r\n            function process(status, idx, oldIdx) {\r\n                var oldLayersGroups = self._layers;\r\n                if (status === 'remove') {\r\n                    group.remove(oldLayersGroups[idx]);\r\n                    return;\r\n                }\r\n                var points0 = [];\r\n                var points1 = [];\r\n                var style;\r\n                var indices = layersSeries[idx].indices;\r\n                var j = 0;\r\n                for (; j < indices.length; j++) {\r\n                    var layout = data.getItemLayout(indices[j]);\r\n                    var x = layout.x;\r\n                    var y0 = layout.y0;\r\n                    var y = layout.y;\r\n                    points0.push(x, y0);\r\n                    points1.push(x, y0 + y);\r\n                    style = data.getItemVisual(indices[j], 'style');\r\n                }\r\n                var polygon;\r\n                var textLayout = data.getItemLayout(indices[0]);\r\n                var labelModel = seriesModel.getModel('label');\r\n                var margin = labelModel.get('margin');\r\n                var emphasisModel = seriesModel.getModel('emphasis');\r\n                if (status === 'add') {\r\n                    var layerGroup = newLayersGroups[idx] = new Group();\r\n                    polygon = new ECPolygon({\r\n                        shape: {\r\n                            points: points0,\r\n                            stackedOnPoints: points1,\r\n                            smooth: 0.4,\r\n                            stackedOnSmooth: 0.4,\r\n                            smoothConstraint: false\r\n                        },\r\n                        z2: 0\r\n                    });\r\n                    layerGroup.add(polygon);\r\n                    group.add(layerGroup);\r\n                    if (seriesModel.isAnimationEnabled()) {\r\n                        polygon.setClipPath(createGridClipShape$2(polygon.getBoundingRect(), seriesModel, function () {\r\n                            polygon.removeClipPath();\r\n                        }));\r\n                    }\r\n                }\r\n                else {\r\n                    var layerGroup = oldLayersGroups[oldIdx];\r\n                    polygon = layerGroup.childAt(0);\r\n                    group.add(layerGroup);\r\n                    newLayersGroups[idx] = layerGroup;\r\n                    updateProps(polygon, {\r\n                        shape: {\r\n                            points: points0,\r\n                            stackedOnPoints: points1\r\n                        }\r\n                    }, seriesModel);\r\n                }\r\n                setLabelStyle(polygon, getLabelStatesModels(seriesModel), {\r\n                    labelDataIndex: indices[j - 1],\r\n                    defaultText: data.getName(indices[j - 1]),\r\n                    inheritColor: style.fill\r\n                }, {\r\n                    normal: {\r\n                        verticalAlign: 'middle'\r\n                    }\r\n                });\r\n                polygon.setTextConfig({\r\n                    position: null,\r\n                    local: true\r\n                });\r\n                var labelEl = polygon.getTextContent();\r\n                if (labelEl) {\r\n                    labelEl.x = textLayout.x - margin;\r\n                    labelEl.y = textLayout.y0 + textLayout.y / 2;\r\n                }\r\n                polygon.useStyle(style);\r\n                data.setItemGraphicEl(idx, polygon);\r\n                setStatesStylesFromModel(polygon, seriesModel);\r\n                enableHoverEmphasis(polygon, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n            }\r\n            this._layersSeries = layersSeries;\r\n            this._layers = newLayersGroups;\r\n        };\r\n        ThemeRiverView.type = 'themeRiver';\r\n        return ThemeRiverView;\r\n    }(ChartView));\r\n    function createGridClipShape$2(rect, seriesModel, cb) {\r\n        var rectEl = new Rect({\r\n            shape: {\r\n                x: rect.x - 10,\r\n                y: rect.y - 10,\r\n                width: 0,\r\n                height: rect.height + 20\r\n            }\r\n        });\r\n        initProps(rectEl, {\r\n            shape: {\r\n                x: rect.x - 50,\r\n                width: rect.width + 100,\r\n                height: rect.height + 20\r\n            }\r\n        }, seriesModel, cb);\r\n        return rectEl;\r\n    }\r\n    ChartView.registerClass(ThemeRiverView);\n\n    function themeRiverLayout(ecModel, api) {\r\n        ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var single = seriesModel.coordinateSystem;\r\n            var layoutInfo = {};\r\n            var rect = single.getRect();\r\n            layoutInfo.rect = rect;\r\n            var boundaryGap = seriesModel.get('boundaryGap');\r\n            var axis = single.getAxis();\r\n            layoutInfo.boundaryGap = boundaryGap;\r\n            if (axis.orient === 'horizontal') {\r\n                boundaryGap[0] = parsePercent$2(boundaryGap[0], rect.height);\r\n                boundaryGap[1] = parsePercent$2(boundaryGap[1], rect.height);\r\n                var height = rect.height - boundaryGap[0] - boundaryGap[1];\r\n                doThemeRiverLayout(data, seriesModel, height);\r\n            }\r\n            else {\r\n                boundaryGap[0] = parsePercent$2(boundaryGap[0], rect.width);\r\n                boundaryGap[1] = parsePercent$2(boundaryGap[1], rect.width);\r\n                var width = rect.width - boundaryGap[0] - boundaryGap[1];\r\n                doThemeRiverLayout(data, seriesModel, width);\r\n            }\r\n            data.setLayout('layoutInfo', layoutInfo);\r\n        });\r\n    }\r\n    function doThemeRiverLayout(data, seriesModel, height) {\r\n        if (!data.count()) {\r\n            return;\r\n        }\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        var layerSeries = seriesModel.getLayerSeries();\r\n        var timeDim = data.mapDimension('single');\r\n        var valueDim = data.mapDimension('value');\r\n        var layerPoints = map(layerSeries, function (singleLayer) {\r\n            return map(singleLayer.indices, function (idx) {\r\n                var pt = coordSys.dataToPoint(data.get(timeDim, idx));\r\n                pt[1] = data.get(valueDim, idx);\r\n                return pt;\r\n            });\r\n        });\r\n        var base = computeBaseline(layerPoints);\r\n        var baseLine = base.y0;\r\n        var ky = height / base.max;\r\n        var n = layerSeries.length;\r\n        var m = layerSeries[0].indices.length;\r\n        var baseY0;\r\n        for (var j = 0; j < m; ++j) {\r\n            baseY0 = baseLine[j] * ky;\r\n            data.setItemLayout(layerSeries[0].indices[j], {\r\n                layerIndex: 0,\r\n                x: layerPoints[0][j][0],\r\n                y0: baseY0,\r\n                y: layerPoints[0][j][1] * ky\r\n            });\r\n            for (var i = 1; i < n; ++i) {\r\n                baseY0 += layerPoints[i - 1][j][1] * ky;\r\n                data.setItemLayout(layerSeries[i].indices[j], {\r\n                    layerIndex: i,\r\n                    x: layerPoints[i][j][0],\r\n                    y0: baseY0,\r\n                    y: layerPoints[i][j][1] * ky\r\n                });\r\n            }\r\n        }\r\n    }\r\n    function computeBaseline(data) {\r\n        var layerNum = data.length;\r\n        var pointNum = data[0].length;\r\n        var sums = [];\r\n        var y0 = [];\r\n        var max = 0;\r\n        for (var i = 0; i < pointNum; ++i) {\r\n            var temp = 0;\r\n            for (var j = 0; j < layerNum; ++j) {\r\n                temp += data[j][i][1];\r\n            }\r\n            if (temp > max) {\r\n                max = temp;\r\n            }\r\n            sums.push(temp);\r\n        }\r\n        for (var k = 0; k < pointNum; ++k) {\r\n            y0[k] = (max - sums[k]) / 2;\r\n        }\r\n        max = 0;\r\n        for (var l = 0; l < pointNum; ++l) {\r\n            var sum = sums[l] + y0[l];\r\n            if (sum > max) {\r\n                max = sum;\r\n            }\r\n        }\r\n        return {\r\n            y0: y0,\r\n            max: max\r\n        };\r\n    }\n\n    registerLayout(themeRiverLayout);\r\n    registerProcessor(dataFilter('themeRiver'));\n\n    var SunburstSeriesModel = (function (_super) {\r\n        __extends(SunburstSeriesModel, _super);\r\n        function SunburstSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SunburstSeriesModel.type;\r\n            _this.ignoreStyleOnData = true;\r\n            return _this;\r\n        }\r\n        SunburstSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            var root = { name: option.name, children: option.data };\r\n            completeTreeValue$1(root);\r\n            var levelModels = map(option.levels || [], function (levelDefine) {\r\n                return new Model(levelDefine, this, ecModel);\r\n            }, this);\r\n            var tree = Tree.createTree(root, this, beforeLink);\r\n            function beforeLink(nodeData) {\r\n                nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n                    var node = tree.getNodeByDataIndex(idx);\r\n                    var levelModel = levelModels[node.depth];\r\n                    levelModel && (model.parentModel = levelModel);\r\n                    return model;\r\n                });\r\n            }\r\n            return tree.data;\r\n        };\r\n        SunburstSeriesModel.prototype.optionUpdated = function () {\r\n            this.resetViewRoot();\r\n        };\r\n        SunburstSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var params = _super.prototype.getDataParams.apply(this, arguments);\r\n            var node = this.getData().tree.getNodeByDataIndex(dataIndex);\r\n            params.treePathInfo = wrapTreePathInfo(node, this);\r\n            return params;\r\n        };\r\n        SunburstSeriesModel.prototype.getViewRoot = function () {\r\n            return this._viewRoot;\r\n        };\r\n        SunburstSeriesModel.prototype.resetViewRoot = function (viewRoot) {\r\n            viewRoot\r\n                ? (this._viewRoot = viewRoot)\r\n                : (viewRoot = this._viewRoot);\r\n            var root = this.getRawData().tree.root;\r\n            if (!viewRoot\r\n                || (viewRoot !== root && !root.contains(viewRoot))) {\r\n                this._viewRoot = root;\r\n            }\r\n        };\r\n        SunburstSeriesModel.prototype.enableAriaDecal = function () {\r\n            enableAriaDecalForTree(this);\r\n        };\r\n        SunburstSeriesModel.type = 'series.sunburst';\r\n        SunburstSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            center: ['50%', '50%'],\r\n            radius: [0, '75%'],\r\n            clockwise: true,\r\n            startAngle: 90,\r\n            minAngle: 0,\r\n            stillShowZeroSum: true,\r\n            nodeClick: 'rootToNode',\r\n            renderLabelForZeroData: false,\r\n            label: {\r\n                rotate: 'radial',\r\n                show: true,\r\n                opacity: 1,\r\n                align: 'center',\r\n                position: 'inside',\r\n                distance: 5,\r\n                silent: true\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 1,\r\n                borderColor: 'white',\r\n                borderType: 'solid',\r\n                shadowBlur: 0,\r\n                shadowColor: 'rgba(0, 0, 0, 0.2)',\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 0,\r\n                opacity: 1\r\n            },\r\n            emphasis: {\r\n                focus: 'descendant'\r\n            },\r\n            blur: {\r\n                itemStyle: {\r\n                    opacity: 0.2\r\n                },\r\n                label: {\r\n                    opacity: 0.1\r\n                }\r\n            },\r\n            animationType: 'expansion',\r\n            animationDuration: 1000,\r\n            animationDurationUpdate: 500,\r\n            data: [],\r\n            levels: [],\r\n            sort: 'desc'\r\n        };\r\n        return SunburstSeriesModel;\r\n    }(SeriesModel));\r\n    function completeTreeValue$1(dataNode) {\r\n        var sum = 0;\r\n        each(dataNode.children, function (child) {\r\n            completeTreeValue$1(child);\r\n            var childValue = child.value;\r\n            isArray(childValue) && (childValue = childValue[0]);\r\n            sum += childValue;\r\n        });\r\n        var thisValue = dataNode.value;\r\n        if (isArray(thisValue)) {\r\n            thisValue = thisValue[0];\r\n        }\r\n        if (thisValue == null || isNaN(thisValue)) {\r\n            thisValue = sum;\r\n        }\r\n        if (thisValue < 0) {\r\n            thisValue = 0;\r\n        }\r\n        isArray(dataNode.value)\r\n            ? (dataNode.value[0] = thisValue)\r\n            : (dataNode.value = thisValue);\r\n    }\r\n    SeriesModel.registerClass(SunburstSeriesModel);\n\n    var DEFAULT_SECTOR_Z = 2;\r\n    var DEFAULT_TEXT_Z = 4;\r\n    var SunburstPiece = (function (_super) {\r\n        __extends(SunburstPiece, _super);\r\n        function SunburstPiece(node, seriesModel, ecModel, api) {\r\n            var _this = _super.call(this) || this;\r\n            _this.z2 = DEFAULT_SECTOR_Z;\r\n            _this.textConfig = {\r\n                inside: true\r\n            };\r\n            getECData(_this).seriesIndex = seriesModel.seriesIndex;\r\n            var text = new ZRText({\r\n                z2: DEFAULT_TEXT_Z,\r\n                silent: node.getModel().get(['label', 'silent'])\r\n            });\r\n            _this.setTextContent(text);\r\n            _this.updateData(true, node, seriesModel, ecModel, api);\r\n            return _this;\r\n        }\r\n        SunburstPiece.prototype.updateData = function (firstCreate, node, seriesModel, ecModel, api) {\r\n            this.node = node;\r\n            node.piece = this;\r\n            seriesModel = seriesModel || this._seriesModel;\r\n            ecModel = ecModel || this._ecModel;\r\n            var sector = this;\r\n            getECData(sector).dataIndex = node.dataIndex;\r\n            var itemModel = node.getModel();\r\n            var emphasisModel = itemModel.getModel('emphasis');\r\n            var layout = node.getLayout();\r\n            var sectorShape = extend({}, layout);\r\n            sectorShape.label = null;\r\n            var normalStyle = node.getVisual('style');\r\n            normalStyle.lineJoin = 'bevel';\r\n            var decal = node.getVisual('decal');\r\n            if (decal) {\r\n                normalStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n            }\r\n            var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape);\r\n            extend(sectorShape, cornerRadius);\r\n            each(SPECIAL_STATES, function (stateName) {\r\n                var state = sector.ensureState(stateName);\r\n                var itemStyleModel = itemModel.getModel([stateName, 'itemStyle']);\r\n                state.style = itemStyleModel.getItemStyle();\r\n                var cornerRadius = getSectorCornerRadius(itemStyleModel, sectorShape);\r\n                if (cornerRadius) {\r\n                    state.shape = cornerRadius;\r\n                }\r\n            });\r\n            if (firstCreate) {\r\n                sector.setShape(sectorShape);\r\n                sector.shape.r = layout.r0;\r\n                updateProps(sector, {\r\n                    shape: {\r\n                        r: layout.r\r\n                    }\r\n                }, seriesModel, node.dataIndex);\r\n            }\r\n            else {\r\n                updateProps(sector, {\r\n                    shape: sectorShape\r\n                }, seriesModel);\r\n            }\r\n            sector.useStyle(normalStyle);\r\n            this._updateLabel(seriesModel);\r\n            var cursorStyle = itemModel.getShallow('cursor');\r\n            cursorStyle && sector.attr('cursor', cursorStyle);\r\n            this._seriesModel = seriesModel || this._seriesModel;\r\n            this._ecModel = ecModel || this._ecModel;\r\n            var focus = emphasisModel.get('focus');\r\n            var focusDataIndices = focus === 'ancestor'\r\n                ? node.getAncestorsIndices()\r\n                : focus === 'descendant' ? node.getDescendantIndices() : null;\r\n            enableHoverEmphasis(this, focusDataIndices || focus, emphasisModel.get('blurScope'));\r\n        };\r\n        SunburstPiece.prototype._updateLabel = function (seriesModel) {\r\n            var _this = this;\r\n            var itemModel = this.node.getModel();\r\n            var normalLabelModel = itemModel.getModel('label');\r\n            var layout = this.node.getLayout();\r\n            var angle = layout.endAngle - layout.startAngle;\r\n            var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n            var dx = Math.cos(midAngle);\r\n            var dy = Math.sin(midAngle);\r\n            var sector = this;\r\n            var label = sector.getTextContent();\r\n            var dataIndex = this.node.dataIndex;\r\n            var labelMinAngle = normalLabelModel.get('minAngle') / 180 * Math.PI;\r\n            var isNormalShown = normalLabelModel.get('show')\r\n                && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle);\r\n            label.ignore = !isNormalShown;\r\n            each(DISPLAY_STATES, function (stateName) {\r\n                var labelStateModel = stateName === 'normal' ? itemModel.getModel('label')\r\n                    : itemModel.getModel([stateName, 'label']);\r\n                var isNormal = stateName === 'normal';\r\n                var state = isNormal ? label : label.ensureState(stateName);\r\n                var text = seriesModel.getFormattedLabel(dataIndex, stateName);\r\n                if (isNormal) {\r\n                    text = text || _this.node.name;\r\n                }\r\n                state.style = createTextStyle(labelStateModel, {}, null, stateName !== 'normal', true);\r\n                if (text) {\r\n                    state.style.text = text;\r\n                }\r\n                var isShown = labelStateModel.get('show');\r\n                if (isShown != null && !isNormal) {\r\n                    state.ignore = !isShown;\r\n                }\r\n                var labelPosition = getLabelAttr(labelStateModel, 'position');\r\n                var sectorState = isNormal ? sector : sector.states[stateName];\r\n                var labelColor = sectorState.style.fill;\r\n                sectorState.textConfig = {\r\n                    outsideFill: labelStateModel.get('color') === 'inherit' ? labelColor : null,\r\n                    inside: labelPosition !== 'outside'\r\n                };\r\n                var r;\r\n                var labelPadding = getLabelAttr(labelStateModel, 'distance') || 0;\r\n                var textAlign = getLabelAttr(labelStateModel, 'align');\r\n                if (labelPosition === 'outside') {\r\n                    r = layout.r + labelPadding;\r\n                    textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\r\n                }\r\n                else {\r\n                    if (!textAlign || textAlign === 'center') {\r\n                        r = (layout.r + layout.r0) / 2;\r\n                        textAlign = 'center';\r\n                    }\r\n                    else if (textAlign === 'left') {\r\n                        r = layout.r0 + labelPadding;\r\n                        if (midAngle > Math.PI / 2) {\r\n                            textAlign = 'right';\r\n                        }\r\n                    }\r\n                    else if (textAlign === 'right') {\r\n                        r = layout.r - labelPadding;\r\n                        if (midAngle > Math.PI / 2) {\r\n                            textAlign = 'left';\r\n                        }\r\n                    }\r\n                }\r\n                state.style.align = textAlign;\r\n                state.style.verticalAlign = getLabelAttr(labelStateModel, 'verticalAlign') || 'middle';\r\n                state.x = r * dx + layout.cx;\r\n                state.y = r * dy + layout.cy;\r\n                var rotateType = getLabelAttr(labelStateModel, 'rotate');\r\n                var rotate = 0;\r\n                if (rotateType === 'radial') {\r\n                    rotate = -midAngle;\r\n                    if (rotate < -Math.PI / 2) {\r\n                        rotate += Math.PI;\r\n                    }\r\n                }\r\n                else if (rotateType === 'tangential') {\r\n                    rotate = Math.PI / 2 - midAngle;\r\n                    if (rotate > Math.PI / 2) {\r\n                        rotate -= Math.PI;\r\n                    }\r\n                    else if (rotate < -Math.PI / 2) {\r\n                        rotate += Math.PI;\r\n                    }\r\n                }\r\n                else if (typeof rotateType === 'number') {\r\n                    rotate = rotateType * Math.PI / 180;\r\n                }\r\n                state.rotation = rotate;\r\n            });\r\n            function getLabelAttr(model, name) {\r\n                var stateAttr = model.get(name);\r\n                if (stateAttr == null) {\r\n                    return normalLabelModel.get(name);\r\n                }\r\n                return stateAttr;\r\n            }\r\n            label.dirtyStyle();\r\n        };\r\n        return SunburstPiece;\r\n    }(Sector));\n\n    var ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\r\n    registerAction({ type: ROOT_TO_NODE_ACTION, update: 'updateView' }, function (payload, ecModel) {\r\n        ecModel.eachComponent({ mainType: 'series', subType: 'sunburst', query: payload }, handleRootToNode);\r\n        function handleRootToNode(model, index) {\r\n            var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\r\n            if (targetInfo) {\r\n                var originViewRoot = model.getViewRoot();\r\n                if (originViewRoot) {\r\n                    payload.direction = aboveViewRoot(originViewRoot, targetInfo.node)\r\n                        ? 'rollUp' : 'drillDown';\r\n                }\r\n                model.resetViewRoot(targetInfo.node);\r\n            }\r\n        }\r\n    });\r\n    var HIGHLIGHT_ACTION = 'sunburstHighlight';\r\n    registerAction({ type: HIGHLIGHT_ACTION, update: 'none' }, function (payload, ecModel, api) {\r\n        payload = extend({}, payload);\r\n        ecModel.eachComponent({ mainType: 'series', subType: 'sunburst', query: payload }, handleHighlight);\r\n        function handleHighlight(model) {\r\n            var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\r\n            if (targetInfo) {\r\n                payload.dataIndex = targetInfo.node.dataIndex;\r\n            }\r\n        }\r\n        if (__DEV__) {\r\n            deprecateReplaceLog('highlight', 'sunburstHighlight');\r\n        }\r\n        api.dispatchAction(extend(payload, {\r\n            type: 'highlight'\r\n        }));\r\n    });\r\n    var UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\r\n    registerAction({ type: UNHIGHLIGHT_ACTION, update: 'updateView' }, function (payload, ecModel, api) {\r\n        payload = extend({}, payload);\r\n        if (__DEV__) {\r\n            deprecateReplaceLog('downplay', 'sunburstUnhighlight');\r\n        }\r\n        api.dispatchAction(extend(payload, {\r\n            type: 'downplay'\r\n        }));\r\n    });\n\n    var SunburstView = (function (_super) {\r\n        __extends(SunburstView, _super);\r\n        function SunburstView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SunburstView.type;\r\n            return _this;\r\n        }\r\n        SunburstView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var self = this;\r\n            this.seriesModel = seriesModel;\r\n            this.api = api;\r\n            this.ecModel = ecModel;\r\n            var data = seriesModel.getData();\r\n            var virtualRoot = data.tree.root;\r\n            var newRoot = seriesModel.getViewRoot();\r\n            var group = this.group;\r\n            var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\r\n            var newChildren = [];\r\n            newRoot.eachNode(function (node) {\r\n                newChildren.push(node);\r\n            });\r\n            var oldChildren = this._oldChildren || [];\r\n            dualTravel(newChildren, oldChildren);\r\n            renderRollUp(virtualRoot, newRoot);\r\n            this._initEvents();\r\n            this._oldChildren = newChildren;\r\n            function dualTravel(newChildren, oldChildren) {\r\n                if (newChildren.length === 0 && oldChildren.length === 0) {\r\n                    return;\r\n                }\r\n                new DataDiffer(oldChildren, newChildren, getKey, getKey)\r\n                    .add(processNode)\r\n                    .update(processNode)\r\n                    .remove(curry(processNode, null))\r\n                    .execute();\r\n                function getKey(node) {\r\n                    return node.getId();\r\n                }\r\n                function processNode(newIdx, oldIdx) {\r\n                    var newNode = newIdx == null ? null : newChildren[newIdx];\r\n                    var oldNode = oldIdx == null ? null : oldChildren[oldIdx];\r\n                    doRenderNode(newNode, oldNode);\r\n                }\r\n            }\r\n            function doRenderNode(newNode, oldNode) {\r\n                if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\r\n                    newNode = null;\r\n                }\r\n                if (newNode !== virtualRoot && oldNode !== virtualRoot) {\r\n                    if (oldNode && oldNode.piece) {\r\n                        if (newNode) {\r\n                            oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api);\r\n                            data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\r\n                        }\r\n                        else {\r\n                            removeNode(oldNode);\r\n                        }\r\n                    }\r\n                    else if (newNode) {\r\n                        var piece = new SunburstPiece(newNode, seriesModel, ecModel, api);\r\n                        group.add(piece);\r\n                        data.setItemGraphicEl(newNode.dataIndex, piece);\r\n                    }\r\n                }\r\n            }\r\n            function removeNode(node) {\r\n                if (!node) {\r\n                    return;\r\n                }\r\n                if (node.piece) {\r\n                    group.remove(node.piece);\r\n                    node.piece = null;\r\n                }\r\n            }\r\n            function renderRollUp(virtualRoot, viewRoot) {\r\n                if (viewRoot.depth > 0) {\r\n                    if (self.virtualPiece) {\r\n                        self.virtualPiece.updateData(false, virtualRoot, seriesModel, ecModel, api);\r\n                    }\r\n                    else {\r\n                        self.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel, api);\r\n                        group.add(self.virtualPiece);\r\n                    }\r\n                    viewRoot.piece.off('click');\r\n                    self.virtualPiece.on('click', function (e) {\r\n                        self._rootToNode(viewRoot.parentNode);\r\n                    });\r\n                }\r\n                else if (self.virtualPiece) {\r\n                    group.remove(self.virtualPiece);\r\n                    self.virtualPiece = null;\r\n                }\r\n            }\r\n        };\r\n        SunburstView.prototype._initEvents = function () {\r\n            var _this = this;\r\n            this.group.off('click');\r\n            this.group.on('click', function (e) {\r\n                var targetFound = false;\r\n                var viewRoot = _this.seriesModel.getViewRoot();\r\n                viewRoot.eachNode(function (node) {\r\n                    if (!targetFound\r\n                        && node.piece && node.piece === e.target) {\r\n                        var nodeClick = node.getModel().get('nodeClick');\r\n                        if (nodeClick === 'rootToNode') {\r\n                            _this._rootToNode(node);\r\n                        }\r\n                        else if (nodeClick === 'link') {\r\n                            var itemModel = node.getModel();\r\n                            var link = itemModel.get('link');\r\n                            if (link) {\r\n                                var linkTarget = itemModel.get('target', true)\r\n                                    || '_blank';\r\n                                windowOpen(link, linkTarget);\r\n                            }\r\n                        }\r\n                        targetFound = true;\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        SunburstView.prototype._rootToNode = function (node) {\r\n            if (node !== this.seriesModel.getViewRoot()) {\r\n                this.api.dispatchAction({\r\n                    type: ROOT_TO_NODE_ACTION,\r\n                    from: this.uid,\r\n                    seriesId: this.seriesModel.id,\r\n                    targetNode: node\r\n                });\r\n            }\r\n        };\r\n        SunburstView.prototype.containPoint = function (point, seriesModel) {\r\n            var treeRoot = seriesModel.getData();\r\n            var itemLayout = treeRoot.getItemLayout(0);\r\n            if (itemLayout) {\r\n                var dx = point[0] - itemLayout.cx;\r\n                var dy = point[1] - itemLayout.cy;\r\n                var radius = Math.sqrt(dx * dx + dy * dy);\r\n                return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n            }\r\n        };\r\n        SunburstView.type = 'sunburst';\r\n        return SunburstView;\r\n    }(ChartView));\r\n    ChartView.registerClass(SunburstView);\n\n    var RADIAN$2 = Math.PI / 180;\r\n    function sunburstLayout(seriesType, ecModel, api) {\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            var center = seriesModel.get('center');\r\n            var radius = seriesModel.get('radius');\r\n            if (!isArray(radius)) {\r\n                radius = [0, radius];\r\n            }\r\n            if (!isArray(center)) {\r\n                center = [center, center];\r\n            }\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            var size = Math.min(width, height);\r\n            var cx = parsePercent$2(center[0], width);\r\n            var cy = parsePercent$2(center[1], height);\r\n            var r0 = parsePercent$2(radius[0], size / 2);\r\n            var r = parsePercent$2(radius[1], size / 2);\r\n            var startAngle = -seriesModel.get('startAngle') * RADIAN$2;\r\n            var minAngle = seriesModel.get('minAngle') * RADIAN$2;\r\n            var virtualRoot = seriesModel.getData().tree.root;\r\n            var treeRoot = seriesModel.getViewRoot();\r\n            var rootDepth = treeRoot.depth;\r\n            var sort = seriesModel.get('sort');\r\n            if (sort != null) {\r\n                initChildren$1(treeRoot, sort);\r\n            }\r\n            var validDataCount = 0;\r\n            each(treeRoot.children, function (child) {\r\n                !isNaN(child.getValue()) && validDataCount++;\r\n            });\r\n            var sum = treeRoot.getValue();\r\n            var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n            var renderRollupNode = treeRoot.depth > 0;\r\n            var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\r\n            var rPerLevel = (r - r0) / (levels || 1);\r\n            var clockwise = seriesModel.get('clockwise');\r\n            var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n            var dir = clockwise ? 1 : -1;\r\n            var renderNode = function (node, startAngle) {\r\n                if (!node) {\r\n                    return;\r\n                }\r\n                var endAngle = startAngle;\r\n                if (node !== virtualRoot) {\r\n                    var value = node.getValue();\r\n                    var angle = (sum === 0 && stillShowZeroSum)\r\n                        ? unitRadian : (value * unitRadian);\r\n                    if (angle < minAngle) {\r\n                        angle = minAngle;\r\n                    }\r\n                    endAngle = startAngle + dir * angle;\r\n                    var depth = node.depth - rootDepth\r\n                        - (renderRollupNode ? -1 : 1);\r\n                    var rStart = r0 + rPerLevel * depth;\r\n                    var rEnd = r0 + rPerLevel * (depth + 1);\r\n                    var itemModel = node.getModel();\r\n                    if (itemModel.get('r0') != null) {\r\n                        rStart = parsePercent$2(itemModel.get('r0'), size / 2);\r\n                    }\r\n                    if (itemModel.get('r') != null) {\r\n                        rEnd = parsePercent$2(itemModel.get('r'), size / 2);\r\n                    }\r\n                    node.setLayout({\r\n                        angle: angle,\r\n                        startAngle: startAngle,\r\n                        endAngle: endAngle,\r\n                        clockwise: clockwise,\r\n                        cx: cx,\r\n                        cy: cy,\r\n                        r0: rStart,\r\n                        r: rEnd\r\n                    });\r\n                }\r\n                if (node.children && node.children.length) {\r\n                    var siblingAngle_1 = 0;\r\n                    each(node.children, function (node) {\r\n                        siblingAngle_1 += renderNode(node, startAngle + siblingAngle_1);\r\n                    });\r\n                }\r\n                return endAngle - startAngle;\r\n            };\r\n            if (renderRollupNode) {\r\n                var rStart = r0;\r\n                var rEnd = r0 + rPerLevel;\r\n                var angle = Math.PI * 2;\r\n                virtualRoot.setLayout({\r\n                    angle: angle,\r\n                    startAngle: startAngle,\r\n                    endAngle: startAngle + angle,\r\n                    clockwise: clockwise,\r\n                    cx: cx,\r\n                    cy: cy,\r\n                    r0: rStart,\r\n                    r: rEnd\r\n                });\r\n            }\r\n            renderNode(treeRoot, startAngle);\r\n        });\r\n    }\r\n    function initChildren$1(node, sortOrder) {\r\n        var children = node.children || [];\r\n        node.children = sort$2(children, sortOrder);\r\n        if (children.length) {\r\n            each(node.children, function (child) {\r\n                initChildren$1(child, sortOrder);\r\n            });\r\n        }\r\n    }\r\n    function sort$2(children, sortOrder) {\r\n        if (typeof sortOrder === 'function') {\r\n            var sortTargets = map(children, function (child, idx) {\r\n                var value = child.getValue();\r\n                return {\r\n                    params: {\r\n                        depth: child.depth,\r\n                        height: child.height,\r\n                        dataIndex: child.dataIndex,\r\n                        getValue: function () { return value; }\r\n                    },\r\n                    index: idx\r\n                };\r\n            });\r\n            sortTargets.sort(function (a, b) {\r\n                return sortOrder(a.params, b.params);\r\n            });\r\n            return map(sortTargets, function (target) {\r\n                return children[target.index];\r\n            });\r\n        }\r\n        else {\r\n            var isAsc_1 = sortOrder === 'asc';\r\n            return children.sort(function (a, b) {\r\n                var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);\r\n                return diff === 0\r\n                    ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1)\r\n                    : diff;\r\n            });\r\n        }\r\n    }\n\n    function sunburstVisual(ecModel) {\r\n        var paletteScope = {};\r\n        function pickColor(node, seriesModel, treeHeight) {\r\n            var current = node;\r\n            while (current && current.depth > 1) {\r\n                current = current.parentNode;\r\n            }\r\n            var color = seriesModel.getColorFromPalette((current.name || current.dataIndex + ''), paletteScope);\r\n            if (node.depth > 1 && typeof color === 'string') {\r\n                color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5);\r\n            }\r\n            return color;\r\n        }\r\n        ecModel.eachSeriesByType('sunburst', function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var tree = data.tree;\r\n            tree.eachNode(function (node) {\r\n                var model = node.getModel();\r\n                var style = model.getModel('itemStyle').getItemStyle();\r\n                if (!style.fill) {\r\n                    style.fill = pickColor(node, seriesModel, tree.root.height);\r\n                }\r\n                var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\r\n                extend(existsStyle, style);\r\n            });\r\n        });\r\n    }\n\n    registerLayout(curry(sunburstLayout, 'sunburst'));\r\n    registerProcessor(curry(dataFilter, 'sunburst'));\r\n    registerVisual(sunburstVisual);\n\n    function dataToCoordSize(dataSize, dataItem) {\r\n        dataItem = dataItem || [0, 0];\r\n        return map(['x', 'y'], function (dim, dimIdx) {\r\n            var axis = this.getAxis(dim);\r\n            var val = dataItem[dimIdx];\r\n            var halfSize = dataSize[dimIdx] / 2;\r\n            return axis.type === 'category'\r\n                ? axis.getBandWidth()\r\n                : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\r\n        }, this);\r\n    }\r\n    function cartesianPrepareCustom(coordSys) {\r\n        var rect = coordSys.master.getRect();\r\n        return {\r\n            coordSys: {\r\n                type: 'cartesian2d',\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            },\r\n            api: {\r\n                coord: function (data) {\r\n                    return coordSys.dataToPoint(data);\r\n                },\r\n                size: bind(dataToCoordSize, coordSys)\r\n            }\r\n        };\r\n    }\n\n    function dataToCoordSize$1(dataSize, dataItem) {\r\n        dataItem = dataItem || [0, 0];\r\n        return map([0, 1], function (dimIdx) {\r\n            var val = dataItem[dimIdx];\r\n            var halfSize = dataSize[dimIdx] / 2;\r\n            var p1 = [];\r\n            var p2 = [];\r\n            p1[dimIdx] = val - halfSize;\r\n            p2[dimIdx] = val + halfSize;\r\n            p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\r\n            return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\r\n        }, this);\r\n    }\r\n    function geoPrepareCustom(coordSys) {\r\n        var rect = coordSys.getBoundingRect();\r\n        return {\r\n            coordSys: {\r\n                type: 'geo',\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height,\r\n                zoom: coordSys.getZoom()\r\n            },\r\n            api: {\r\n                coord: function (data) {\r\n                    return coordSys.dataToPoint(data);\r\n                },\r\n                size: bind(dataToCoordSize$1, coordSys)\r\n            }\r\n        };\r\n    }\n\n    function dataToCoordSize$2(dataSize, dataItem) {\r\n        var axis = this.getAxis();\r\n        var val = dataItem instanceof Array ? dataItem[0] : dataItem;\r\n        var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\r\n        return axis.type === 'category'\r\n            ? axis.getBandWidth()\r\n            : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\r\n    }\r\n    function singlePrepareCustom(coordSys) {\r\n        var rect = coordSys.getRect();\r\n        return {\r\n            coordSys: {\r\n                type: 'singleAxis',\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            },\r\n            api: {\r\n                coord: function (val) {\r\n                    return coordSys.dataToPoint(val);\r\n                },\r\n                size: bind(dataToCoordSize$2, coordSys)\r\n            }\r\n        };\r\n    }\n\n    function dataToCoordSize$3(dataSize, dataItem) {\r\n        dataItem = dataItem || [0, 0];\r\n        return map(['Radius', 'Angle'], function (dim, dimIdx) {\r\n            var getterName = 'get' + dim + 'Axis';\r\n            var axis = this[getterName]();\r\n            var val = dataItem[dimIdx];\r\n            var halfSize = dataSize[dimIdx] / 2;\r\n            var result = axis.type === 'category'\r\n                ? axis.getBandWidth()\r\n                : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\r\n            if (dim === 'Angle') {\r\n                result = result * Math.PI / 180;\r\n            }\r\n            return result;\r\n        }, this);\r\n    }\r\n    function polarPrepareCustom(coordSys) {\r\n        var radiusAxis = coordSys.getRadiusAxis();\r\n        var angleAxis = coordSys.getAngleAxis();\r\n        var radius = radiusAxis.getExtent();\r\n        radius[0] > radius[1] && radius.reverse();\r\n        return {\r\n            coordSys: {\r\n                type: 'polar',\r\n                cx: coordSys.cx,\r\n                cy: coordSys.cy,\r\n                r: radius[1],\r\n                r0: radius[0]\r\n            },\r\n            api: {\r\n                coord: function (data) {\r\n                    var radius = radiusAxis.dataToRadius(data[0]);\r\n                    var angle = angleAxis.dataToAngle(data[1]);\r\n                    var coord = coordSys.coordToPoint([radius, angle]);\r\n                    coord.push(radius, angle * Math.PI / 180);\r\n                    return coord;\r\n                },\r\n                size: bind(dataToCoordSize$3, coordSys)\r\n            }\r\n        };\r\n    }\n\n    function calendarPrepareCustom(coordSys) {\r\n        var rect = coordSys.getRect();\r\n        var rangeInfo = coordSys.getRangeInfo();\r\n        return {\r\n            coordSys: {\r\n                type: 'calendar',\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height,\r\n                cellWidth: coordSys.getCellWidth(),\r\n                cellHeight: coordSys.getCellHeight(),\r\n                rangeInfo: {\r\n                    start: rangeInfo.start,\r\n                    end: rangeInfo.end,\r\n                    weeks: rangeInfo.weeks,\r\n                    dayCount: rangeInfo.allDay\r\n                }\r\n            },\r\n            api: {\r\n                coord: function (data, clamp) {\r\n                    return coordSys.dataToPoint(data, clamp);\r\n                }\r\n            }\r\n        };\r\n    }\n\n    var deprecatedLogs = {};\r\n    function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) {\r\n        return style && (style.legacy\r\n            || (style.legacy !== false\r\n                && !hasOwnTextContentOption\r\n                && !hasOwnTextConfig\r\n                && elType !== 'tspan'\r\n                && (elType === 'text' || hasOwn(style, 'text'))));\r\n    }\r\n    function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {\r\n        var srcStyle = hostStyle;\r\n        var textConfig;\r\n        var textContent;\r\n        var textContentStyle;\r\n        if (elType === 'text') {\r\n            textContentStyle = srcStyle;\r\n        }\r\n        else {\r\n            textContentStyle = {};\r\n            hasOwn(srcStyle, 'text') && (textContentStyle.text = srcStyle.text);\r\n            hasOwn(srcStyle, 'rich') && (textContentStyle.rich = srcStyle.rich);\r\n            hasOwn(srcStyle, 'textFill') && (textContentStyle.fill = srcStyle.textFill);\r\n            hasOwn(srcStyle, 'textStroke') && (textContentStyle.stroke = srcStyle.textStroke);\r\n            textContent = {\r\n                type: 'text',\r\n                style: textContentStyle,\r\n                silent: true\r\n            };\r\n            textConfig = {};\r\n            var hasOwnPos = hasOwn(srcStyle, 'textPosition');\r\n            if (isNormal) {\r\n                textConfig.position = hasOwnPos ? srcStyle.textPosition : 'inside';\r\n            }\r\n            else {\r\n                hasOwnPos && (textConfig.position = srcStyle.textPosition);\r\n            }\r\n            hasOwn(srcStyle, 'textPosition') && (textConfig.position = srcStyle.textPosition);\r\n            hasOwn(srcStyle, 'textOffset') && (textConfig.offset = srcStyle.textOffset);\r\n            hasOwn(srcStyle, 'textRotation') && (textConfig.rotation = srcStyle.textRotation);\r\n            hasOwn(srcStyle, 'textDistance') && (textConfig.distance = srcStyle.textDistance);\r\n        }\r\n        convertEC4CompatibleRichItem(textContentStyle, hostStyle);\r\n        each(textContentStyle.rich, function (richItem) {\r\n            convertEC4CompatibleRichItem(richItem, richItem);\r\n        });\r\n        return {\r\n            textConfig: textConfig,\r\n            textContent: textContent\r\n        };\r\n    }\r\n    function convertEC4CompatibleRichItem(out, richItem) {\r\n        if (!richItem) {\r\n            return;\r\n        }\r\n        richItem.font = richItem.textFont || richItem.font;\r\n        hasOwn(richItem, 'textStrokeWidth') && (out.lineWidth = richItem.textStrokeWidth);\r\n        hasOwn(richItem, 'textAlign') && (out.align = richItem.textAlign);\r\n        hasOwn(richItem, 'textVerticalAlign') && (out.verticalAlign = richItem.textVerticalAlign);\r\n        hasOwn(richItem, 'textLineHeight') && (out.lineHeight = richItem.textLineHeight);\r\n        hasOwn(richItem, 'textWidth') && (out.width = richItem.textWidth);\r\n        hasOwn(richItem, 'textHeight') && (out.height = richItem.textHeight);\r\n        hasOwn(richItem, 'textBackgroundColor') && (out.backgroundColor = richItem.textBackgroundColor);\r\n        hasOwn(richItem, 'textPadding') && (out.padding = richItem.textPadding);\r\n        hasOwn(richItem, 'textBorderColor') && (out.borderColor = richItem.textBorderColor);\r\n        hasOwn(richItem, 'textBorderWidth') && (out.borderWidth = richItem.textBorderWidth);\r\n        hasOwn(richItem, 'textBorderRadius') && (out.borderRadius = richItem.textBorderRadius);\r\n        hasOwn(richItem, 'textBoxShadowColor') && (out.shadowColor = richItem.textBoxShadowColor);\r\n        hasOwn(richItem, 'textBoxShadowBlur') && (out.shadowBlur = richItem.textBoxShadowBlur);\r\n        hasOwn(richItem, 'textBoxShadowOffsetX') && (out.shadowOffsetX = richItem.textBoxShadowOffsetX);\r\n        hasOwn(richItem, 'textBoxShadowOffsetY') && (out.shadowOffsetY = richItem.textBoxShadowOffsetY);\r\n    }\r\n    function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) {\r\n        var out = itemStl;\r\n        out.textPosition = out.textPosition || txCfg.position || 'inside';\r\n        txCfg.offset != null && (out.textOffset = txCfg.offset);\r\n        txCfg.rotation != null && (out.textRotation = txCfg.rotation);\r\n        txCfg.distance != null && (out.textDistance = txCfg.distance);\r\n        var isInside = out.textPosition.indexOf('inside') >= 0;\r\n        var hostFill = itemStl.fill || '#000';\r\n        convertToEC4RichItem(out, txStl);\r\n        var textFillNotSet = out.textFill == null;\r\n        if (isInside) {\r\n            if (textFillNotSet) {\r\n                out.textFill = txCfg.insideFill || '#fff';\r\n                !out.textStroke && txCfg.insideStroke && (out.textStroke = txCfg.insideStroke);\r\n                !out.textStroke && (out.textStroke = hostFill);\r\n                out.textStrokeWidth == null && (out.textStrokeWidth = 2);\r\n            }\r\n        }\r\n        else {\r\n            if (textFillNotSet) {\r\n                out.textFill = txCfg.outsideFill || hostFill;\r\n            }\r\n            !out.textStroke && txCfg.outsideStroke && (out.textStroke = txCfg.outsideStroke);\r\n        }\r\n        out.text = txStl.text;\r\n        out.rich = txStl.rich;\r\n        each(txStl.rich, function (richItem) {\r\n            convertToEC4RichItem(richItem, richItem);\r\n        });\r\n        return out;\r\n    }\r\n    function convertToEC4RichItem(out, richItem) {\r\n        if (!richItem) {\r\n            return;\r\n        }\r\n        hasOwn(richItem, 'fill') && (out.textFill = richItem.fill);\r\n        hasOwn(richItem, 'stroke') && (out.textStroke = richItem.fill);\r\n        hasOwn(richItem, 'lineWidth') && (out.textStrokeWidth = richItem.lineWidth);\r\n        hasOwn(richItem, 'font') && (out.font = richItem.font);\r\n        hasOwn(richItem, 'fontStyle') && (out.fontStyle = richItem.fontStyle);\r\n        hasOwn(richItem, 'fontWeight') && (out.fontWeight = richItem.fontWeight);\r\n        hasOwn(richItem, 'fontSize') && (out.fontSize = richItem.fontSize);\r\n        hasOwn(richItem, 'fontFamily') && (out.fontFamily = richItem.fontFamily);\r\n        hasOwn(richItem, 'align') && (out.textAlign = richItem.align);\r\n        hasOwn(richItem, 'verticalAlign') && (out.textVerticalAlign = richItem.verticalAlign);\r\n        hasOwn(richItem, 'lineHeight') && (out.textLineHeight = richItem.lineHeight);\r\n        hasOwn(richItem, 'width') && (out.textWidth = richItem.width);\r\n        hasOwn(richItem, 'height') && (out.textHeight = richItem.height);\r\n        hasOwn(richItem, 'backgroundColor') && (out.textBackgroundColor = richItem.backgroundColor);\r\n        hasOwn(richItem, 'padding') && (out.textPadding = richItem.padding);\r\n        hasOwn(richItem, 'borderColor') && (out.textBorderColor = richItem.borderColor);\r\n        hasOwn(richItem, 'borderWidth') && (out.textBorderWidth = richItem.borderWidth);\r\n        hasOwn(richItem, 'borderRadius') && (out.textBorderRadius = richItem.borderRadius);\r\n        hasOwn(richItem, 'shadowColor') && (out.textBoxShadowColor = richItem.shadowColor);\r\n        hasOwn(richItem, 'shadowBlur') && (out.textBoxShadowBlur = richItem.shadowBlur);\r\n        hasOwn(richItem, 'shadowOffsetX') && (out.textBoxShadowOffsetX = richItem.shadowOffsetX);\r\n        hasOwn(richItem, 'shadowOffsetY') && (out.textBoxShadowOffsetY = richItem.shadowOffsetY);\r\n        hasOwn(richItem, 'textShadowColor') && (out.textShadowColor = richItem.textShadowColor);\r\n        hasOwn(richItem, 'textShadowBlur') && (out.textShadowBlur = richItem.textShadowBlur);\r\n        hasOwn(richItem, 'textShadowOffsetX') && (out.textShadowOffsetX = richItem.textShadowOffsetX);\r\n        hasOwn(richItem, 'textShadowOffsetY') && (out.textShadowOffsetY = richItem.textShadowOffsetY);\r\n    }\r\n    function warnDeprecated(deprecated, insteadApproach) {\r\n        if (__DEV__) {\r\n            var key = deprecated + '^_^' + insteadApproach;\r\n            if (!deprecatedLogs[key]) {\r\n                console.warn(\"[ECharts] DEPRECATED: \\\"\" + deprecated + \"\\\" has been deprecated. \" + insteadApproach);\r\n                deprecatedLogs[key] = true;\r\n            }\r\n        }\r\n    }\n\n    var inner$e = makeInner();\r\n    var TRANSFORM_PROPS = {\r\n        x: 1,\r\n        y: 1,\r\n        scaleX: 1,\r\n        scaleY: 1,\r\n        originX: 1,\r\n        originY: 1,\r\n        rotation: 1\r\n    };\r\n    var transformPropNamesStr = keys(TRANSFORM_PROPS).join(', ');\r\n    var STYLE_VISUAL_TYPE = {\r\n        color: 'fill',\r\n        borderColor: 'stroke'\r\n    };\r\n    var NON_STYLE_VISUAL_PROPS = {\r\n        symbol: 1,\r\n        symbolSize: 1,\r\n        symbolKeepAspect: 1,\r\n        legendSymbol: 1,\r\n        visualMeta: 1,\r\n        liftZ: 1,\r\n        decal: 1\r\n    };\r\n    var EMPHASIS = 'emphasis';\r\n    var NORMAL = 'normal';\r\n    var BLUR = 'blur';\r\n    var SELECT = 'select';\r\n    var STATES = [NORMAL, EMPHASIS, BLUR, SELECT];\r\n    var PATH_ITEM_STYLE = {\r\n        normal: ['itemStyle'],\r\n        emphasis: [EMPHASIS, 'itemStyle'],\r\n        blur: [BLUR, 'itemStyle'],\r\n        select: [SELECT, 'itemStyle']\r\n    };\r\n    var PATH_LABEL = {\r\n        normal: ['label'],\r\n        emphasis: [EMPHASIS, 'label'],\r\n        blur: [BLUR, 'label'],\r\n        select: [SELECT, 'label']\r\n    };\r\n    var GROUP_DIFF_PREFIX = 'e\\0\\0';\r\n    var attachedTxInfoTmp = {\r\n        normal: {},\r\n        emphasis: {},\r\n        blur: {},\r\n        select: {}\r\n    };\r\n    var LEGACY_TRANSFORM_PROPS = {\r\n        position: ['x', 'y'],\r\n        scale: ['scaleX', 'scaleY'],\r\n        origin: ['originX', 'originY']\r\n    };\r\n    var tmpTransformable = new Transformable();\r\n    var prepareCustoms = {\r\n        cartesian2d: cartesianPrepareCustom,\r\n        geo: geoPrepareCustom,\r\n        singleAxis: singlePrepareCustom,\r\n        polar: polarPrepareCustom,\r\n        calendar: calendarPrepareCustom\r\n    };\r\n    var CustomSeriesModel = (function (_super) {\r\n        __extends(CustomSeriesModel, _super);\r\n        function CustomSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CustomSeriesModel.type;\r\n            return _this;\r\n        }\r\n        CustomSeriesModel.prototype.optionUpdated = function () {\r\n            this.currentZLevel = this.get('zlevel', true);\r\n            this.currentZ = this.get('z', true);\r\n        };\r\n        CustomSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this);\r\n        };\r\n        CustomSeriesModel.prototype.getDataParams = function (dataIndex, dataType, el) {\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);\r\n            el && (params.info = inner$e(el).info);\r\n            return params;\r\n        };\r\n        CustomSeriesModel.type = 'series.custom';\r\n        CustomSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\r\n        CustomSeriesModel.defaultOption = {\r\n            coordinateSystem: 'cartesian2d',\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            clip: false\r\n        };\r\n        return CustomSeriesModel;\r\n    }(SeriesModel));\r\n    ComponentModel.registerClass(CustomSeriesModel);\r\n    var CustomSeriesView = (function (_super) {\r\n        __extends(CustomSeriesView, _super);\r\n        function CustomSeriesView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CustomSeriesView.type;\r\n            return _this;\r\n        }\r\n        CustomSeriesView.prototype.render = function (customSeries, ecModel, api, payload) {\r\n            var oldData = this._data;\r\n            var data = customSeries.getData();\r\n            var group = this.group;\r\n            var renderItem = makeRenderItem(customSeries, data, ecModel, api);\r\n            var transOpt = customSeries.__transientTransitionOpt;\r\n            if (transOpt && (transOpt.from == null || transOpt.to == null)) {\r\n                oldData && oldData.each(function (oldIdx) {\r\n                    doRemoveEl(oldData.getItemGraphicEl(oldIdx), customSeries, group);\r\n                });\r\n                data.each(function (newIdx) {\r\n                    createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data, null);\r\n                });\r\n            }\r\n            else {\r\n                var morphPreparation_1 = new MorphPreparation(customSeries, transOpt);\r\n                var diffMode = transOpt ? 'multiple' : 'oneToOne';\r\n                (new DataDiffer(oldData ? oldData.getIndices() : [], data.getIndices(), createGetKey(oldData, diffMode, transOpt && transOpt.from), createGetKey(data, diffMode, transOpt && transOpt.to), null, diffMode))\r\n                    .add(function (newIdx) {\r\n                    createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data, null);\r\n                })\r\n                    .remove(function (oldIdx) {\r\n                    doRemoveEl(oldData.getItemGraphicEl(oldIdx), customSeries, group);\r\n                })\r\n                    .update(function (newIdx, oldIdx) {\r\n                    morphPreparation_1.reset('oneToOne');\r\n                    var oldEl = oldData.getItemGraphicEl(oldIdx);\r\n                    morphPreparation_1.findAndAddFrom(oldEl);\r\n                    if (morphPreparation_1.hasFrom()) {\r\n                        removeElementDirectly(oldEl, group);\r\n                        oldEl = null;\r\n                    }\r\n                    createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data, morphPreparation_1);\r\n                    morphPreparation_1.applyMorphing();\r\n                })\r\n                    .updateManyToOne(function (newIdx, oldIndices) {\r\n                    morphPreparation_1.reset('manyToOne');\r\n                    for (var i = 0; i < oldIndices.length; i++) {\r\n                        var oldEl = oldData.getItemGraphicEl(oldIndices[i]);\r\n                        morphPreparation_1.findAndAddFrom(oldEl);\r\n                        removeElementDirectly(oldEl, group);\r\n                    }\r\n                    createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data, morphPreparation_1);\r\n                    morphPreparation_1.applyMorphing();\r\n                })\r\n                    .updateOneToMany(function (newIndices, oldIdx) {\r\n                    morphPreparation_1.reset('oneToMany');\r\n                    var newLen = newIndices.length;\r\n                    var oldEl = oldData.getItemGraphicEl(oldIdx);\r\n                    morphPreparation_1.findAndAddFrom(oldEl);\r\n                    removeElementDirectly(oldEl, group);\r\n                    for (var i = 0; i < newLen; i++) {\r\n                        createOrUpdateItem(api, null, newIndices[i], renderItem(newIndices[i], payload), customSeries, group, data, morphPreparation_1);\r\n                    }\r\n                    morphPreparation_1.applyMorphing();\r\n                })\r\n                    .execute();\r\n            }\r\n            var clipPath = customSeries.get('clip', true)\r\n                ? createClipPath(customSeries.coordinateSystem, false, customSeries)\r\n                : null;\r\n            if (clipPath) {\r\n                group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                group.removeClipPath();\r\n            }\r\n            this._data = data;\r\n        };\r\n        CustomSeriesView.prototype.incrementalPrepareRender = function (customSeries, ecModel, api) {\r\n            this.group.removeAll();\r\n            this._data = null;\r\n        };\r\n        CustomSeriesView.prototype.incrementalRender = function (params, customSeries, ecModel, api, payload) {\r\n            var data = customSeries.getData();\r\n            var renderItem = makeRenderItem(customSeries, data, ecModel, api);\r\n            function setIncrementalAndHoverLayer(el) {\r\n                if (!el.isGroup) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = params.start; idx < params.end; idx++) {\r\n                var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data, null);\r\n                el.traverse(setIncrementalAndHoverLayer);\r\n            }\r\n        };\r\n        CustomSeriesView.prototype.filterForExposedEvent = function (eventType, query, targetEl, packedEvent) {\r\n            var elementName = query.element;\r\n            if (elementName == null || targetEl.name === elementName) {\r\n                return true;\r\n            }\r\n            while ((targetEl = (targetEl.__hostTarget || targetEl.parent)) && targetEl !== this.group) {\r\n                if (targetEl.name === elementName) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        CustomSeriesView.type = 'custom';\r\n        return CustomSeriesView;\r\n    }(ChartView));\r\n    ChartView.registerClass(CustomSeriesView);\r\n    function createGetKey(data, diffMode, dimension) {\r\n        if (!data) {\r\n            return;\r\n        }\r\n        if (diffMode === 'oneToOne') {\r\n            return function (rawIdx, dataIndex) {\r\n                return data.getId(dataIndex);\r\n            };\r\n        }\r\n        var diffByDimName = data.getDimension(dimension);\r\n        var dimInfo = data.getDimensionInfo(diffByDimName);\r\n        if (!dimInfo) {\r\n            var errMsg = '';\r\n            if (__DEV__) {\r\n                errMsg = dimension + \" is not a valid dimension.\";\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var ordinalMeta = dimInfo.ordinalMeta;\r\n        return function (rawIdx, dataIndex) {\r\n            var key = data.get(diffByDimName, dataIndex);\r\n            if (ordinalMeta) {\r\n                key = ordinalMeta.categories[key];\r\n            }\r\n            return (key == null || eqNaN(key))\r\n                ? rawIdx + ''\r\n                : '_ec_' + key;\r\n        };\r\n    }\r\n    function createEl(elOption) {\r\n        var graphicType = elOption.type;\r\n        var el;\r\n        if (graphicType === 'path') {\r\n            var shape = elOption.shape;\r\n            var pathRect = (shape.width != null && shape.height != null)\r\n                ? {\r\n                    x: shape.x || 0,\r\n                    y: shape.y || 0,\r\n                    width: shape.width,\r\n                    height: shape.height\r\n                }\r\n                : null;\r\n            var pathData = getPathData(shape);\r\n            el = makePath(pathData, null, pathRect, shape.layout || 'center');\r\n            inner$e(el).customPathData = pathData;\r\n        }\r\n        else if (graphicType === 'image') {\r\n            el = new ZRImage({});\r\n            inner$e(el).customImagePath = elOption.style.image;\r\n        }\r\n        else if (graphicType === 'text') {\r\n            el = new ZRText({});\r\n        }\r\n        else if (graphicType === 'group') {\r\n            el = new Group();\r\n        }\r\n        else if (graphicType === 'compoundPath') {\r\n            throw new Error('\"compoundPath\" is not supported yet.');\r\n        }\r\n        else {\r\n            var Clz = getShapeClass(graphicType);\r\n            if (!Clz) {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = 'graphic type \"' + graphicType + '\" can not be found.';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            el = new Clz();\r\n        }\r\n        inner$e(el).customGraphicType = graphicType;\r\n        el.name = elOption.name;\r\n        el.z2EmphasisLift = 1;\r\n        el.z2SelectLift = 1;\r\n        return el;\r\n    }\r\n    function updateElNormal(api, el, isMorphTo, dataIndex, elOption, styleOpt, attachedTxInfo, seriesModel, isInit, isTextContent) {\r\n        var transFromProps = {};\r\n        var allPropsFinal = {};\r\n        var elDisplayable = el.isGroup ? null : el;\r\n        !isMorphTo && prepareShapeOrExtraTransitionFrom('shape', el, null, elOption, transFromProps, isInit);\r\n        prepareShapeOrExtraAllPropsFinal('shape', elOption, allPropsFinal);\r\n        !isMorphTo && prepareShapeOrExtraTransitionFrom('extra', el, null, elOption, transFromProps, isInit);\r\n        prepareShapeOrExtraAllPropsFinal('extra', elOption, allPropsFinal);\r\n        !isMorphTo && prepareTransformTransitionFrom(el, null, elOption, transFromProps, isInit);\r\n        prepareTransformAllPropsFinal(elOption, allPropsFinal);\r\n        var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg;\r\n        if (txCfgOpt) {\r\n            el.setTextConfig(txCfgOpt);\r\n        }\r\n        if (el.type === 'text' && styleOpt) {\r\n            var textOptionStyle = styleOpt;\r\n            hasOwn(textOptionStyle, 'textFill') && (textOptionStyle.fill = textOptionStyle.textFill);\r\n            hasOwn(textOptionStyle, 'textStroke') && (textOptionStyle.stroke = textOptionStyle.textStroke);\r\n        }\r\n        if (styleOpt) {\r\n            var decalPattern = void 0;\r\n            var decalObj = isPath$1(el) ? styleOpt.decal : null;\r\n            if (api && decalObj) {\r\n                decalObj.dirty = true;\r\n                decalPattern = createOrUpdatePatternFromDecal(decalObj, api);\r\n            }\r\n            styleOpt.__decalPattern = decalPattern;\r\n        }\r\n        !isMorphTo && prepareStyleTransitionFrom(el, null, elOption, styleOpt, transFromProps, isInit);\r\n        if (elDisplayable) {\r\n            hasOwn(elOption, 'invisible') && (elDisplayable.invisible = elOption.invisible);\r\n        }\r\n        if (!isMorphTo) {\r\n            applyPropsFinal(el, allPropsFinal, styleOpt);\r\n            applyTransitionFrom(el, dataIndex, elOption, seriesModel, transFromProps, isInit);\r\n        }\r\n        hasOwn(elOption, 'silent') && (el.silent = elOption.silent);\r\n        hasOwn(elOption, 'ignore') && (el.ignore = elOption.ignore);\r\n        if (!isTextContent) {\r\n            hasOwn(elOption, 'info') && (inner$e(el).info = elOption.info);\r\n        }\r\n        styleOpt ? el.dirty() : el.markRedraw();\r\n        return isMorphTo ? allPropsFinal : null;\r\n    }\r\n    function applyPropsFinal(el, allPropsFinal, styleOpt) {\r\n        var elDisplayable = el.isGroup ? null : el;\r\n        if (elDisplayable && styleOpt) {\r\n            var decalPattern = styleOpt.__decalPattern;\r\n            var originalDecalObj = void 0;\r\n            if (decalPattern) {\r\n                originalDecalObj = styleOpt.decal;\r\n                styleOpt.decal = decalPattern;\r\n            }\r\n            elDisplayable.useStyle(styleOpt);\r\n            if (decalPattern) {\r\n                styleOpt.decal = originalDecalObj;\r\n            }\r\n            var animators = elDisplayable.animators;\r\n            for (var i = 0; i < animators.length; i++) {\r\n                var animator = animators[i];\r\n                if (animator.targetName === 'style') {\r\n                    animator.changeTarget(elDisplayable.style);\r\n                }\r\n            }\r\n        }\r\n        allPropsFinal && el.attr(allPropsFinal);\r\n    }\r\n    function applyTransitionFrom(el, dataIndex, elOption, seriesModel, transFromProps, isInit) {\r\n        if (transFromProps) {\r\n            var userDuring = elOption.during;\r\n            inner$e(el).userDuring = userDuring;\r\n            var cfgDuringCall = userDuring ? bind(duringCall, { el: el, userDuring: userDuring }) : null;\r\n            var cfg = {\r\n                dataIndex: dataIndex,\r\n                isFrom: true,\r\n                during: cfgDuringCall\r\n            };\r\n            isInit\r\n                ? initProps(el, transFromProps, seriesModel, cfg)\r\n                : updateProps(el, transFromProps, seriesModel, cfg);\r\n        }\r\n    }\r\n    function prepareShapeOrExtraTransitionFrom(mainAttr, el, morphFromEl, elOption, transFromProps, isInit) {\r\n        var attrOpt = elOption[mainAttr];\r\n        if (!attrOpt) {\r\n            return;\r\n        }\r\n        var elPropsInAttr = el[mainAttr];\r\n        var transFromPropsInAttr;\r\n        var enterFrom = attrOpt.enterFrom;\r\n        if (isInit && enterFrom) {\r\n            !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\r\n            var enterFromKeys = keys(enterFrom);\r\n            for (var i = 0; i < enterFromKeys.length; i++) {\r\n                var key = enterFromKeys[i];\r\n                transFromPropsInAttr[key] = enterFrom[key];\r\n            }\r\n        }\r\n        if (!isInit\r\n            && elPropsInAttr\r\n            && !(morphFromEl != null && mainAttr === 'shape')) {\r\n            if (attrOpt.transition) {\r\n                !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\r\n                var transitionKeys = normalizeToArray(attrOpt.transition);\r\n                for (var i = 0; i < transitionKeys.length; i++) {\r\n                    var key = transitionKeys[i];\r\n                    var elVal = elPropsInAttr[key];\r\n                    if (__DEV__) {\r\n                        checkNonStyleTansitionRefer(key, attrOpt[key], elVal);\r\n                    }\r\n                    transFromPropsInAttr[key] = elVal;\r\n                }\r\n            }\r\n            else if (indexOf(elOption.transition, mainAttr) >= 0) {\r\n                !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\r\n                var elPropsInAttrKeys = keys(elPropsInAttr);\r\n                for (var i = 0; i < elPropsInAttrKeys.length; i++) {\r\n                    var key = elPropsInAttrKeys[i];\r\n                    var elVal = elPropsInAttr[key];\r\n                    if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) {\r\n                        transFromPropsInAttr[key] = elVal;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        var leaveTo = attrOpt.leaveTo;\r\n        if (leaveTo) {\r\n            var leaveToProps = getOrCreateLeaveToPropsFromEl(el);\r\n            var leaveToPropsInAttr = leaveToProps[mainAttr] || (leaveToProps[mainAttr] = {});\r\n            var leaveToKeys = keys(leaveTo);\r\n            for (var i = 0; i < leaveToKeys.length; i++) {\r\n                var key = leaveToKeys[i];\r\n                leaveToPropsInAttr[key] = leaveTo[key];\r\n            }\r\n        }\r\n    }\r\n    function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) {\r\n        var attrOpt = elOption[mainAttr];\r\n        if (!attrOpt) {\r\n            return;\r\n        }\r\n        var allPropsInAttr = allProps[mainAttr] = {};\r\n        var keysInAttr = keys(attrOpt);\r\n        for (var i = 0; i < keysInAttr.length; i++) {\r\n            var key = keysInAttr[i];\r\n            allPropsInAttr[key] = cloneValue(attrOpt[key]);\r\n        }\r\n    }\r\n    function prepareTransformTransitionFrom(el, morphFromEl, elOption, transFromProps, isInit) {\r\n        var enterFrom = elOption.enterFrom;\r\n        if (isInit && enterFrom) {\r\n            var enterFromKeys = keys(enterFrom);\r\n            for (var i = 0; i < enterFromKeys.length; i++) {\r\n                var key = enterFromKeys[i];\r\n                if (__DEV__) {\r\n                    checkTransformPropRefer(key, 'el.enterFrom');\r\n                }\r\n                transFromProps[key] = enterFrom[key];\r\n            }\r\n        }\r\n        if (!isInit) {\r\n            if (morphFromEl) {\r\n                var fromTransformable = calcOldElLocalTransformBasedOnNewElParent(morphFromEl, el);\r\n                setTransformPropToTransitionFrom(transFromProps, 'x', fromTransformable);\r\n                setTransformPropToTransitionFrom(transFromProps, 'y', fromTransformable);\r\n                setTransformPropToTransitionFrom(transFromProps, 'scaleX', fromTransformable);\r\n                setTransformPropToTransitionFrom(transFromProps, 'scaleY', fromTransformable);\r\n                setTransformPropToTransitionFrom(transFromProps, 'originX', fromTransformable);\r\n                setTransformPropToTransitionFrom(transFromProps, 'originY', fromTransformable);\r\n                setTransformPropToTransitionFrom(transFromProps, 'rotation', fromTransformable);\r\n            }\r\n            else if (elOption.transition) {\r\n                var transitionKeys = normalizeToArray(elOption.transition);\r\n                for (var i = 0; i < transitionKeys.length; i++) {\r\n                    var key = transitionKeys[i];\r\n                    if (key === 'style' || key === 'shape' || key === 'extra') {\r\n                        continue;\r\n                    }\r\n                    var elVal = el[key];\r\n                    if (__DEV__) {\r\n                        checkTransformPropRefer(key, 'el.transition');\r\n                        checkNonStyleTansitionRefer(key, elOption[key], elVal);\r\n                    }\r\n                    transFromProps[key] = elVal;\r\n                }\r\n            }\r\n            else {\r\n                setTransformPropToTransitionFrom(transFromProps, 'x', el);\r\n                setTransformPropToTransitionFrom(transFromProps, 'y', el);\r\n            }\r\n        }\r\n        var leaveTo = elOption.leaveTo;\r\n        if (leaveTo) {\r\n            var leaveToProps = getOrCreateLeaveToPropsFromEl(el);\r\n            var leaveToKeys = keys(leaveTo);\r\n            for (var i = 0; i < leaveToKeys.length; i++) {\r\n                var key = leaveToKeys[i];\r\n                if (__DEV__) {\r\n                    checkTransformPropRefer(key, 'el.leaveTo');\r\n                }\r\n                leaveToProps[key] = leaveTo[key];\r\n            }\r\n        }\r\n    }\r\n    function prepareTransformAllPropsFinal(elOption, allProps) {\r\n        setLagecyTransformProp(elOption, allProps, 'position');\r\n        setLagecyTransformProp(elOption, allProps, 'scale');\r\n        setLagecyTransformProp(elOption, allProps, 'origin');\r\n        setTransformProp(elOption, allProps, 'x');\r\n        setTransformProp(elOption, allProps, 'y');\r\n        setTransformProp(elOption, allProps, 'scaleX');\r\n        setTransformProp(elOption, allProps, 'scaleY');\r\n        setTransformProp(elOption, allProps, 'originX');\r\n        setTransformProp(elOption, allProps, 'originY');\r\n        setTransformProp(elOption, allProps, 'rotation');\r\n    }\r\n    function prepareStyleTransitionFrom(el, morphFromEl, elOption, styleOpt, transFromProps, isInit) {\r\n        if (!styleOpt) {\r\n            return;\r\n        }\r\n        var fromEl = morphFromEl || el;\r\n        var fromElStyle = fromEl.style;\r\n        var transFromStyleProps;\r\n        var enterFrom = styleOpt.enterFrom;\r\n        if (isInit && enterFrom) {\r\n            var enterFromKeys = keys(enterFrom);\r\n            !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\r\n            for (var i = 0; i < enterFromKeys.length; i++) {\r\n                var key = enterFromKeys[i];\r\n                transFromStyleProps[key] = enterFrom[key];\r\n            }\r\n        }\r\n        if (!isInit && fromElStyle) {\r\n            if (styleOpt.transition) {\r\n                var transitionKeys = normalizeToArray(styleOpt.transition);\r\n                !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\r\n                for (var i = 0; i < transitionKeys.length; i++) {\r\n                    var key = transitionKeys[i];\r\n                    var elVal = fromElStyle[key];\r\n                    transFromStyleProps[key] = elVal;\r\n                }\r\n            }\r\n            else if (el.getAnimationStyleProps\r\n                && indexOf(elOption.transition, 'style') >= 0) {\r\n                var animationProps = el.getAnimationStyleProps();\r\n                var animationStyleProps = animationProps ? animationProps.style : null;\r\n                if (animationStyleProps) {\r\n                    !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\r\n                    var styleKeys = keys(styleOpt);\r\n                    for (var i = 0; i < styleKeys.length; i++) {\r\n                        var key = styleKeys[i];\r\n                        if (animationStyleProps[key]) {\r\n                            var elVal = fromElStyle[key];\r\n                            transFromStyleProps[key] = elVal;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        var leaveTo = styleOpt.leaveTo;\r\n        if (leaveTo) {\r\n            var leaveToKeys = keys(leaveTo);\r\n            var leaveToProps = getOrCreateLeaveToPropsFromEl(el);\r\n            var leaveToStyleProps = leaveToProps.style || (leaveToProps.style = {});\r\n            for (var i = 0; i < leaveToKeys.length; i++) {\r\n                var key = leaveToKeys[i];\r\n                leaveToStyleProps[key] = leaveTo[key];\r\n            }\r\n        }\r\n    }\r\n    function calcOldElLocalTransformBasedOnNewElParent(oldEl, newEl) {\r\n        if (!oldEl || oldEl === newEl || oldEl.parent === newEl.parent) {\r\n            return oldEl;\r\n        }\r\n        var tmpM = tmpTransformable.transform\r\n            || (tmpTransformable.transform = identity([]));\r\n        var oldGlobalTransform = oldEl.getComputedTransform();\r\n        oldGlobalTransform\r\n            ? copy$1(tmpM, oldGlobalTransform)\r\n            : identity(tmpM);\r\n        var newParent = newEl.parent;\r\n        if (newParent) {\r\n            newParent.getComputedTransform();\r\n        }\r\n        tmpTransformable.originX = oldEl.originX;\r\n        tmpTransformable.originY = oldEl.originY;\r\n        tmpTransformable.parent = newParent;\r\n        tmpTransformable.decomposeTransform();\r\n        return tmpTransformable;\r\n    }\r\n    var checkNonStyleTansitionRefer;\r\n    if (__DEV__) {\r\n        checkNonStyleTansitionRefer = function (propName, optVal, elVal) {\r\n            if (!isArrayLike(optVal)) {\r\n                assert(optVal != null && isFinite(optVal), 'Prop `' + propName + '` must refer to a finite number or ArrayLike for transition.');\r\n            }\r\n            else {\r\n                assert(optVal !== elVal, 'Prop `' + propName + '` must use different Array object each time for transition.');\r\n            }\r\n        };\r\n    }\r\n    function isNonStyleTransitionEnabled(optVal, elVal) {\r\n        return !isArrayLike(optVal)\r\n            ? (optVal != null && isFinite(optVal))\r\n            : optVal !== elVal;\r\n    }\r\n    var checkTransformPropRefer;\r\n    if (__DEV__) {\r\n        checkTransformPropRefer = function (key, usedIn) {\r\n            assert(hasOwn(TRANSFORM_PROPS, key), 'Prop `' + key + '` is not a permitted in `' + usedIn + '`. '\r\n                + 'Only `' + keys(TRANSFORM_PROPS).join('`, `') + '` are permitted.');\r\n        };\r\n    }\r\n    function getOrCreateLeaveToPropsFromEl(el) {\r\n        var innerEl = inner$e(el);\r\n        return innerEl.leaveToProps || (innerEl.leaveToProps = {});\r\n    }\r\n    var tmpDuringScope = {};\r\n    var customDuringAPI = {\r\n        setTransform: function (key, val) {\r\n            if (__DEV__) {\r\n                assert(hasOwn(TRANSFORM_PROPS, key), 'Only ' + transformPropNamesStr + ' available in `setTransform`.');\r\n            }\r\n            tmpDuringScope.el[key] = val;\r\n            return this;\r\n        },\r\n        getTransform: function (key) {\r\n            if (__DEV__) {\r\n                assert(hasOwn(TRANSFORM_PROPS, key), 'Only ' + transformPropNamesStr + ' available in `getTransform`.');\r\n            }\r\n            return tmpDuringScope.el[key];\r\n        },\r\n        setShape: function (key, val) {\r\n            if (__DEV__) {\r\n                assertNotReserved(key);\r\n            }\r\n            var shape = tmpDuringScope.el.shape\r\n                || (tmpDuringScope.el.shape = {});\r\n            shape[key] = val;\r\n            tmpDuringScope.isShapeDirty = true;\r\n            return this;\r\n        },\r\n        getShape: function (key) {\r\n            if (__DEV__) {\r\n                assertNotReserved(key);\r\n            }\r\n            var shape = tmpDuringScope.el.shape;\r\n            if (shape) {\r\n                return shape[key];\r\n            }\r\n        },\r\n        setStyle: function (key, val) {\r\n            if (__DEV__) {\r\n                assertNotReserved(key);\r\n            }\r\n            var style = tmpDuringScope.el.style;\r\n            if (style) {\r\n                if (__DEV__) {\r\n                    if (eqNaN(val)) {\r\n                        warn('style.' + key + ' must not be assigned with NaN.');\r\n                    }\r\n                }\r\n                style[key] = val;\r\n                tmpDuringScope.isStyleDirty = true;\r\n            }\r\n            return this;\r\n        },\r\n        getStyle: function (key) {\r\n            if (__DEV__) {\r\n                assertNotReserved(key);\r\n            }\r\n            var style = tmpDuringScope.el.style;\r\n            if (style) {\r\n                return style[key];\r\n            }\r\n        },\r\n        setExtra: function (key, val) {\r\n            if (__DEV__) {\r\n                assertNotReserved(key);\r\n            }\r\n            var extra = tmpDuringScope.el.extra\r\n                || (tmpDuringScope.el.extra = {});\r\n            extra[key] = val;\r\n            return this;\r\n        },\r\n        getExtra: function (key) {\r\n            if (__DEV__) {\r\n                assertNotReserved(key);\r\n            }\r\n            var extra = tmpDuringScope.el.extra;\r\n            if (extra) {\r\n                return extra[key];\r\n            }\r\n        }\r\n    };\r\n    function assertNotReserved(key) {\r\n        if (__DEV__) {\r\n            if (key === 'transition' || key === 'enterFrom' || key === 'leaveTo') {\r\n                throw new Error('key must not be \"' + key + '\"');\r\n            }\r\n        }\r\n    }\r\n    function duringCall() {\r\n        var scope = this;\r\n        var el = scope.el;\r\n        if (!el) {\r\n            return;\r\n        }\r\n        var newstUserDuring = inner$e(el).userDuring;\r\n        var scopeUserDuring = scope.userDuring;\r\n        if (newstUserDuring !== scopeUserDuring) {\r\n            scope.el = scope.userDuring = null;\r\n            return;\r\n        }\r\n        tmpDuringScope.el = el;\r\n        tmpDuringScope.isShapeDirty = false;\r\n        tmpDuringScope.isStyleDirty = false;\r\n        scopeUserDuring(customDuringAPI);\r\n        if (tmpDuringScope.isShapeDirty && el.dirtyShape) {\r\n            el.dirtyShape();\r\n        }\r\n        if (tmpDuringScope.isStyleDirty && el.dirtyStyle) {\r\n            el.dirtyStyle();\r\n        }\r\n    }\r\n    function updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo, isRoot, isTextContent) {\r\n        var elDisplayable = el.isGroup ? null : el;\r\n        var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg;\r\n        if (elDisplayable) {\r\n            var stateObj = elDisplayable.ensureState(state);\r\n            if (styleOpt === false) {\r\n                var existingEmphasisState = elDisplayable.getState(state);\r\n                if (existingEmphasisState) {\r\n                    existingEmphasisState.style = null;\r\n                }\r\n            }\r\n            else {\r\n                stateObj.style = styleOpt || null;\r\n            }\r\n            if (txCfgOpt) {\r\n                stateObj.textConfig = txCfgOpt;\r\n            }\r\n            setDefaultStateProxy(elDisplayable);\r\n        }\r\n    }\r\n    function updateZ$1(el, elOption, seriesModel, attachedTxInfo) {\r\n        if (el.isGroup) {\r\n            return;\r\n        }\r\n        var elDisplayable = el;\r\n        var currentZ = seriesModel.currentZ;\r\n        var currentZLevel = seriesModel.currentZLevel;\r\n        elDisplayable.z = currentZ;\r\n        elDisplayable.zlevel = currentZLevel;\r\n        var optZ2 = elOption.z2;\r\n        optZ2 != null && (elDisplayable.z2 = optZ2 || 0);\r\n        for (var i = 0; i < STATES.length; i++) {\r\n            updateZForEachState(elDisplayable, elOption, STATES[i]);\r\n        }\r\n    }\r\n    function updateZForEachState(elDisplayable, elOption, state) {\r\n        var isNormal = state === NORMAL;\r\n        var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state);\r\n        var optZ2 = elStateOpt ? elStateOpt.z2 : null;\r\n        var stateObj;\r\n        if (optZ2 != null) {\r\n            stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state);\r\n            stateObj.z2 = optZ2 || 0;\r\n        }\r\n    }\r\n    function setLagecyTransformProp(elOption, targetProps, legacyName, fromTransformable) {\r\n        var legacyArr = elOption[legacyName];\r\n        var xyName = LEGACY_TRANSFORM_PROPS[legacyName];\r\n        if (legacyArr) {\r\n            if (fromTransformable) {\r\n                targetProps[xyName[0]] = fromTransformable[xyName[0]];\r\n                targetProps[xyName[1]] = fromTransformable[xyName[1]];\r\n            }\r\n            else {\r\n                targetProps[xyName[0]] = legacyArr[0];\r\n                targetProps[xyName[1]] = legacyArr[1];\r\n            }\r\n        }\r\n    }\r\n    function setTransformProp(elOption, allProps, name, fromTransformable) {\r\n        if (elOption[name] != null) {\r\n            allProps[name] = fromTransformable ? fromTransformable[name] : elOption[name];\r\n        }\r\n    }\r\n    function setTransformPropToTransitionFrom(transitionFrom, name, fromTransformable) {\r\n        if (fromTransformable) {\r\n            transitionFrom[name] = fromTransformable[name];\r\n        }\r\n    }\r\n    function makeRenderItem(customSeries, data, ecModel, api) {\r\n        var renderItem = customSeries.get('renderItem');\r\n        var coordSys = customSeries.coordinateSystem;\r\n        var prepareResult = {};\r\n        if (coordSys) {\r\n            if (__DEV__) {\r\n                assert(renderItem, 'series.render is required.');\r\n                assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], 'This coordSys does not support custom series.');\r\n            }\r\n            prepareResult = coordSys.prepareCustoms\r\n                ? coordSys.prepareCustoms(coordSys)\r\n                : prepareCustoms[coordSys.type](coordSys);\r\n        }\r\n        var userAPI = defaults({\r\n            getWidth: api.getWidth,\r\n            getHeight: api.getHeight,\r\n            getZr: api.getZr,\r\n            getDevicePixelRatio: api.getDevicePixelRatio,\r\n            value: value,\r\n            style: style,\r\n            ordinalRawValue: ordinalRawValue,\r\n            styleEmphasis: styleEmphasis,\r\n            visual: visual,\r\n            barLayout: barLayout,\r\n            currentSeriesIndices: currentSeriesIndices,\r\n            font: font\r\n        }, prepareResult.api || {});\r\n        var userParams = {\r\n            context: {},\r\n            seriesId: customSeries.id,\r\n            seriesName: customSeries.name,\r\n            seriesIndex: customSeries.seriesIndex,\r\n            coordSys: prepareResult.coordSys,\r\n            dataInsideLength: data.count(),\r\n            encode: wrapEncodeDef(customSeries.getData())\r\n        };\r\n        var currDataIndexInside;\r\n        var currItemModel;\r\n        var currItemStyleModels = {};\r\n        var currLabelModels = {};\r\n        var seriesItemStyleModels = {};\r\n        var seriesLabelModels = {};\r\n        for (var i = 0; i < STATES.length; i++) {\r\n            var stateName = STATES[i];\r\n            seriesItemStyleModels[stateName] = customSeries\r\n                .getModel(PATH_ITEM_STYLE[stateName]);\r\n            seriesLabelModels[stateName] = customSeries\r\n                .getModel(PATH_LABEL[stateName]);\r\n        }\r\n        function getItemModel(dataIndexInside) {\r\n            return dataIndexInside === currDataIndexInside\r\n                ? (currItemModel || (currItemModel = data.getItemModel(dataIndexInside)))\r\n                : data.getItemModel(dataIndexInside);\r\n        }\r\n        function getItemStyleModel(dataIndexInside, state) {\r\n            return !data.hasItemOption\r\n                ? seriesItemStyleModels[state]\r\n                : dataIndexInside === currDataIndexInside\r\n                    ? (currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state])))\r\n                    : getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state]);\r\n        }\r\n        function getLabelModel(dataIndexInside, state) {\r\n            return !data.hasItemOption\r\n                ? seriesLabelModels[state]\r\n                : dataIndexInside === currDataIndexInside\r\n                    ? (currLabelModels[state] || (currLabelModels[state] = getItemModel(dataIndexInside).getModel(PATH_LABEL[state])))\r\n                    : getItemModel(dataIndexInside).getModel(PATH_LABEL[state]);\r\n        }\r\n        return function (dataIndexInside, payload) {\r\n            currDataIndexInside = dataIndexInside;\r\n            currItemModel = null;\r\n            currItemStyleModels = {};\r\n            currLabelModels = {};\r\n            return renderItem && renderItem(defaults({\r\n                dataIndexInside: dataIndexInside,\r\n                dataIndex: data.getRawIndex(dataIndexInside),\r\n                actionType: payload ? payload.type : null\r\n            }, userParams), userAPI);\r\n        };\r\n        function value(dim, dataIndexInside) {\r\n            dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n            return data.get(data.getDimension(dim || 0), dataIndexInside);\r\n        }\r\n        function ordinalRawValue(dim, dataIndexInside) {\r\n            dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n            var dimInfo = data.getDimensionInfo(dim || 0);\r\n            if (!dimInfo) {\r\n                return;\r\n            }\r\n            var val = data.get(dimInfo.name, dataIndexInside);\r\n            var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\r\n            return ordinalMeta\r\n                ? ordinalMeta.categories[val]\r\n                : val;\r\n        }\r\n        function style(userProps, dataIndexInside) {\r\n            if (__DEV__) {\r\n                warnDeprecated('api.style', 'Please write literal style directly instead.');\r\n            }\r\n            dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n            var style = data.getItemVisual(dataIndexInside, 'style');\r\n            var visualColor = style && style.fill;\r\n            var opacity = style && style.opacity;\r\n            var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle();\r\n            visualColor != null && (itemStyle.fill = visualColor);\r\n            opacity != null && (itemStyle.opacity = opacity);\r\n            var opt = { inheritColor: isString(visualColor) ? visualColor : '#000' };\r\n            var labelModel = getLabelModel(dataIndexInside, NORMAL);\r\n            var textStyle = createTextStyle(labelModel, null, opt, false, true);\r\n            textStyle.text = labelModel.getShallow('show')\r\n                ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside))\r\n                : null;\r\n            var textConfig = createTextConfig(labelModel, opt, false);\r\n            preFetchFromExtra(userProps, itemStyle);\r\n            itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);\r\n            userProps && applyUserPropsAfter(itemStyle, userProps);\r\n            itemStyle.legacy = true;\r\n            return itemStyle;\r\n        }\r\n        function styleEmphasis(userProps, dataIndexInside) {\r\n            if (__DEV__) {\r\n                warnDeprecated('api.styleEmphasis', 'Please write literal style directly instead.');\r\n            }\r\n            dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n            var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle();\r\n            var labelModel = getLabelModel(dataIndexInside, EMPHASIS);\r\n            var textStyle = createTextStyle(labelModel, null, null, true, true);\r\n            textStyle.text = labelModel.getShallow('show')\r\n                ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside))\r\n                : null;\r\n            var textConfig = createTextConfig(labelModel, null, true);\r\n            preFetchFromExtra(userProps, itemStyle);\r\n            itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);\r\n            userProps && applyUserPropsAfter(itemStyle, userProps);\r\n            itemStyle.legacy = true;\r\n            return itemStyle;\r\n        }\r\n        function applyUserPropsAfter(itemStyle, extra) {\r\n            for (var key in extra) {\r\n                if (hasOwn(extra, key)) {\r\n                    itemStyle[key] = extra[key];\r\n                }\r\n            }\r\n        }\r\n        function preFetchFromExtra(extra, itemStyle) {\r\n            if (extra) {\r\n                extra.textFill && (itemStyle.textFill = extra.textFill);\r\n                extra.textPosition && (itemStyle.textPosition = extra.textPosition);\r\n            }\r\n        }\r\n        function visual(visualType, dataIndexInside) {\r\n            dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n            if (hasOwn(STYLE_VISUAL_TYPE, visualType)) {\r\n                var style_1 = data.getItemVisual(dataIndexInside, 'style');\r\n                return style_1\r\n                    ? style_1[STYLE_VISUAL_TYPE[visualType]]\r\n                    : null;\r\n            }\r\n            if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) {\r\n                return data.getItemVisual(dataIndexInside, visualType);\r\n            }\r\n        }\r\n        function barLayout(opt) {\r\n            if (coordSys.type === 'cartesian2d') {\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                return getLayoutOnAxis(defaults({ axis: baseAxis }, opt));\r\n            }\r\n        }\r\n        function currentSeriesIndices() {\r\n            return ecModel.getCurrentSeriesIndices();\r\n        }\r\n        function font(opt) {\r\n            return getFont(opt, ecModel);\r\n        }\r\n    }\r\n    function wrapEncodeDef(data) {\r\n        var encodeDef = {};\r\n        each(data.dimensions, function (dimName, dataDimIndex) {\r\n            var dimInfo = data.getDimensionInfo(dimName);\r\n            if (!dimInfo.isExtraCoord) {\r\n                var coordDim = dimInfo.coordDim;\r\n                var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\r\n                dataDims[dimInfo.coordDimIndex] = dataDimIndex;\r\n            }\r\n        });\r\n        return encodeDef;\r\n    }\r\n    function createOrUpdateItem(api, el, dataIndex, elOption, seriesModel, group, data, morphPreparation) {\r\n        if (!elOption) {\r\n            removeElementDirectly(el, group);\r\n            return;\r\n        }\r\n        el = doCreateOrUpdateEl(api, el, dataIndex, elOption, seriesModel, group, true, morphPreparation);\r\n        el && data.setItemGraphicEl(dataIndex, el);\r\n        enableHoverEmphasis(el, elOption.focus, elOption.blurScope);\r\n        return el;\r\n    }\r\n    function doCreateOrUpdateEl(api, el, dataIndex, elOption, seriesModel, group, isRoot, morphPreparation) {\r\n        if (__DEV__) {\r\n            assert(elOption, 'should not have an null/undefined element setting');\r\n        }\r\n        var toBeReplacedIdx = -1;\r\n        if (el && (doesElNeedRecreate(el, elOption))) {\r\n            toBeReplacedIdx = group.childrenRef().indexOf(el);\r\n            el = null;\r\n        }\r\n        var elIsNewCreated = !el;\r\n        if (!el) {\r\n            el = createEl(elOption);\r\n        }\r\n        else {\r\n            el.clearStates();\r\n        }\r\n        var canMorph = inner$e(el).canMorph = elOption.morph && isPath$1(el);\r\n        var thisElIsMorphTo = canMorph && morphPreparation && morphPreparation.hasFrom();\r\n        var isInit = elIsNewCreated && !thisElIsMorphTo;\r\n        attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt =\r\n            attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt =\r\n                attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt =\r\n                    attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null;\r\n        attachedTxInfoTmp.isLegacy = false;\r\n        doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp);\r\n        doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit);\r\n        var pendingAllPropsFinal = updateElNormal(api, el, thisElIsMorphTo, dataIndex, elOption, elOption.style, attachedTxInfoTmp, seriesModel, isInit, false);\r\n        if (thisElIsMorphTo) {\r\n            morphPreparation.addTo(el, elOption, dataIndex, pendingAllPropsFinal);\r\n        }\r\n        for (var i = 0; i < STATES.length; i++) {\r\n            var stateName = STATES[i];\r\n            if (stateName !== NORMAL) {\r\n                var otherStateOpt = retrieveStateOption(elOption, stateName);\r\n                var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName);\r\n                updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp);\r\n            }\r\n        }\r\n        updateZ$1(el, elOption, seriesModel);\r\n        if (elOption.type === 'group') {\r\n            mergeChildren(api, el, dataIndex, elOption, seriesModel, morphPreparation);\r\n        }\r\n        if (toBeReplacedIdx >= 0) {\r\n            group.replaceAt(el, toBeReplacedIdx);\r\n        }\r\n        else {\r\n            group.add(el);\r\n        }\r\n        return el;\r\n    }\r\n    function doesElNeedRecreate(el, elOption) {\r\n        var elInner = inner$e(el);\r\n        var elOptionType = elOption.type;\r\n        var elOptionShape = elOption.shape;\r\n        var elOptionStyle = elOption.style;\r\n        return ((elOptionType != null\r\n            && elOptionType !== elInner.customGraphicType)\r\n            || (elOptionType === 'path'\r\n                && hasOwnPathData(elOptionShape)\r\n                && getPathData(elOptionShape) !== elInner.customPathData)\r\n            || (elOptionType === 'image'\r\n                && hasOwn(elOptionStyle, 'image')\r\n                && elOptionStyle.image !== elInner.customImagePath));\r\n    }\r\n    function doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) {\r\n        var clipPathOpt = elOption.clipPath;\r\n        if (clipPathOpt === false) {\r\n            if (el && el.getClipPath()) {\r\n                el.removeClipPath();\r\n            }\r\n        }\r\n        else if (clipPathOpt) {\r\n            var clipPath = el.getClipPath();\r\n            if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt)) {\r\n                clipPath = null;\r\n            }\r\n            if (!clipPath) {\r\n                clipPath = createEl(clipPathOpt);\r\n                if (__DEV__) {\r\n                    assert(clipPath instanceof Path, 'Only any type of `path` can be used in `clipPath`, rather than ' + clipPath.type + '.');\r\n                }\r\n                el.setClipPath(clipPath);\r\n            }\r\n            updateElNormal(null, clipPath, null, dataIndex, clipPathOpt, null, null, seriesModel, isInit, false);\r\n        }\r\n    }\r\n    function doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) {\r\n        if (el.isGroup) {\r\n            return;\r\n        }\r\n        processTxInfo(elOption, null, attachedTxInfo);\r\n        processTxInfo(elOption, EMPHASIS, attachedTxInfo);\r\n        var txConOptNormal = attachedTxInfo.normal.conOpt;\r\n        var txConOptEmphasis = attachedTxInfo.emphasis.conOpt;\r\n        var txConOptBlur = attachedTxInfo.blur.conOpt;\r\n        var txConOptSelect = attachedTxInfo.select.conOpt;\r\n        if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) {\r\n            var textContent = el.getTextContent();\r\n            if (txConOptNormal === false) {\r\n                textContent && el.removeTextContent();\r\n            }\r\n            else {\r\n                txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || { type: 'text' };\r\n                if (!textContent) {\r\n                    textContent = createEl(txConOptNormal);\r\n                    el.setTextContent(textContent);\r\n                }\r\n                else {\r\n                    textContent.clearStates();\r\n                }\r\n                var txConStlOptNormal = txConOptNormal && txConOptNormal.style;\r\n                updateElNormal(null, textContent, null, dataIndex, txConOptNormal, txConStlOptNormal, null, seriesModel, isInit, true);\r\n                for (var i = 0; i < STATES.length; i++) {\r\n                    var stateName = STATES[i];\r\n                    if (stateName !== NORMAL) {\r\n                        var txConOptOtherState = attachedTxInfo[stateName].conOpt;\r\n                        updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null);\r\n                    }\r\n                }\r\n                txConStlOptNormal ? textContent.dirty() : textContent.markRedraw();\r\n            }\r\n        }\r\n    }\r\n    function processTxInfo(elOption, state, attachedTxInfo) {\r\n        var stateOpt = !state ? elOption : retrieveStateOption(elOption, state);\r\n        var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS);\r\n        var elType = elOption.type;\r\n        var txCfg = stateOpt ? stateOpt.textConfig : null;\r\n        var txConOptNormal = elOption.textContent;\r\n        var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state);\r\n        if (styleOpt && (attachedTxInfo.isLegacy\r\n            || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) {\r\n            attachedTxInfo.isLegacy = true;\r\n            var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state);\r\n            if (!txCfg && convertResult.textConfig) {\r\n                txCfg = convertResult.textConfig;\r\n            }\r\n            if (!txConOpt && convertResult.textContent) {\r\n                txConOpt = convertResult.textContent;\r\n            }\r\n        }\r\n        if (!state && txConOpt) {\r\n            var txConOptNormal_1 = txConOpt;\r\n            !txConOptNormal_1.type && (txConOptNormal_1.type = 'text');\r\n            if (__DEV__) {\r\n                txConOptNormal_1.type !== 'text' && assert(txConOptNormal_1.type === 'text', 'textContent.type must be \"text\"');\r\n            }\r\n        }\r\n        var info = !state ? attachedTxInfo.normal : attachedTxInfo[state];\r\n        info.cfg = txCfg;\r\n        info.conOpt = txConOpt;\r\n    }\r\n    function retrieveStateOption(elOption, state) {\r\n        return !state ? elOption : elOption ? elOption[state] : null;\r\n    }\r\n    function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) {\r\n        var style = stateOption && stateOption.style;\r\n        if (style == null && state === EMPHASIS && stateOptionNormal) {\r\n            style = stateOptionNormal.styleEmphasis;\r\n        }\r\n        return style;\r\n    }\r\n    function mergeChildren(api, el, dataIndex, elOption, seriesModel, morphPreparation) {\r\n        var newChildren = elOption.children;\r\n        var newLen = newChildren ? newChildren.length : 0;\r\n        var mergeChildren = elOption.$mergeChildren;\r\n        var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\r\n        var notMerge = mergeChildren === false;\r\n        if (!newLen && !byName && !notMerge) {\r\n            return;\r\n        }\r\n        if (byName) {\r\n            diffGroupChildren({\r\n                api: api,\r\n                oldChildren: el.children() || [],\r\n                newChildren: newChildren || [],\r\n                dataIndex: dataIndex,\r\n                seriesModel: seriesModel,\r\n                group: el,\r\n                morphPreparation: morphPreparation\r\n            });\r\n            return;\r\n        }\r\n        notMerge && el.removeAll();\r\n        var index = 0;\r\n        for (; index < newLen; index++) {\r\n            newChildren[index] && doCreateOrUpdateEl(api, el.childAt(index), dataIndex, newChildren[index], seriesModel, el, false, morphPreparation);\r\n        }\r\n        for (var i = el.childCount() - 1; i >= index; i--) {\r\n            doRemoveEl(el.childAt(i), seriesModel, el);\r\n        }\r\n    }\r\n    function diffGroupChildren(context) {\r\n        (new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context))\r\n            .add(processAddUpdate)\r\n            .update(processAddUpdate)\r\n            .remove(processRemove)\r\n            .execute();\r\n    }\r\n    function getKey(item, idx) {\r\n        var name = item && item.name;\r\n        return name != null ? name : GROUP_DIFF_PREFIX + idx;\r\n    }\r\n    function processAddUpdate(newIndex, oldIndex) {\r\n        var context = this.context;\r\n        var childOption = newIndex != null ? context.newChildren[newIndex] : null;\r\n        var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\r\n        doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group, false, context.morphPreparation);\r\n    }\r\n    function processRemove(oldIndex) {\r\n        var context = this.context;\r\n        var child = context.oldChildren[oldIndex];\r\n        doRemoveEl(child, context.seriesModel, context.group);\r\n    }\r\n    function doRemoveEl(el, seriesModel, group) {\r\n        if (el) {\r\n            var leaveToProps = inner$e(el).leaveToProps;\r\n            leaveToProps\r\n                ? updateProps(el, leaveToProps, seriesModel, {\r\n                    cb: function () {\r\n                        group.remove(el);\r\n                    }\r\n                })\r\n                : group.remove(el);\r\n        }\r\n    }\r\n    function getPathData(shape) {\r\n        return shape && (shape.pathData || shape.d);\r\n    }\r\n    function hasOwnPathData(shape) {\r\n        return shape && (hasOwn(shape, 'pathData') || hasOwn(shape, 'd'));\r\n    }\r\n    function isPath$1(el) {\r\n        return el && el instanceof Path;\r\n    }\r\n    function removeElementDirectly(el, group) {\r\n        el && group.remove(el);\r\n    }\r\n    var MorphPreparation = (function () {\r\n        function MorphPreparation(seriesModel, transOpt) {\r\n            this._fromList = [];\r\n            this._toList = [];\r\n            this._toElOptionList = [];\r\n            this._allPropsFinalList = [];\r\n            this._toDataIndices = [];\r\n            this._morphConfigList = [];\r\n            this._seriesModel = seriesModel;\r\n            this._transOpt = transOpt;\r\n        }\r\n        MorphPreparation.prototype.hasFrom = function () {\r\n            return !!this._fromList.length;\r\n        };\r\n        MorphPreparation.prototype.findAndAddFrom = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            if (inner$e(el).canMorph) {\r\n                this._fromList.push(el);\r\n            }\r\n            if (el.isGroup) {\r\n                var children = el.childrenRef();\r\n                for (var i = 0; i < children.length; i++) {\r\n                    this.findAndAddFrom(children[i]);\r\n                }\r\n            }\r\n        };\r\n        MorphPreparation.prototype.addTo = function (path, elOption, dataIndex, allPropsFinal) {\r\n            if (path) {\r\n                this._toList.push(path);\r\n                this._toElOptionList.push(elOption);\r\n                this._toDataIndices.push(dataIndex);\r\n                this._allPropsFinalList.push(allPropsFinal);\r\n            }\r\n        };\r\n        MorphPreparation.prototype.applyMorphing = function () {\r\n            var type = this._type;\r\n            var fromList = this._fromList;\r\n            var toList = this._toList;\r\n            var toListLen = toList.length;\r\n            var fromListLen = fromList.length;\r\n            if (!fromListLen || !toListLen) {\r\n                return;\r\n            }\r\n            if (type === 'oneToOne') {\r\n                for (var toIdx = 0; toIdx < toListLen; toIdx++) {\r\n                    this._oneToOneForSingleTo(toIdx, toIdx);\r\n                }\r\n            }\r\n            else if (type === 'manyToOne') {\r\n                var fromSingleSegLen = Math.max(1, Math.floor(fromListLen / toListLen));\r\n                for (var toIdx = 0, fromIdxStart = 0; toIdx < toListLen; toIdx++, fromIdxStart += fromSingleSegLen) {\r\n                    var fromCount = toIdx + 1 >= toListLen\r\n                        ? fromListLen - fromIdxStart\r\n                        : fromSingleSegLen;\r\n                    this._manyToOneForSingleTo(toIdx, fromIdxStart >= fromListLen ? null : fromIdxStart, fromCount);\r\n                }\r\n            }\r\n            else if (type === 'oneToMany') {\r\n                var toSingleSegLen = Math.max(1, Math.floor(toListLen / fromListLen));\r\n                for (var toIdxStart = 0, fromIdx = 0; toIdxStart < toListLen; toIdxStart += toSingleSegLen, fromIdx++) {\r\n                    var toCount = toIdxStart + toSingleSegLen >= toListLen\r\n                        ? toListLen - toIdxStart\r\n                        : toSingleSegLen;\r\n                    this._oneToManyForSingleFrom(toIdxStart, toCount, fromIdx >= fromListLen ? null : fromIdx);\r\n                }\r\n            }\r\n        };\r\n        MorphPreparation.prototype._oneToOneForSingleTo = function (toIdx, fromIdx) {\r\n            var to = this._toList[toIdx];\r\n            var toElOption = this._toElOptionList[toIdx];\r\n            var toDataIndex = this._toDataIndices[toIdx];\r\n            var allPropsFinal = this._allPropsFinalList[toIdx];\r\n            var from = this._fromList[fromIdx];\r\n            var elAnimationConfig = this._getOrCreateMorphConfig(toDataIndex);\r\n            var morphDuration = elAnimationConfig.duration;\r\n            if (from && isCombiningPath(from)) {\r\n                applyPropsFinal(to, allPropsFinal, toElOption.style);\r\n                if (morphDuration) {\r\n                    var combineResult = combine([from], to, elAnimationConfig, copyPropsWhenDivided);\r\n                    this._processResultIndividuals(combineResult, toIdx, null);\r\n                }\r\n            }\r\n            else {\r\n                var morphFrom = (morphDuration\r\n                    && from\r\n                    && (from !== to || isInAnyMorphing(from))) ? from : null;\r\n                var transFromProps = {};\r\n                prepareShapeOrExtraTransitionFrom('shape', to, morphFrom, toElOption, transFromProps, false);\r\n                prepareShapeOrExtraTransitionFrom('extra', to, morphFrom, toElOption, transFromProps, false);\r\n                prepareTransformTransitionFrom(to, morphFrom, toElOption, transFromProps, false);\r\n                prepareStyleTransitionFrom(to, morphFrom, toElOption, toElOption.style, transFromProps, false);\r\n                applyPropsFinal(to, allPropsFinal, toElOption.style);\r\n                if (morphFrom) {\r\n                    morphPath(morphFrom, to, elAnimationConfig);\r\n                }\r\n                applyTransitionFrom(to, toDataIndex, toElOption, this._seriesModel, transFromProps, false);\r\n            }\r\n        };\r\n        MorphPreparation.prototype._manyToOneForSingleTo = function (toIdx, fromIdxStart, fromCount) {\r\n            var to = this._toList[toIdx];\r\n            var toElOption = this._toElOptionList[toIdx];\r\n            var allPropsFinal = this._allPropsFinalList[toIdx];\r\n            applyPropsFinal(to, allPropsFinal, toElOption.style);\r\n            var elAnimationConfig = this._getOrCreateMorphConfig(this._toDataIndices[toIdx]);\r\n            if (elAnimationConfig.duration && fromIdxStart != null) {\r\n                var combineFromList = [];\r\n                for (var fromIdx = fromIdxStart; fromIdx < fromCount; fromIdx++) {\r\n                    combineFromList.push(this._fromList[fromIdx]);\r\n                }\r\n                var combineResult = combine(combineFromList, to, elAnimationConfig, copyPropsWhenDivided);\r\n                this._processResultIndividuals(combineResult, toIdx, null);\r\n            }\r\n        };\r\n        MorphPreparation.prototype._oneToManyForSingleFrom = function (toIdxStart, toCount, fromIdx) {\r\n            var from = fromIdx == null ? null : this._fromList[fromIdx];\r\n            var toList = this._toList;\r\n            var separateToList = [];\r\n            for (var toIdx = toIdxStart; toIdx < toCount; toIdx++) {\r\n                var to = toList[toIdx];\r\n                applyPropsFinal(to, this._allPropsFinalList[toIdx], this._toElOptionList[toIdx].style);\r\n                separateToList.push(to);\r\n            }\r\n            var elAnimationConfig = this._getOrCreateMorphConfig(this._toDataIndices[toIdxStart]);\r\n            if (elAnimationConfig.duration && from) {\r\n                var separateResult = separate(from, separateToList, elAnimationConfig, copyPropsWhenDivided);\r\n                this._processResultIndividuals(separateResult, toIdxStart, toCount);\r\n            }\r\n        };\r\n        MorphPreparation.prototype._processResultIndividuals = function (combineSeparateResult, toIdxStart, toCount) {\r\n            var isSeparate = toCount != null;\r\n            for (var i = 0; i < combineSeparateResult.count; i++) {\r\n                var fromIndividual = combineSeparateResult.fromIndividuals[i];\r\n                var toIndividual = combineSeparateResult.toIndividuals[i];\r\n                var toIdx = toIdxStart + (isSeparate ? i : 0);\r\n                var toElOption = this._toElOptionList[toIdx];\r\n                var dataIndex = this._toDataIndices[toIdx];\r\n                var transFromProps = {};\r\n                prepareTransformTransitionFrom(toIndividual, fromIndividual, toElOption, transFromProps, false);\r\n                prepareStyleTransitionFrom(toIndividual, fromIndividual, toElOption, toElOption.style, transFromProps, false);\r\n                applyTransitionFrom(toIndividual, dataIndex, toElOption, this._seriesModel, transFromProps, false);\r\n            }\r\n        };\r\n        MorphPreparation.prototype._getOrCreateMorphConfig = function (dataIndex) {\r\n            var morphConfigList = this._morphConfigList;\r\n            var config = morphConfigList[dataIndex];\r\n            if (config) {\r\n                return config;\r\n            }\r\n            var duration;\r\n            var easing;\r\n            var delay;\r\n            var seriesModel = this._seriesModel;\r\n            var transOpt = this._transOpt;\r\n            if (seriesModel.isAnimationEnabled()) {\r\n                var animationPayload = void 0;\r\n                if (seriesModel && seriesModel.ecModel) {\r\n                    var updatePayload = seriesModel.ecModel.getUpdatePayload();\r\n                    animationPayload = (updatePayload && updatePayload.animation);\r\n                }\r\n                if (animationPayload) {\r\n                    duration = animationPayload.duration || 0;\r\n                    easing = animationPayload.easing || 'cubicOut';\r\n                    delay = animationPayload.delay || 0;\r\n                }\r\n                else {\r\n                    easing = seriesModel.get('animationEasingUpdate');\r\n                    var delayOption = seriesModel.get('animationDelayUpdate');\r\n                    delay = isFunction(delayOption) ? delayOption(dataIndex) : delayOption;\r\n                    var durationOption = seriesModel.get('animationDurationUpdate');\r\n                    duration = isFunction(durationOption) ? durationOption(dataIndex) : durationOption;\r\n                }\r\n            }\r\n            config = {\r\n                duration: duration || 0,\r\n                delay: delay,\r\n                easing: easing,\r\n                dividingMethod: transOpt ? transOpt.dividingMethod : null\r\n            };\r\n            morphConfigList[dataIndex] = config;\r\n            return config;\r\n        };\r\n        MorphPreparation.prototype.reset = function (type) {\r\n            this._type = type;\r\n            this._fromList.length =\r\n                this._toList.length =\r\n                    this._toElOptionList.length =\r\n                        this._allPropsFinalList.length =\r\n                            this._toDataIndices.length = 0;\r\n        };\r\n        return MorphPreparation;\r\n    }());\r\n    function copyPropsWhenDivided(srcPath, tarPath, willClone) {\r\n        tarPath.style = willClone\r\n            ? clone(srcPath.style)\r\n            : srcPath.style;\r\n        tarPath.zlevel = srcPath.zlevel;\r\n        tarPath.z = srcPath.z;\r\n        tarPath.z2 = srcPath.z2;\r\n    }\n\n    function getSeriesStackId$1(seriesModel) {\r\n        return seriesModel.get('stack')\r\n            || '__ec_stack_' + seriesModel.seriesIndex;\r\n    }\r\n    function getAxisKey$1(polar, axis) {\r\n        return axis.dim + polar.model.componentIndex;\r\n    }\r\n    function barLayoutPolar(seriesType, ecModel, api) {\r\n        var lastStackCoords = {};\r\n        var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\r\n            return !ecModel.isSeriesFiltered(seriesModel)\r\n                && seriesModel.coordinateSystem\r\n                && seriesModel.coordinateSystem.type === 'polar';\r\n        }));\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            if (seriesModel.coordinateSystem.type !== 'polar') {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var polar = seriesModel.coordinateSystem;\r\n            var baseAxis = polar.getBaseAxis();\r\n            var axisKey = getAxisKey$1(polar, baseAxis);\r\n            var stackId = getSeriesStackId$1(seriesModel);\r\n            var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\r\n            var columnOffset = columnLayoutInfo.offset;\r\n            var columnWidth = columnLayoutInfo.width;\r\n            var valueAxis = polar.getOtherAxis(baseAxis);\r\n            var cx = seriesModel.coordinateSystem.cx;\r\n            var cy = seriesModel.coordinateSystem.cy;\r\n            var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n            var barMinAngle = seriesModel.get('barMinAngle') || 0;\r\n            lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var stacked = isDimensionStacked(data, valueDim);\r\n            var clampLayout = baseAxis.dim !== 'radius'\r\n                || !seriesModel.get('roundCap', true);\r\n            var valueAxisStart = valueAxis.dataToCoord(0);\r\n            for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n                var value = data.get(valueDim, idx);\r\n                var baseValue = data.get(baseDim, idx);\r\n                var sign = value >= 0 ? 'p' : 'n';\r\n                var baseCoord = valueAxisStart;\r\n                if (stacked) {\r\n                    if (!lastStackCoords[stackId][baseValue]) {\r\n                        lastStackCoords[stackId][baseValue] = {\r\n                            p: valueAxisStart,\r\n                            n: valueAxisStart\r\n                        };\r\n                    }\r\n                    baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n                }\r\n                var r0 = void 0;\r\n                var r = void 0;\r\n                var startAngle = void 0;\r\n                var endAngle = void 0;\r\n                if (valueAxis.dim === 'radius') {\r\n                    var radiusSpan = valueAxis.dataToCoord(value) - valueAxisStart;\r\n                    var angle = baseAxis.dataToCoord(baseValue);\r\n                    if (Math.abs(radiusSpan) < barMinHeight) {\r\n                        radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    r0 = baseCoord;\r\n                    r = baseCoord + radiusSpan;\r\n                    startAngle = angle - columnOffset;\r\n                    endAngle = startAngle - columnWidth;\r\n                    stacked && (lastStackCoords[stackId][baseValue][sign] = r);\r\n                }\r\n                else {\r\n                    var angleSpan = valueAxis.dataToCoord(value, clampLayout) - valueAxisStart;\r\n                    var radius = baseAxis.dataToCoord(baseValue);\r\n                    if (Math.abs(angleSpan) < barMinAngle) {\r\n                        angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\r\n                    }\r\n                    r0 = radius + columnOffset;\r\n                    r = r0 + columnWidth;\r\n                    startAngle = baseCoord;\r\n                    endAngle = baseCoord + angleSpan;\r\n                    stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\r\n                }\r\n                data.setItemLayout(idx, {\r\n                    cx: cx,\r\n                    cy: cy,\r\n                    r0: r0,\r\n                    r: r,\r\n                    startAngle: -startAngle * Math.PI / 180,\r\n                    endAngle: -endAngle * Math.PI / 180\r\n                });\r\n            }\r\n        });\r\n    }\r\n    function calRadialBar(barSeries) {\r\n        var columnsMap = {};\r\n        each(barSeries, function (seriesModel, idx) {\r\n            var data = seriesModel.getData();\r\n            var polar = seriesModel.coordinateSystem;\r\n            var baseAxis = polar.getBaseAxis();\r\n            var axisKey = getAxisKey$1(polar, baseAxis);\r\n            var axisExtent = baseAxis.getExtent();\r\n            var bandWidth = baseAxis.type === 'category'\r\n                ? baseAxis.getBandWidth()\r\n                : (Math.abs(axisExtent[1] - axisExtent[0]) / data.count());\r\n            var columnsOnAxis = columnsMap[axisKey] || {\r\n                bandWidth: bandWidth,\r\n                remainedWidth: bandWidth,\r\n                autoWidthCount: 0,\r\n                categoryGap: '20%',\r\n                gap: '30%',\r\n                stacks: {}\r\n            };\r\n            var stacks = columnsOnAxis.stacks;\r\n            columnsMap[axisKey] = columnsOnAxis;\r\n            var stackId = getSeriesStackId$1(seriesModel);\r\n            if (!stacks[stackId]) {\r\n                columnsOnAxis.autoWidthCount++;\r\n            }\r\n            stacks[stackId] = stacks[stackId] || {\r\n                width: 0,\r\n                maxWidth: 0\r\n            };\r\n            var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n            var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n            var barGap = seriesModel.get('barGap');\r\n            var barCategoryGap = seriesModel.get('barCategoryGap');\r\n            if (barWidth && !stacks[stackId].width) {\r\n                barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n                stacks[stackId].width = barWidth;\r\n                columnsOnAxis.remainedWidth -= barWidth;\r\n            }\r\n            barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n            (barGap != null) && (columnsOnAxis.gap = barGap);\r\n            (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n        });\r\n        var result = {};\r\n        each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n            result[coordSysName] = {};\r\n            var stacks = columnsOnAxis.stacks;\r\n            var bandWidth = columnsOnAxis.bandWidth;\r\n            var categoryGap = parsePercent$2(columnsOnAxis.categoryGap, bandWidth);\r\n            var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n            var remainedWidth = columnsOnAxis.remainedWidth;\r\n            var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n            var autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            each(stacks, function (column, stack) {\r\n                var maxWidth = column.maxWidth;\r\n                if (maxWidth && maxWidth < autoWidth) {\r\n                    maxWidth = Math.min(maxWidth, remainedWidth);\r\n                    if (column.width) {\r\n                        maxWidth = Math.min(maxWidth, column.width);\r\n                    }\r\n                    remainedWidth -= maxWidth;\r\n                    column.width = maxWidth;\r\n                    autoWidthCount--;\r\n                }\r\n            });\r\n            autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            var widthSum = 0;\r\n            var lastColumn;\r\n            each(stacks, function (column, idx) {\r\n                if (!column.width) {\r\n                    column.width = autoWidth;\r\n                }\r\n                lastColumn = column;\r\n                widthSum += column.width * (1 + barGapPercent);\r\n            });\r\n            if (lastColumn) {\r\n                widthSum -= lastColumn.width * barGapPercent;\r\n            }\r\n            var offset = -widthSum / 2;\r\n            each(stacks, function (column, stackId) {\r\n                result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n                    offset: offset,\r\n                    width: column.width\r\n                };\r\n                offset += column.width * (1 + barGapPercent);\r\n            });\r\n        });\r\n        return result;\r\n    }\n\n    var PolarModel = (function (_super) {\r\n        __extends(PolarModel, _super);\r\n        function PolarModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = PolarModel.type;\r\n            return _this;\r\n        }\r\n        PolarModel.prototype.findAxisModel = function (axisType) {\r\n            var foundAxisModel;\r\n            var ecModel = this.ecModel;\r\n            ecModel.eachComponent(axisType, function (axisModel) {\r\n                if (axisModel.getCoordSysModel() === this) {\r\n                    foundAxisModel = axisModel;\r\n                }\r\n            }, this);\r\n            return foundAxisModel;\r\n        };\r\n        PolarModel.type = 'polar';\r\n        PolarModel.dependencies = ['radiusAxis', 'angleAxis'];\r\n        PolarModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 0,\r\n            center: ['50%', '50%'],\r\n            radius: '80%'\r\n        };\r\n        return PolarModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(PolarModel);\n\n    var PolarAxisModel = (function (_super) {\r\n        __extends(PolarAxisModel, _super);\r\n        function PolarAxisModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        PolarAxisModel.prototype.getCoordSysModel = function () {\r\n            return this.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n        };\r\n        PolarAxisModel.type = 'polarAxis';\r\n        return PolarAxisModel;\r\n    }(ComponentModel));\r\n    mixin(PolarAxisModel, AxisModelCommonMixin);\r\n    var AngleAxisModel = (function (_super) {\r\n        __extends(AngleAxisModel, _super);\r\n        function AngleAxisModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AngleAxisModel.type;\r\n            return _this;\r\n        }\r\n        AngleAxisModel.type = 'angleAxis';\r\n        return AngleAxisModel;\r\n    }(PolarAxisModel));\r\n    var RadiusAxisModel = (function (_super) {\r\n        __extends(RadiusAxisModel, _super);\r\n        function RadiusAxisModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = RadiusAxisModel.type;\r\n            return _this;\r\n        }\r\n        RadiusAxisModel.type = 'radiusAxis';\r\n        return RadiusAxisModel;\r\n    }(PolarAxisModel));\r\n    var angleAxisExtraOption = {\r\n        startAngle: 90,\r\n        clockwise: true,\r\n        splitNumber: 12,\r\n        axisLabel: {\r\n            rotate: 0\r\n        }\r\n    };\r\n    var radiusAxisExtraOption = {\r\n        splitNumber: 5\r\n    };\r\n    axisModelCreator('angle', AngleAxisModel, angleAxisExtraOption);\r\n    axisModelCreator('radius', RadiusAxisModel, radiusAxisExtraOption);\n\n    var RadiusAxis = (function (_super) {\r\n        __extends(RadiusAxis, _super);\r\n        function RadiusAxis(scale, radiusExtent) {\r\n            return _super.call(this, 'radius', scale, radiusExtent) || this;\r\n        }\r\n        RadiusAxis.prototype.pointToData = function (point, clamp) {\r\n            return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\r\n        };\r\n        return RadiusAxis;\r\n    }(Axis));\r\n    RadiusAxis.prototype.dataToRadius = Axis.prototype.dataToCoord;\r\n    RadiusAxis.prototype.radiusToData = Axis.prototype.coordToData;\n\n    var inner$f = makeInner();\r\n    var AngleAxis = (function (_super) {\r\n        __extends(AngleAxis, _super);\r\n        function AngleAxis(scale, angleExtent) {\r\n            return _super.call(this, 'angle', scale, angleExtent || [0, 360]) || this;\r\n        }\r\n        AngleAxis.prototype.pointToData = function (point, clamp) {\r\n            return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\r\n        };\r\n        AngleAxis.prototype.calculateCategoryInterval = function () {\r\n            var axis = this;\r\n            var labelModel = axis.getLabelModel();\r\n            var ordinalScale = axis.scale;\r\n            var ordinalExtent = ordinalScale.getExtent();\r\n            var tickCount = ordinalScale.count();\r\n            if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n                return 0;\r\n            }\r\n            var tickValue = ordinalExtent[0];\r\n            var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n            var unitH = Math.abs(unitSpan);\r\n            var rect = getBoundingRect(tickValue == null ? '' : tickValue + '', labelModel.getFont(), 'center', 'top');\r\n            var maxH = Math.max(rect.height, 7);\r\n            var dh = maxH / unitH;\r\n            isNaN(dh) && (dh = Infinity);\r\n            var interval = Math.max(0, Math.floor(dh));\r\n            var cache = inner$f(axis.model);\r\n            var lastAutoInterval = cache.lastAutoInterval;\r\n            var lastTickCount = cache.lastTickCount;\r\n            if (lastAutoInterval != null\r\n                && lastTickCount != null\r\n                && Math.abs(lastAutoInterval - interval) <= 1\r\n                && Math.abs(lastTickCount - tickCount) <= 1\r\n                && lastAutoInterval > interval) {\r\n                interval = lastAutoInterval;\r\n            }\r\n            else {\r\n                cache.lastTickCount = tickCount;\r\n                cache.lastAutoInterval = interval;\r\n            }\r\n            return interval;\r\n        };\r\n        return AngleAxis;\r\n    }(Axis));\r\n    AngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord;\r\n    AngleAxis.prototype.angleToData = Axis.prototype.coordToData;\n\n    var Polar = (function () {\r\n        function Polar(name) {\r\n            this.dimensions = ['radius', 'angle'];\r\n            this.type = 'polar';\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this._radiusAxis = new RadiusAxis();\r\n            this._angleAxis = new AngleAxis();\r\n            this.axisPointerEnabled = true;\r\n            this.name = name || '';\r\n            this._radiusAxis.polar = this._angleAxis.polar = this;\r\n        }\r\n        Polar.prototype.containPoint = function (point) {\r\n            var coord = this.pointToCoord(point);\r\n            return this._radiusAxis.contain(coord[0])\r\n                && this._angleAxis.contain(coord[1]);\r\n        };\r\n        Polar.prototype.containData = function (data) {\r\n            return this._radiusAxis.containData(data[0])\r\n                && this._angleAxis.containData(data[1]);\r\n        };\r\n        Polar.prototype.getAxis = function (dim) {\r\n            var key = ('_' + dim + 'Axis');\r\n            return this[key];\r\n        };\r\n        Polar.prototype.getAxes = function () {\r\n            return [this._radiusAxis, this._angleAxis];\r\n        };\r\n        Polar.prototype.getAxesByScale = function (scaleType) {\r\n            var axes = [];\r\n            var angleAxis = this._angleAxis;\r\n            var radiusAxis = this._radiusAxis;\r\n            angleAxis.scale.type === scaleType && axes.push(angleAxis);\r\n            radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\r\n            return axes;\r\n        };\r\n        Polar.prototype.getAngleAxis = function () {\r\n            return this._angleAxis;\r\n        };\r\n        Polar.prototype.getRadiusAxis = function () {\r\n            return this._radiusAxis;\r\n        };\r\n        Polar.prototype.getOtherAxis = function (axis) {\r\n            var angleAxis = this._angleAxis;\r\n            return axis === angleAxis ? this._radiusAxis : angleAxis;\r\n        };\r\n        Polar.prototype.getBaseAxis = function () {\r\n            return this.getAxesByScale('ordinal')[0]\r\n                || this.getAxesByScale('time')[0]\r\n                || this.getAngleAxis();\r\n        };\r\n        Polar.prototype.getTooltipAxes = function (dim) {\r\n            var baseAxis = (dim != null && dim !== 'auto')\r\n                ? this.getAxis(dim) : this.getBaseAxis();\r\n            return {\r\n                baseAxes: [baseAxis],\r\n                otherAxes: [this.getOtherAxis(baseAxis)]\r\n            };\r\n        };\r\n        Polar.prototype.dataToPoint = function (data, clamp) {\r\n            return this.coordToPoint([\r\n                this._radiusAxis.dataToRadius(data[0], clamp),\r\n                this._angleAxis.dataToAngle(data[1], clamp)\r\n            ]);\r\n        };\r\n        Polar.prototype.pointToData = function (point, clamp) {\r\n            var coord = this.pointToCoord(point);\r\n            return [\r\n                this._radiusAxis.radiusToData(coord[0], clamp),\r\n                this._angleAxis.angleToData(coord[1], clamp)\r\n            ];\r\n        };\r\n        Polar.prototype.pointToCoord = function (point) {\r\n            var dx = point[0] - this.cx;\r\n            var dy = point[1] - this.cy;\r\n            var angleAxis = this.getAngleAxis();\r\n            var extent = angleAxis.getExtent();\r\n            var minAngle = Math.min(extent[0], extent[1]);\r\n            var maxAngle = Math.max(extent[0], extent[1]);\r\n            angleAxis.inverse\r\n                ? (minAngle = maxAngle - 360)\r\n                : (maxAngle = minAngle + 360);\r\n            var radius = Math.sqrt(dx * dx + dy * dy);\r\n            dx /= radius;\r\n            dy /= radius;\r\n            var radian = Math.atan2(-dy, dx) / Math.PI * 180;\r\n            var dir = radian < minAngle ? 1 : -1;\r\n            while (radian < minAngle || radian > maxAngle) {\r\n                radian += dir * 360;\r\n            }\r\n            return [radius, radian];\r\n        };\r\n        Polar.prototype.coordToPoint = function (coord) {\r\n            var radius = coord[0];\r\n            var radian = coord[1] / 180 * Math.PI;\r\n            var x = Math.cos(radian) * radius + this.cx;\r\n            var y = -Math.sin(radian) * radius + this.cy;\r\n            return [x, y];\r\n        };\r\n        Polar.prototype.getArea = function () {\r\n            var angleAxis = this.getAngleAxis();\r\n            var radiusAxis = this.getRadiusAxis();\r\n            var radiusExtent = radiusAxis.getExtent().slice();\r\n            radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\r\n            var angleExtent = angleAxis.getExtent();\r\n            var RADIAN = Math.PI / 180;\r\n            return {\r\n                cx: this.cx,\r\n                cy: this.cy,\r\n                r0: radiusExtent[0],\r\n                r: radiusExtent[1],\r\n                startAngle: -angleExtent[0] * RADIAN,\r\n                endAngle: -angleExtent[1] * RADIAN,\r\n                clockwise: angleAxis.inverse,\r\n                contain: function (x, y) {\r\n                    var dx = x - this.cx;\r\n                    var dy = y - this.cy;\r\n                    var d2 = dx * dx + dy * dy;\r\n                    var r = this.r;\r\n                    var r0 = this.r0;\r\n                    return d2 <= r * r && d2 >= r0 * r0;\r\n                }\r\n            };\r\n        };\r\n        Polar.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var coordSys = getCoordSys$3(finder);\r\n            return coordSys === this ? this.dataToPoint(value) : null;\r\n        };\r\n        Polar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n            var coordSys = getCoordSys$3(finder);\r\n            return coordSys === this ? this.pointToData(pixel) : null;\r\n        };\r\n        return Polar;\r\n    }());\r\n    function getCoordSys$3(finder) {\r\n        var seriesModel = finder.seriesModel;\r\n        var polarModel = finder.polarModel;\r\n        return polarModel && polarModel.coordinateSystem\r\n            || seriesModel && seriesModel.coordinateSystem;\r\n    }\n\n    function resizePolar(polar, polarModel, api) {\r\n        var center = polarModel.get('center');\r\n        var width = api.getWidth();\r\n        var height = api.getHeight();\r\n        polar.cx = parsePercent$2(center[0], width);\r\n        polar.cy = parsePercent$2(center[1], height);\r\n        var radiusAxis = polar.getRadiusAxis();\r\n        var size = Math.min(width, height) / 2;\r\n        var radius = polarModel.get('radius');\r\n        if (radius == null) {\r\n            radius = [0, '100%'];\r\n        }\r\n        else if (!isArray(radius)) {\r\n            radius = [0, radius];\r\n        }\r\n        var parsedRadius = [\r\n            parsePercent$2(radius[0], size),\r\n            parsePercent$2(radius[1], size)\r\n        ];\r\n        radiusAxis.inverse\r\n            ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0])\r\n            : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]);\r\n    }\r\n    function updatePolarScale(ecModel, api) {\r\n        var polar = this;\r\n        var angleAxis = polar.getAngleAxis();\r\n        var radiusAxis = polar.getRadiusAxis();\r\n        angleAxis.scale.setExtent(Infinity, -Infinity);\r\n        radiusAxis.scale.setExtent(Infinity, -Infinity);\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (seriesModel.coordinateSystem === polar) {\r\n                var data_1 = seriesModel.getData();\r\n                each(getDataDimensionsOnAxis(data_1, 'radius'), function (dim) {\r\n                    radiusAxis.scale.unionExtentFromData(data_1, dim);\r\n                });\r\n                each(getDataDimensionsOnAxis(data_1, 'angle'), function (dim) {\r\n                    angleAxis.scale.unionExtentFromData(data_1, dim);\r\n                });\r\n            }\r\n        });\r\n        niceScaleExtent(angleAxis.scale, angleAxis.model);\r\n        niceScaleExtent(radiusAxis.scale, radiusAxis.model);\r\n        if (angleAxis.type === 'category' && !angleAxis.onBand) {\r\n            var extent = angleAxis.getExtent();\r\n            var diff = 360 / angleAxis.scale.count();\r\n            angleAxis.inverse ? (extent[1] += diff) : (extent[1] -= diff);\r\n            angleAxis.setExtent(extent[0], extent[1]);\r\n        }\r\n    }\r\n    function isAngleAxisModel(axisModel) {\r\n        return axisModel.mainType === 'angleAxis';\r\n    }\r\n    function setAxis(axis, axisModel) {\r\n        axis.type = axisModel.get('type');\r\n        axis.scale = createScaleByModel(axisModel);\r\n        axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\r\n        axis.inverse = axisModel.get('inverse');\r\n        if (isAngleAxisModel(axisModel)) {\r\n            axis.inverse = axis.inverse !== axisModel.get('clockwise');\r\n            var startAngle = axisModel.get('startAngle');\r\n            axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\r\n        }\r\n        axisModel.axis = axis;\r\n        axis.model = axisModel;\r\n    }\r\n    var polarCreator = {\r\n        dimensions: Polar.prototype.dimensions,\r\n        create: function (ecModel, api) {\r\n            var polarList = [];\r\n            ecModel.eachComponent('polar', function (polarModel, idx) {\r\n                var polar = new Polar(idx + '');\r\n                polar.update = updatePolarScale;\r\n                var radiusAxis = polar.getRadiusAxis();\r\n                var angleAxis = polar.getAngleAxis();\r\n                var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n                var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n                setAxis(radiusAxis, radiusAxisModel);\r\n                setAxis(angleAxis, angleAxisModel);\r\n                resizePolar(polar, polarModel, api);\r\n                polarList.push(polar);\r\n                polarModel.coordinateSystem = polar;\r\n                polar.model = polarModel;\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (seriesModel.get('coordinateSystem') === 'polar') {\r\n                    var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n                    if (__DEV__) {\r\n                        if (!polarModel) {\r\n                            throw new Error('Polar \"' + retrieve(seriesModel.get('polarIndex'), seriesModel.get('polarId'), 0) + '\" not found');\r\n                        }\r\n                    }\r\n                    seriesModel.coordinateSystem = polarModel.coordinateSystem;\r\n                }\r\n            });\r\n            return polarList;\r\n        }\r\n    };\r\n    CoordinateSystemManager.register('polar', polarCreator);\n\n    var elementList$1 = [\r\n        'axisLine',\r\n        'axisLabel',\r\n        'axisTick',\r\n        'minorTick',\r\n        'splitLine',\r\n        'minorSplitLine',\r\n        'splitArea'\r\n    ];\r\n    function getAxisLineShape(polar, rExtent, angle) {\r\n        rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\r\n        var start = polar.coordToPoint([rExtent[0], angle]);\r\n        var end = polar.coordToPoint([rExtent[1], angle]);\r\n        return {\r\n            x1: start[0],\r\n            y1: start[1],\r\n            x2: end[0],\r\n            y2: end[1]\r\n        };\r\n    }\r\n    function getRadiusIdx(polar) {\r\n        var radiusAxis = polar.getRadiusAxis();\r\n        return radiusAxis.inverse ? 0 : 1;\r\n    }\r\n    function fixAngleOverlap(list) {\r\n        var firstItem = list[0];\r\n        var lastItem = list[list.length - 1];\r\n        if (firstItem\r\n            && lastItem\r\n            && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\r\n            list.pop();\r\n        }\r\n    }\r\n    var AngleAxisView = (function (_super) {\r\n        __extends(AngleAxisView, _super);\r\n        function AngleAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AngleAxisView.type;\r\n            _this.axisPointerClass = 'PolarAxisPointer';\r\n            return _this;\r\n        }\r\n        AngleAxisView.prototype.render = function (angleAxisModel, ecModel) {\r\n            this.group.removeAll();\r\n            if (!angleAxisModel.get('show')) {\r\n                return;\r\n            }\r\n            var angleAxis = angleAxisModel.axis;\r\n            var polar = angleAxis.polar;\r\n            var radiusExtent = polar.getRadiusAxis().getExtent();\r\n            var ticksAngles = angleAxis.getTicksCoords();\r\n            var minorTickAngles = angleAxis.getMinorTicksCoords();\r\n            var labels = map(angleAxis.getViewLabels(), function (labelItem) {\r\n                labelItem = clone(labelItem);\r\n                labelItem.coord = angleAxis.dataToCoord(labelItem.tickValue);\r\n                return labelItem;\r\n            });\r\n            fixAngleOverlap(labels);\r\n            fixAngleOverlap(ticksAngles);\r\n            each(elementList$1, function (name) {\r\n                if (angleAxisModel.get([name, 'show'])\r\n                    && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\r\n                    angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\r\n                }\r\n            }, this);\r\n        };\r\n        AngleAxisView.type = 'angleAxis';\r\n        return AngleAxisView;\r\n    }(AxisView));\r\n    var angelAxisElementsBuilders = {\r\n        axisLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n            var lineStyleModel = angleAxisModel.getModel(['axisLine', 'lineStyle']);\r\n            var rId = getRadiusIdx(polar);\r\n            var r0Id = rId ? 0 : 1;\r\n            var shape;\r\n            if (radiusExtent[r0Id] === 0) {\r\n                shape = new Circle({\r\n                    shape: {\r\n                        cx: polar.cx,\r\n                        cy: polar.cy,\r\n                        r: radiusExtent[rId]\r\n                    },\r\n                    style: lineStyleModel.getLineStyle(),\r\n                    z2: 1,\r\n                    silent: true\r\n                });\r\n            }\r\n            else {\r\n                shape = new Ring({\r\n                    shape: {\r\n                        cx: polar.cx,\r\n                        cy: polar.cy,\r\n                        r: radiusExtent[rId],\r\n                        r0: radiusExtent[r0Id]\r\n                    },\r\n                    style: lineStyleModel.getLineStyle(),\r\n                    z2: 1,\r\n                    silent: true\r\n                });\r\n            }\r\n            shape.style.fill = null;\r\n            group.add(shape);\r\n        },\r\n        axisTick: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n            var tickModel = angleAxisModel.getModel('axisTick');\r\n            var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\r\n            var radius = radiusExtent[getRadiusIdx(polar)];\r\n            var lines = map(ticksAngles, function (tickAngleItem) {\r\n                return new Line({\r\n                    shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\r\n                });\r\n            });\r\n            group.add(mergePath$1(lines, {\r\n                style: defaults(tickModel.getModel('lineStyle').getLineStyle(), {\r\n                    stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color'])\r\n                })\r\n            }));\r\n        },\r\n        minorTick: function (group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\r\n            if (!minorTickAngles.length) {\r\n                return;\r\n            }\r\n            var tickModel = angleAxisModel.getModel('axisTick');\r\n            var minorTickModel = angleAxisModel.getModel('minorTick');\r\n            var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\r\n            var radius = radiusExtent[getRadiusIdx(polar)];\r\n            var lines = [];\r\n            for (var i = 0; i < minorTickAngles.length; i++) {\r\n                for (var k = 0; k < minorTickAngles[i].length; k++) {\r\n                    lines.push(new Line({\r\n                        shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\r\n                    }));\r\n                }\r\n            }\r\n            group.add(mergePath$1(lines, {\r\n                style: defaults(minorTickModel.getModel('lineStyle').getLineStyle(), defaults(tickModel.getLineStyle(), {\r\n                    stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color'])\r\n                }))\r\n            }));\r\n        },\r\n        axisLabel: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\r\n            var rawCategoryData = angleAxisModel.getCategories(true);\r\n            var commonLabelModel = angleAxisModel.getModel('axisLabel');\r\n            var labelMargin = commonLabelModel.get('margin');\r\n            var triggerEvent = angleAxisModel.get('triggerEvent');\r\n            each(labels, function (labelItem, idx) {\r\n                var labelModel = commonLabelModel;\r\n                var tickValue = labelItem.tickValue;\r\n                var r = radiusExtent[getRadiusIdx(polar)];\r\n                var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\r\n                var cx = polar.cx;\r\n                var cy = polar.cy;\r\n                var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3\r\n                    ? 'center' : (p[0] > cx ? 'left' : 'right');\r\n                var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3\r\n                    ? 'middle' : (p[1] > cy ? 'top' : 'bottom');\r\n                if (rawCategoryData && rawCategoryData[tickValue]) {\r\n                    var rawCategoryItem = rawCategoryData[tickValue];\r\n                    if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n                        labelModel = new Model(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel);\r\n                    }\r\n                }\r\n                var textEl = new ZRText({\r\n                    silent: AxisBuilder.isLabelSilent(angleAxisModel),\r\n                    style: createTextStyle(labelModel, {\r\n                        x: p[0],\r\n                        y: p[1],\r\n                        fill: labelModel.getTextColor()\r\n                            || angleAxisModel.get(['axisLine', 'lineStyle', 'color']),\r\n                        text: labelItem.formattedLabel,\r\n                        align: labelTextAlign,\r\n                        verticalAlign: labelTextVerticalAlign\r\n                    })\r\n                });\r\n                group.add(textEl);\r\n                if (triggerEvent) {\r\n                    var eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\r\n                    eventData.targetType = 'axisLabel';\r\n                    eventData.value = labelItem.rawLabel;\r\n                    getECData(textEl).eventData = eventData;\r\n                }\r\n            }, this);\r\n        },\r\n        splitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n            var splitLineModel = angleAxisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            var lineCount = 0;\r\n            lineColors = lineColors instanceof Array ? lineColors : [lineColors];\r\n            var splitLines = [];\r\n            for (var i = 0; i < ticksAngles.length; i++) {\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                splitLines[colorIndex] = splitLines[colorIndex] || [];\r\n                splitLines[colorIndex].push(new Line({\r\n                    shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\r\n                }));\r\n            }\r\n            for (var i = 0; i < splitLines.length; i++) {\r\n                group.add(mergePath$1(splitLines[i], {\r\n                    style: defaults({\r\n                        stroke: lineColors[i % lineColors.length]\r\n                    }, lineStyleModel.getLineStyle()),\r\n                    silent: true,\r\n                    z: angleAxisModel.get('z')\r\n                }));\r\n            }\r\n        },\r\n        minorSplitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n            if (!minorTickAngles.length) {\r\n                return;\r\n            }\r\n            var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\r\n            var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n            var lines = [];\r\n            for (var i = 0; i < minorTickAngles.length; i++) {\r\n                for (var k = 0; k < minorTickAngles[i].length; k++) {\r\n                    lines.push(new Line({\r\n                        shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\r\n                    }));\r\n                }\r\n            }\r\n            group.add(mergePath$1(lines, {\r\n                style: lineStyleModel.getLineStyle(),\r\n                silent: true,\r\n                z: angleAxisModel.get('z')\r\n            }));\r\n        },\r\n        splitArea: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n            if (!ticksAngles.length) {\r\n                return;\r\n            }\r\n            var splitAreaModel = angleAxisModel.getModel('splitArea');\r\n            var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n            var areaColors = areaStyleModel.get('color');\r\n            var lineCount = 0;\r\n            areaColors = areaColors instanceof Array ? areaColors : [areaColors];\r\n            var splitAreas = [];\r\n            var RADIAN = Math.PI / 180;\r\n            var prevAngle = -ticksAngles[0].coord * RADIAN;\r\n            var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\r\n            var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\r\n            var clockwise = angleAxisModel.get('clockwise');\r\n            for (var i = 1, len = ticksAngles.length; i <= len; i++) {\r\n                var coord = i === len ? ticksAngles[0].coord : ticksAngles[i].coord;\r\n                var colorIndex = (lineCount++) % areaColors.length;\r\n                splitAreas[colorIndex] = splitAreas[colorIndex] || [];\r\n                splitAreas[colorIndex].push(new Sector({\r\n                    shape: {\r\n                        cx: polar.cx,\r\n                        cy: polar.cy,\r\n                        r0: r0,\r\n                        r: r1,\r\n                        startAngle: prevAngle,\r\n                        endAngle: -coord * RADIAN,\r\n                        clockwise: clockwise\r\n                    },\r\n                    silent: true\r\n                }));\r\n                prevAngle = -coord * RADIAN;\r\n            }\r\n            for (var i = 0; i < splitAreas.length; i++) {\r\n                group.add(mergePath$1(splitAreas[i], {\r\n                    style: defaults({\r\n                        fill: areaColors[i % areaColors.length]\r\n                    }, areaStyleModel.getAreaStyle()),\r\n                    silent: true\r\n                }));\r\n            }\r\n        }\r\n    };\r\n    ComponentView.registerClass(AngleAxisView);\n\n    var axisBuilderAttrs$3 = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var selfBuilderAttrs$2 = [\r\n        'splitLine', 'splitArea', 'minorSplitLine'\r\n    ];\r\n    var RadiusAxisView = (function (_super) {\r\n        __extends(RadiusAxisView, _super);\r\n        function RadiusAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = RadiusAxisView.type;\r\n            _this.axisPointerClass = 'PolarAxisPointer';\r\n            return _this;\r\n        }\r\n        RadiusAxisView.prototype.render = function (radiusAxisModel, ecModel) {\r\n            this.group.removeAll();\r\n            if (!radiusAxisModel.get('show')) {\r\n                return;\r\n            }\r\n            var oldAxisGroup = this._axisGroup;\r\n            var newAxisGroup = this._axisGroup = new Group();\r\n            this.group.add(newAxisGroup);\r\n            var radiusAxis = radiusAxisModel.axis;\r\n            var polar = radiusAxis.polar;\r\n            var angleAxis = polar.getAngleAxis();\r\n            var ticksCoords = radiusAxis.getTicksCoords();\r\n            var minorTicksCoords = radiusAxis.getMinorTicksCoords();\r\n            var axisAngle = angleAxis.getExtent()[0];\r\n            var radiusExtent = radiusAxis.getExtent();\r\n            var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\r\n            var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\r\n            each(axisBuilderAttrs$3, axisBuilder.add, axisBuilder);\r\n            newAxisGroup.add(axisBuilder.getGroup());\r\n            groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel);\r\n            each(selfBuilderAttrs$2, function (name) {\r\n                if (radiusAxisModel.get([name, 'show']) && !radiusAxis.scale.isBlank()) {\r\n                    axisElementBuilders$2[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\r\n                }\r\n            }, this);\r\n        };\r\n        RadiusAxisView.type = 'radiusAxis';\r\n        return RadiusAxisView;\r\n    }(AxisView));\r\n    var axisElementBuilders$2 = {\r\n        splitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\r\n            var splitLineModel = radiusAxisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            var lineCount = 0;\r\n            lineColors = lineColors instanceof Array ? lineColors : [lineColors];\r\n            var splitLines = [];\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                splitLines[colorIndex] = splitLines[colorIndex] || [];\r\n                splitLines[colorIndex].push(new Circle({\r\n                    shape: {\r\n                        cx: polar.cx,\r\n                        cy: polar.cy,\r\n                        r: ticksCoords[i].coord\r\n                    }\r\n                }));\r\n            }\r\n            for (var i = 0; i < splitLines.length; i++) {\r\n                group.add(mergePath$1(splitLines[i], {\r\n                    style: defaults({\r\n                        stroke: lineColors[i % lineColors.length],\r\n                        fill: null\r\n                    }, lineStyleModel.getLineStyle()),\r\n                    silent: true\r\n                }));\r\n            }\r\n        },\r\n        minorSplitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\r\n            if (!minorTicksCoords.length) {\r\n                return;\r\n            }\r\n            var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\r\n            var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n            var lines = [];\r\n            for (var i = 0; i < minorTicksCoords.length; i++) {\r\n                for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n                    lines.push(new Circle({\r\n                        shape: {\r\n                            cx: polar.cx,\r\n                            cy: polar.cy,\r\n                            r: minorTicksCoords[i][k].coord\r\n                        }\r\n                    }));\r\n                }\r\n            }\r\n            group.add(mergePath$1(lines, {\r\n                style: defaults({\r\n                    fill: null\r\n                }, lineStyleModel.getLineStyle()),\r\n                silent: true\r\n            }));\r\n        },\r\n        splitArea: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\r\n            if (!ticksCoords.length) {\r\n                return;\r\n            }\r\n            var splitAreaModel = radiusAxisModel.getModel('splitArea');\r\n            var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n            var areaColors = areaStyleModel.get('color');\r\n            var lineCount = 0;\r\n            areaColors = areaColors instanceof Array ? areaColors : [areaColors];\r\n            var splitAreas = [];\r\n            var prevRadius = ticksCoords[0].coord;\r\n            for (var i = 1; i < ticksCoords.length; i++) {\r\n                var colorIndex = (lineCount++) % areaColors.length;\r\n                splitAreas[colorIndex] = splitAreas[colorIndex] || [];\r\n                splitAreas[colorIndex].push(new Sector({\r\n                    shape: {\r\n                        cx: polar.cx,\r\n                        cy: polar.cy,\r\n                        r0: prevRadius,\r\n                        r: ticksCoords[i].coord,\r\n                        startAngle: 0,\r\n                        endAngle: Math.PI * 2\r\n                    },\r\n                    silent: true\r\n                }));\r\n                prevRadius = ticksCoords[i].coord;\r\n            }\r\n            for (var i = 0; i < splitAreas.length; i++) {\r\n                group.add(mergePath$1(splitAreas[i], {\r\n                    style: defaults({\r\n                        fill: areaColors[i % areaColors.length]\r\n                    }, areaStyleModel.getAreaStyle()),\r\n                    silent: true\r\n                }));\r\n            }\r\n        }\r\n    };\r\n    function layoutAxis(polar, radiusAxisModel, axisAngle) {\r\n        return {\r\n            position: [polar.cx, polar.cy],\r\n            rotation: axisAngle / 180 * Math.PI,\r\n            labelDirection: -1,\r\n            tickDirection: -1,\r\n            nameDirection: 1,\r\n            labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\r\n            z2: 1\r\n        };\r\n    }\r\n    AxisView.registerClass(RadiusAxisView);\n\n    var PolarAxisPointer = (function (_super) {\r\n        __extends(PolarAxisPointer, _super);\r\n        function PolarAxisPointer() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        PolarAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n            var axis = axisModel.axis;\r\n            if (axis.dim === 'angle') {\r\n                this.animationThreshold = Math.PI / 18;\r\n            }\r\n            var polar = axis.polar;\r\n            var otherAxis = polar.getOtherAxis(axis);\r\n            var otherExtent = otherAxis.getExtent();\r\n            var coordValue = axis.dataToCoord(value);\r\n            var axisPointerType = axisPointerModel.get('type');\r\n            if (axisPointerType && axisPointerType !== 'none') {\r\n                var elStyle = buildElStyle(axisPointerModel);\r\n                var pointerOption = pointerShapeBuilder$2[axisPointerType](axis, polar, coordValue, otherExtent);\r\n                pointerOption.style = elStyle;\r\n                elOption.graphicKey = pointerOption.type;\r\n                elOption.pointer = pointerOption;\r\n            }\r\n            var labelMargin = axisPointerModel.get(['label', 'margin']);\r\n            var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\r\n            buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\r\n        };\r\n        return PolarAxisPointer;\r\n    }(BaseAxisPointer));\r\n    function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\r\n        var axis = axisModel.axis;\r\n        var coord = axis.dataToCoord(value);\r\n        var axisAngle = polar.getAngleAxis().getExtent()[0];\r\n        axisAngle = axisAngle / 180 * Math.PI;\r\n        var radiusExtent = polar.getRadiusAxis().getExtent();\r\n        var position;\r\n        var align;\r\n        var verticalAlign;\r\n        if (axis.dim === 'radius') {\r\n            var transform = create$1();\r\n            rotate(transform, transform, axisAngle);\r\n            translate(transform, transform, [polar.cx, polar.cy]);\r\n            position = applyTransform$1([coord, -labelMargin], transform);\r\n            var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\r\n            var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\r\n            align = labelLayout.textAlign;\r\n            verticalAlign = labelLayout.textVerticalAlign;\r\n        }\r\n        else {\r\n            var r = radiusExtent[1];\r\n            position = polar.coordToPoint([r + labelMargin, coord]);\r\n            var cx = polar.cx;\r\n            var cy = polar.cy;\r\n            align = Math.abs(position[0] - cx) / r < 0.3\r\n                ? 'center' : (position[0] > cx ? 'left' : 'right');\r\n            verticalAlign = Math.abs(position[1] - cy) / r < 0.3\r\n                ? 'middle' : (position[1] > cy ? 'top' : 'bottom');\r\n        }\r\n        return {\r\n            position: position,\r\n            align: align,\r\n            verticalAlign: verticalAlign\r\n        };\r\n    }\r\n    var pointerShapeBuilder$2 = {\r\n        line: function (axis, polar, coordValue, otherExtent) {\r\n            return axis.dim === 'angle'\r\n                ? {\r\n                    type: 'Line',\r\n                    shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\r\n                }\r\n                : {\r\n                    type: 'Circle',\r\n                    shape: {\r\n                        cx: polar.cx,\r\n                        cy: polar.cy,\r\n                        r: coordValue\r\n                    }\r\n                };\r\n        },\r\n        shadow: function (axis, polar, coordValue, otherExtent) {\r\n            var bandWidth = Math.max(1, axis.getBandWidth());\r\n            var radian = Math.PI / 180;\r\n            return axis.dim === 'angle'\r\n                ? {\r\n                    type: 'Sector',\r\n                    shape: makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\r\n                }\r\n                : {\r\n                    type: 'Sector',\r\n                    shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\r\n                };\r\n        }\r\n    };\r\n    AxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\n\n    registerLayout(curry(barLayoutPolar, 'bar'));\r\n    extendComponentView({\r\n        type: 'polar'\r\n    });\n\n    var GeoView = (function (_super) {\r\n        __extends(GeoView, _super);\r\n        function GeoView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GeoView.type;\r\n            return _this;\r\n        }\r\n        GeoView.prototype.init = function (ecModel, api) {\r\n            var mapDraw = new MapDraw(api);\r\n            this._mapDraw = mapDraw;\r\n            this.group.add(mapDraw.group);\r\n            this._api = api;\r\n        };\r\n        GeoView.prototype.render = function (geoModel, ecModel, api, payload) {\r\n            var mapDraw = this._mapDraw;\r\n            if (geoModel.get('show')) {\r\n                mapDraw.draw(geoModel, ecModel, api, this, payload);\r\n            }\r\n            else {\r\n                this._mapDraw.group.removeAll();\r\n            }\r\n            mapDraw.group.on('click', this._handleRegionClick, this);\r\n            mapDraw.group.silent = geoModel.get('silent');\r\n            this._model = geoModel;\r\n            this.updateSelectStatus(geoModel, ecModel, api);\r\n        };\r\n        GeoView.prototype._handleRegionClick = function (e) {\r\n            var current = e.target;\r\n            var eventData;\r\n            while (current && (eventData = getECData(current).eventData) == null) {\r\n                current = current.__hostTarget || current.parent;\r\n            }\r\n            if (eventData) {\r\n                this._api.dispatchAction({\r\n                    type: 'geoToggleSelect',\r\n                    geoId: this._model.id,\r\n                    name: eventData.name\r\n                });\r\n            }\r\n        };\r\n        GeoView.prototype.updateSelectStatus = function (model, ecModel, api) {\r\n            var _this = this;\r\n            this._mapDraw.group.traverse(function (node) {\r\n                var eventData = getECData(node).eventData;\r\n                if (eventData) {\r\n                    _this._model.isSelected(eventData.name)\r\n                        ? api.enterSelect(node) : api.leaveSelect(node);\r\n                    return true;\r\n                }\r\n            });\r\n        };\r\n        GeoView.prototype.dispose = function () {\r\n            this._mapDraw && this._mapDraw.remove();\r\n        };\r\n        GeoView.type = 'geo';\r\n        return GeoView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GeoView);\n\n    var GeoModel = (function (_super) {\r\n        __extends(GeoModel, _super);\r\n        function GeoModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GeoModel.type;\r\n            return _this;\r\n        }\r\n        GeoModel.prototype.init = function (option, parentModel, ecModel) {\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            defaultEmphasis(option, 'label', ['show']);\r\n        };\r\n        GeoModel.prototype.optionUpdated = function () {\r\n            var option = this.option;\r\n            var self = this;\r\n            option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\r\n            var selectedMap = {};\r\n            this._optionModelMap = reduce(option.regions || [], function (optionModelMap, regionOpt) {\r\n                var regionName = regionOpt.name;\r\n                if (regionName) {\r\n                    optionModelMap.set(regionName, new Model(regionOpt, self));\r\n                    if (regionOpt.selected) {\r\n                        selectedMap[regionName] = true;\r\n                    }\r\n                }\r\n                return optionModelMap;\r\n            }, createHashMap());\r\n            if (!option.selectedMap) {\r\n                option.selectedMap = selectedMap;\r\n            }\r\n        };\r\n        GeoModel.prototype.getRegionModel = function (name) {\r\n            return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\r\n        };\r\n        GeoModel.prototype.getFormattedLabel = function (name, status) {\r\n            var regionModel = this.getRegionModel(name);\r\n            var formatter = status === 'normal'\r\n                ? regionModel.get(['label', 'formatter'])\r\n                : regionModel.get(['emphasis', 'label', 'formatter']);\r\n            var params = {\r\n                name: name\r\n            };\r\n            if (typeof formatter === 'function') {\r\n                params.status = status;\r\n                return formatter(params);\r\n            }\r\n            else if (typeof formatter === 'string') {\r\n                return formatter.replace('{a}', name != null ? name : '');\r\n            }\r\n        };\r\n        GeoModel.prototype.setZoom = function (zoom) {\r\n            this.option.zoom = zoom;\r\n        };\r\n        GeoModel.prototype.setCenter = function (center) {\r\n            this.option.center = center;\r\n        };\r\n        GeoModel.prototype.select = function (name) {\r\n            var option = this.option;\r\n            var selectedMode = option.selectedMode;\r\n            if (!selectedMode) {\r\n                return;\r\n            }\r\n            if (selectedMode !== 'multiple') {\r\n                option.selectedMap = null;\r\n            }\r\n            var selectedMap = option.selectedMap || (option.selectedMap = {});\r\n            selectedMap[name] = true;\r\n        };\r\n        GeoModel.prototype.unSelect = function (name) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (selectedMap) {\r\n                selectedMap[name] = false;\r\n            }\r\n        };\r\n        GeoModel.prototype.toggleSelected = function (name) {\r\n            this[this.isSelected(name) ? 'unSelect' : 'select'](name);\r\n        };\r\n        GeoModel.prototype.isSelected = function (name) {\r\n            var selectedMap = this.option.selectedMap;\r\n            return !!(selectedMap && selectedMap[name]);\r\n        };\r\n        GeoModel.prototype._initSelectedMapFromData = function () {\r\n        };\r\n        GeoModel.type = 'geo';\r\n        GeoModel.layoutMode = 'box';\r\n        GeoModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 0,\r\n            show: true,\r\n            left: 'center',\r\n            top: 'center',\r\n            aspectScale: null,\r\n            silent: false,\r\n            map: '',\r\n            boundingCoords: null,\r\n            center: null,\r\n            zoom: 1,\r\n            scaleLimit: null,\r\n            label: {\r\n                show: false,\r\n                color: '#000'\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 0.5,\r\n                borderColor: '#444',\r\n                color: '#eee'\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true,\r\n                    color: 'rgb(100,0,0)'\r\n                },\r\n                itemStyle: {\r\n                    color: 'rgba(255,215,0,0.8)'\r\n                }\r\n            },\r\n            select: {\r\n                label: {\r\n                    show: true,\r\n                    color: 'rgb(100,0,0)'\r\n                },\r\n                itemStyle: {\r\n                    color: 'rgba(255,215,0,0.8)'\r\n                }\r\n            },\r\n            regions: []\r\n        };\r\n        return GeoModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(GeoModel);\n\n    function makeAction(method, actionInfo) {\r\n        actionInfo.update = 'geo:updateSelectStatus';\r\n        registerAction(actionInfo, function (payload, ecModel) {\r\n            var selected = {};\r\n            ecModel.eachComponent({ mainType: 'geo', query: payload }, function (geoModel) {\r\n                geoModel[method](payload.name);\r\n                var geo = geoModel.coordinateSystem;\r\n                each(geo.regions, function (region) {\r\n                    selected[region.name] = geoModel.isSelected(region.name) || false;\r\n                });\r\n            });\r\n            return {\r\n                selected: selected,\r\n                name: payload.name\r\n            };\r\n        });\r\n    }\r\n    makeAction('toggleSelected', {\r\n        type: 'geoToggleSelect',\r\n        event: 'geoselectchanged'\r\n    });\r\n    makeAction('select', {\r\n        type: 'geoSelect',\r\n        event: 'geoselected'\r\n    });\r\n    makeAction('unSelect', {\r\n        type: 'geoUnSelect',\r\n        event: 'geounselected'\r\n    });\n\n    var PROXIMATE_ONE_DAY = 86400000;\r\n    var Calendar = (function () {\r\n        function Calendar(calendarModel, ecModel, api) {\r\n            this.type = 'calendar';\r\n            this.dimensions = Calendar.dimensions;\r\n            this.getDimensionsInfo = Calendar.getDimensionsInfo;\r\n            this._model = calendarModel;\r\n        }\r\n        Calendar.getDimensionsInfo = function () {\r\n            return [{\r\n                    name: 'time', type: 'time'\r\n                }, 'value'];\r\n        };\r\n        Calendar.prototype.getRangeInfo = function () {\r\n            return this._rangeInfo;\r\n        };\r\n        Calendar.prototype.getModel = function () {\r\n            return this._model;\r\n        };\r\n        Calendar.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Calendar.prototype.getCellWidth = function () {\r\n            return this._sw;\r\n        };\r\n        Calendar.prototype.getCellHeight = function () {\r\n            return this._sh;\r\n        };\r\n        Calendar.prototype.getOrient = function () {\r\n            return this._orient;\r\n        };\r\n        Calendar.prototype.getFirstDayOfWeek = function () {\r\n            return this._firstDayOfWeek;\r\n        };\r\n        Calendar.prototype.getDateInfo = function (date) {\r\n            date = parseDate(date);\r\n            var y = date.getFullYear();\r\n            var m = date.getMonth() + 1;\r\n            var mStr = m < 10 ? '0' + m : '' + m;\r\n            var d = date.getDate();\r\n            var dStr = d < 10 ? '0' + d : '' + d;\r\n            var day = date.getDay();\r\n            day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\r\n            return {\r\n                y: y + '',\r\n                m: mStr,\r\n                d: dStr,\r\n                day: day,\r\n                time: date.getTime(),\r\n                formatedDate: y + '-' + mStr + '-' + dStr,\r\n                date: date\r\n            };\r\n        };\r\n        Calendar.prototype.getNextNDay = function (date, n) {\r\n            n = n || 0;\r\n            if (n === 0) {\r\n                return this.getDateInfo(date);\r\n            }\r\n            date = new Date(this.getDateInfo(date).time);\r\n            date.setDate(date.getDate() + n);\r\n            return this.getDateInfo(date);\r\n        };\r\n        Calendar.prototype.update = function (ecModel, api) {\r\n            this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\r\n            this._orient = this._model.get('orient');\r\n            this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\r\n            this._rangeInfo = this._getRangeInfo(this._initRangeOption());\r\n            var weeks = this._rangeInfo.weeks || 1;\r\n            var whNames = ['width', 'height'];\r\n            var cellSize = this._model.getCellSize().slice();\r\n            var layoutParams = this._model.getBoxLayoutParams();\r\n            var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\r\n            each([0, 1], function (idx) {\r\n                if (cellSizeSpecified(cellSize, idx)) {\r\n                    layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\r\n                }\r\n            });\r\n            var whGlobal = {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            };\r\n            var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal);\r\n            each([0, 1], function (idx) {\r\n                if (!cellSizeSpecified(cellSize, idx)) {\r\n                    cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\r\n                }\r\n            });\r\n            function cellSizeSpecified(cellSize, idx) {\r\n                return cellSize[idx] != null && cellSize[idx] !== 'auto';\r\n            }\r\n            this._sw = cellSize[0];\r\n            this._sh = cellSize[1];\r\n        };\r\n        Calendar.prototype.dataToPoint = function (data, clamp) {\r\n            isArray(data) && (data = data[0]);\r\n            clamp == null && (clamp = true);\r\n            var dayInfo = this.getDateInfo(data);\r\n            var range = this._rangeInfo;\r\n            var date = dayInfo.formatedDate;\r\n            if (clamp && !(dayInfo.time >= range.start.time\r\n                && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\r\n                return [NaN, NaN];\r\n            }\r\n            var week = dayInfo.day;\r\n            var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\r\n            if (this._orient === 'vertical') {\r\n                return [\r\n                    this._rect.x + week * this._sw + this._sw / 2,\r\n                    this._rect.y + nthWeek * this._sh + this._sh / 2\r\n                ];\r\n            }\r\n            return [\r\n                this._rect.x + nthWeek * this._sw + this._sw / 2,\r\n                this._rect.y + week * this._sh + this._sh / 2\r\n            ];\r\n        };\r\n        Calendar.prototype.pointToData = function (point) {\r\n            var date = this.pointToDate(point);\r\n            return date && date.time;\r\n        };\r\n        Calendar.prototype.dataToRect = function (data, clamp) {\r\n            var point = this.dataToPoint(data, clamp);\r\n            return {\r\n                contentShape: {\r\n                    x: point[0] - (this._sw - this._lineWidth) / 2,\r\n                    y: point[1] - (this._sh - this._lineWidth) / 2,\r\n                    width: this._sw - this._lineWidth,\r\n                    height: this._sh - this._lineWidth\r\n                },\r\n                center: point,\r\n                tl: [\r\n                    point[0] - this._sw / 2,\r\n                    point[1] - this._sh / 2\r\n                ],\r\n                tr: [\r\n                    point[0] + this._sw / 2,\r\n                    point[1] - this._sh / 2\r\n                ],\r\n                br: [\r\n                    point[0] + this._sw / 2,\r\n                    point[1] + this._sh / 2\r\n                ],\r\n                bl: [\r\n                    point[0] - this._sw / 2,\r\n                    point[1] + this._sh / 2\r\n                ]\r\n            };\r\n        };\r\n        Calendar.prototype.pointToDate = function (point) {\r\n            var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\r\n            var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\r\n            var range = this._rangeInfo.range;\r\n            if (this._orient === 'vertical') {\r\n                return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\r\n            }\r\n            return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\r\n        };\r\n        Calendar.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var coordSys = getCoordSys$4(finder);\r\n            return coordSys === this ? coordSys.dataToPoint(value) : null;\r\n        };\r\n        Calendar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n            var coordSys = getCoordSys$4(finder);\r\n            return coordSys === this ? coordSys.pointToData(pixel) : null;\r\n        };\r\n        Calendar.prototype.containPoint = function (point) {\r\n            console.warn('Not implemented.');\r\n            return false;\r\n        };\r\n        Calendar.prototype._initRangeOption = function () {\r\n            var range = this._model.get('range');\r\n            var normalizedRange;\r\n            if (isArray(range) && range.length === 1) {\r\n                range = range[0];\r\n            }\r\n            if (!isArray(range)) {\r\n                var rangeStr = range.toString();\r\n                if (/^\\d{4}$/.test(rangeStr)) {\r\n                    normalizedRange = [rangeStr + '-01-01', rangeStr + '-12-31'];\r\n                }\r\n                if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rangeStr)) {\r\n                    var start = this.getDateInfo(rangeStr);\r\n                    var firstDay = start.date;\r\n                    firstDay.setMonth(firstDay.getMonth() + 1);\r\n                    var end = this.getNextNDay(firstDay, -1);\r\n                    normalizedRange = [start.formatedDate, end.formatedDate];\r\n                }\r\n                if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rangeStr)) {\r\n                    normalizedRange = [rangeStr, rangeStr];\r\n                }\r\n            }\r\n            else {\r\n                normalizedRange = range;\r\n            }\r\n            if (!normalizedRange) {\r\n                if (__DEV__) {\r\n                    logError('Invalid date range.');\r\n                }\r\n                return range;\r\n            }\r\n            var tmp = this._getRangeInfo(normalizedRange);\r\n            if (tmp.start.time > tmp.end.time) {\r\n                normalizedRange.reverse();\r\n            }\r\n            return normalizedRange;\r\n        };\r\n        Calendar.prototype._getRangeInfo = function (range) {\r\n            var parsedRange = [\r\n                this.getDateInfo(range[0]),\r\n                this.getDateInfo(range[1])\r\n            ];\r\n            var reversed;\r\n            if (parsedRange[0].time > parsedRange[1].time) {\r\n                reversed = true;\r\n                parsedRange.reverse();\r\n            }\r\n            var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY)\r\n                - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1;\r\n            var date = new Date(parsedRange[0].time);\r\n            var startDateNum = date.getDate();\r\n            var endDateNum = parsedRange[1].date.getDate();\r\n            date.setDate(startDateNum + allDay - 1);\r\n            var dateNum = date.getDate();\r\n            if (dateNum !== endDateNum) {\r\n                var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1;\r\n                while ((dateNum = date.getDate()) !== endDateNum\r\n                    && (date.getTime() - parsedRange[1].time) * sign > 0) {\r\n                    allDay -= sign;\r\n                    date.setDate(dateNum - sign);\r\n                }\r\n            }\r\n            var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7);\r\n            var nthWeek = reversed ? -weeks + 1 : weeks - 1;\r\n            reversed && parsedRange.reverse();\r\n            return {\r\n                range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate],\r\n                start: parsedRange[0],\r\n                end: parsedRange[1],\r\n                allDay: allDay,\r\n                weeks: weeks,\r\n                nthWeek: nthWeek,\r\n                fweek: parsedRange[0].day,\r\n                lweek: parsedRange[1].day\r\n            };\r\n        };\r\n        Calendar.prototype._getDateByWeeksAndDay = function (nthWeek, day, range) {\r\n            var rangeInfo = this._getRangeInfo(range);\r\n            if (nthWeek > rangeInfo.weeks\r\n                || (nthWeek === 0 && day < rangeInfo.fweek)\r\n                || (nthWeek === rangeInfo.weeks && day > rangeInfo.lweek)) {\r\n                return null;\r\n            }\r\n            var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\r\n            var date = new Date(rangeInfo.start.time);\r\n            date.setDate(+rangeInfo.start.d + nthDay);\r\n            return this.getDateInfo(date);\r\n        };\r\n        Calendar.create = function (ecModel, api) {\r\n            var calendarList = [];\r\n            ecModel.eachComponent('calendar', function (calendarModel) {\r\n                var calendar = new Calendar(calendarModel, ecModel, api);\r\n                calendarList.push(calendar);\r\n                calendarModel.coordinateSystem = calendar;\r\n            });\r\n            ecModel.eachSeries(function (calendarSeries) {\r\n                if (calendarSeries.get('coordinateSystem') === 'calendar') {\r\n                    calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\r\n                }\r\n            });\r\n            return calendarList;\r\n        };\r\n        Calendar.dimensions = ['time', 'value'];\r\n        return Calendar;\r\n    }());\r\n    function getCoordSys$4(finder) {\r\n        var calendarModel = finder.calendarModel;\r\n        var seriesModel = finder.seriesModel;\r\n        var coordSys = calendarModel\r\n            ? calendarModel.coordinateSystem\r\n            : seriesModel\r\n                ? seriesModel.coordinateSystem\r\n                : null;\r\n        return coordSys;\r\n    }\r\n    CoordinateSystemManager.register('calendar', Calendar);\n\n    var CalendarModel = (function (_super) {\r\n        __extends(CalendarModel, _super);\r\n        function CalendarModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CalendarModel.type;\r\n            return _this;\r\n        }\r\n        CalendarModel.prototype.init = function (option, parentModel, ecModel) {\r\n            var inputPositionParams = getLayoutParams(option);\r\n            _super.prototype.init.apply(this, arguments);\r\n            mergeAndNormalizeLayoutParams(option, inputPositionParams);\r\n        };\r\n        CalendarModel.prototype.mergeOption = function (option) {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n            mergeAndNormalizeLayoutParams(this.option, option);\r\n        };\r\n        CalendarModel.prototype.getCellSize = function () {\r\n            return this.option.cellSize;\r\n        };\r\n        CalendarModel.type = 'calendar';\r\n        CalendarModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            left: 80,\r\n            top: 60,\r\n            cellSize: 20,\r\n            orient: 'horizontal',\r\n            splitLine: {\r\n                show: true,\r\n                lineStyle: {\r\n                    color: '#000',\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            itemStyle: {\r\n                color: '#fff',\r\n                borderWidth: 1,\r\n                borderColor: '#ccc'\r\n            },\r\n            dayLabel: {\r\n                show: true,\r\n                firstDay: 0,\r\n                position: 'start',\r\n                margin: '50%',\r\n                nameMap: 'en',\r\n                color: '#000'\r\n            },\r\n            monthLabel: {\r\n                show: true,\r\n                position: 'start',\r\n                margin: 5,\r\n                align: 'center',\r\n                nameMap: 'en',\r\n                formatter: null,\r\n                color: '#000'\r\n            },\r\n            yearLabel: {\r\n                show: true,\r\n                position: null,\r\n                margin: 30,\r\n                formatter: null,\r\n                color: '#ccc',\r\n                fontFamily: 'sans-serif',\r\n                fontWeight: 'bolder',\r\n                fontSize: 20\r\n            }\r\n        };\r\n        return CalendarModel;\r\n    }(ComponentModel));\r\n    function mergeAndNormalizeLayoutParams(target, raw) {\r\n        var cellSize = target.cellSize;\r\n        var cellSizeArr;\r\n        if (!isArray(cellSize)) {\r\n            cellSizeArr = target.cellSize = [cellSize, cellSize];\r\n        }\r\n        else {\r\n            cellSizeArr = cellSize;\r\n        }\r\n        if (cellSizeArr.length === 1) {\r\n            cellSizeArr[1] = cellSizeArr[0];\r\n        }\r\n        var ignoreSize = map([0, 1], function (hvIdx) {\r\n            if (sizeCalculable(raw, hvIdx)) {\r\n                cellSizeArr[hvIdx] = 'auto';\r\n            }\r\n            return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== 'auto';\r\n        });\r\n        mergeLayoutParam(target, raw, {\r\n            type: 'box', ignoreSize: ignoreSize\r\n        });\r\n    }\r\n    ComponentModel.registerClass(CalendarModel);\n\n    var MONTH_TEXT = {\r\n        EN: [\r\n            'Jan', 'Feb', 'Mar',\r\n            'Apr', 'May', 'Jun',\r\n            'Jul', 'Aug', 'Sep',\r\n            'Oct', 'Nov', 'Dec'\r\n        ],\r\n        CN: [\r\n            '一月', '二月', '三月',\r\n            '四月', '五月', '六月',\r\n            '七月', '八月', '九月',\r\n            '十月', '十一月', '十二月'\r\n        ]\r\n    };\r\n    var WEEK_TEXT = {\r\n        EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\r\n        CN: ['日', '一', '二', '三', '四', '五', '六']\r\n    };\r\n    var CalendarView = (function (_super) {\r\n        __extends(CalendarView, _super);\r\n        function CalendarView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CalendarView.type;\r\n            return _this;\r\n        }\r\n        CalendarView.prototype.render = function (calendarModel, ecModel, api) {\r\n            var group = this.group;\r\n            group.removeAll();\r\n            var coordSys = calendarModel.coordinateSystem;\r\n            var rangeData = coordSys.getRangeInfo();\r\n            var orient = coordSys.getOrient();\r\n            this._renderDayRect(calendarModel, rangeData, group);\r\n            this._renderLines(calendarModel, rangeData, orient, group);\r\n            this._renderYearText(calendarModel, rangeData, orient, group);\r\n            this._renderMonthText(calendarModel, orient, group);\r\n            this._renderWeekText(calendarModel, rangeData, orient, group);\r\n        };\r\n        CalendarView.prototype._renderDayRect = function (calendarModel, rangeData, group) {\r\n            var coordSys = calendarModel.coordinateSystem;\r\n            var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\r\n            var sw = coordSys.getCellWidth();\r\n            var sh = coordSys.getCellHeight();\r\n            for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\r\n                var point = coordSys.dataToRect([i], false).tl;\r\n                var rect = new Rect({\r\n                    shape: {\r\n                        x: point[0],\r\n                        y: point[1],\r\n                        width: sw,\r\n                        height: sh\r\n                    },\r\n                    cursor: 'default',\r\n                    style: itemRectStyleModel\r\n                });\r\n                group.add(rect);\r\n            }\r\n        };\r\n        CalendarView.prototype._renderLines = function (calendarModel, rangeData, orient, group) {\r\n            var self = this;\r\n            var coordSys = calendarModel.coordinateSystem;\r\n            var lineStyleModel = calendarModel.getModel(['splitLine', 'lineStyle']).getLineStyle();\r\n            var show = calendarModel.get(['splitLine', 'show']);\r\n            var lineWidth = lineStyleModel.lineWidth;\r\n            this._tlpoints = [];\r\n            this._blpoints = [];\r\n            this._firstDayOfMonth = [];\r\n            this._firstDayPoints = [];\r\n            var firstDay = rangeData.start;\r\n            for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\r\n                addPoints(firstDay.formatedDate);\r\n                if (i === 0) {\r\n                    firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\r\n                }\r\n                var date = firstDay.date;\r\n                date.setMonth(date.getMonth() + 1);\r\n                firstDay = coordSys.getDateInfo(date);\r\n            }\r\n            addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\r\n            function addPoints(date) {\r\n                self._firstDayOfMonth.push(coordSys.getDateInfo(date));\r\n                self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\r\n                var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\r\n                self._tlpoints.push(points[0]);\r\n                self._blpoints.push(points[points.length - 1]);\r\n                show && self._drawSplitline(points, lineStyleModel, group);\r\n            }\r\n            show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group);\r\n            show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\r\n        };\r\n        CalendarView.prototype._getEdgesPoints = function (points, lineWidth, orient) {\r\n            var rs = [points[0].slice(), points[points.length - 1].slice()];\r\n            var idx = orient === 'horizontal' ? 0 : 1;\r\n            rs[0][idx] = rs[0][idx] - lineWidth / 2;\r\n            rs[1][idx] = rs[1][idx] + lineWidth / 2;\r\n            return rs;\r\n        };\r\n        CalendarView.prototype._drawSplitline = function (points, lineStyle, group) {\r\n            var poyline = new Polyline({\r\n                z2: 20,\r\n                shape: {\r\n                    points: points\r\n                },\r\n                style: lineStyle\r\n            });\r\n            group.add(poyline);\r\n        };\r\n        CalendarView.prototype._getLinePointsOfOneWeek = function (calendarModel, date, orient) {\r\n            var coordSys = calendarModel.coordinateSystem;\r\n            var parsedDate = coordSys.getDateInfo(date);\r\n            var points = [];\r\n            for (var i = 0; i < 7; i++) {\r\n                var tmpD = coordSys.getNextNDay(parsedDate.time, i);\r\n                var point = coordSys.dataToRect([tmpD.time], false);\r\n                points[2 * tmpD.day] = point.tl;\r\n                points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\r\n            }\r\n            return points;\r\n        };\r\n        CalendarView.prototype._formatterLabel = function (formatter, params) {\r\n            if (typeof formatter === 'string' && formatter) {\r\n                return formatTplSimple(formatter, params);\r\n            }\r\n            if (typeof formatter === 'function') {\r\n                return formatter(params);\r\n            }\r\n            return params.nameMap;\r\n        };\r\n        CalendarView.prototype._yearTextPositionControl = function (textEl, point, orient, position, margin) {\r\n            var x = point[0];\r\n            var y = point[1];\r\n            var aligns = ['center', 'bottom'];\r\n            if (position === 'bottom') {\r\n                y += margin;\r\n                aligns = ['center', 'top'];\r\n            }\r\n            else if (position === 'left') {\r\n                x -= margin;\r\n            }\r\n            else if (position === 'right') {\r\n                x += margin;\r\n                aligns = ['center', 'top'];\r\n            }\r\n            else {\r\n                y -= margin;\r\n            }\r\n            var rotate = 0;\r\n            if (position === 'left' || position === 'right') {\r\n                rotate = Math.PI / 2;\r\n            }\r\n            return {\r\n                rotation: rotate,\r\n                x: x,\r\n                y: y,\r\n                style: {\r\n                    align: aligns[0],\r\n                    verticalAlign: aligns[1]\r\n                }\r\n            };\r\n        };\r\n        CalendarView.prototype._renderYearText = function (calendarModel, rangeData, orient, group) {\r\n            var yearLabel = calendarModel.getModel('yearLabel');\r\n            if (!yearLabel.get('show')) {\r\n                return;\r\n            }\r\n            var margin = yearLabel.get('margin');\r\n            var pos = yearLabel.get('position');\r\n            if (!pos) {\r\n                pos = orient !== 'horizontal' ? 'top' : 'left';\r\n            }\r\n            var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\r\n            var xc = (points[0][0] + points[1][0]) / 2;\r\n            var yc = (points[0][1] + points[1][1]) / 2;\r\n            var idx = orient === 'horizontal' ? 0 : 1;\r\n            var posPoints = {\r\n                top: [xc, points[idx][1]],\r\n                bottom: [xc, points[1 - idx][1]],\r\n                left: [points[1 - idx][0], yc],\r\n                right: [points[idx][0], yc]\r\n            };\r\n            var name = rangeData.start.y;\r\n            if (+rangeData.end.y > +rangeData.start.y) {\r\n                name = name + '-' + rangeData.end.y;\r\n            }\r\n            var formatter = yearLabel.get('formatter');\r\n            var params = {\r\n                start: rangeData.start.y,\r\n                end: rangeData.end.y,\r\n                nameMap: name\r\n            };\r\n            var content = this._formatterLabel(formatter, params);\r\n            var yearText = new ZRText({\r\n                z2: 30,\r\n                style: createTextStyle(yearLabel, {\r\n                    text: content\r\n                })\r\n            });\r\n            yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\r\n            group.add(yearText);\r\n        };\r\n        CalendarView.prototype._monthTextPositionControl = function (point, isCenter, orient, position, margin) {\r\n            var align = 'left';\r\n            var vAlign = 'top';\r\n            var x = point[0];\r\n            var y = point[1];\r\n            if (orient === 'horizontal') {\r\n                y = y + margin;\r\n                if (isCenter) {\r\n                    align = 'center';\r\n                }\r\n                if (position === 'start') {\r\n                    vAlign = 'bottom';\r\n                }\r\n            }\r\n            else {\r\n                x = x + margin;\r\n                if (isCenter) {\r\n                    vAlign = 'middle';\r\n                }\r\n                if (position === 'start') {\r\n                    align = 'right';\r\n                }\r\n            }\r\n            return {\r\n                x: x,\r\n                y: y,\r\n                align: align,\r\n                verticalAlign: vAlign\r\n            };\r\n        };\r\n        CalendarView.prototype._renderMonthText = function (calendarModel, orient, group) {\r\n            var monthLabel = calendarModel.getModel('monthLabel');\r\n            if (!monthLabel.get('show')) {\r\n                return;\r\n            }\r\n            var nameMap = monthLabel.get('nameMap');\r\n            var margin = monthLabel.get('margin');\r\n            var pos = monthLabel.get('position');\r\n            var align = monthLabel.get('align');\r\n            var termPoints = [this._tlpoints, this._blpoints];\r\n            if (isString(nameMap)) {\r\n                nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\r\n            }\r\n            var idx = pos === 'start' ? 0 : 1;\r\n            var axis = orient === 'horizontal' ? 0 : 1;\r\n            margin = pos === 'start' ? -margin : margin;\r\n            var isCenter = (align === 'center');\r\n            for (var i = 0; i < termPoints[idx].length - 1; i++) {\r\n                var tmp = termPoints[idx][i].slice();\r\n                var firstDay = this._firstDayOfMonth[i];\r\n                if (isCenter) {\r\n                    var firstDayPoints = this._firstDayPoints[i];\r\n                    tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\r\n                }\r\n                var formatter = monthLabel.get('formatter');\r\n                var name_1 = nameMap[+firstDay.m - 1];\r\n                var params = {\r\n                    yyyy: firstDay.y,\r\n                    yy: (firstDay.y + '').slice(2),\r\n                    MM: firstDay.m,\r\n                    M: +firstDay.m,\r\n                    nameMap: name_1\r\n                };\r\n                var content = this._formatterLabel(formatter, params);\r\n                var monthText = new ZRText({\r\n                    z2: 30,\r\n                    style: extend(createTextStyle(monthLabel, { text: content }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))\r\n                });\r\n                group.add(monthText);\r\n            }\r\n        };\r\n        CalendarView.prototype._weekTextPositionControl = function (point, orient, position, margin, cellSize) {\r\n            var align = 'center';\r\n            var vAlign = 'middle';\r\n            var x = point[0];\r\n            var y = point[1];\r\n            var isStart = position === 'start';\r\n            if (orient === 'horizontal') {\r\n                x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\r\n                align = isStart ? 'right' : 'left';\r\n            }\r\n            else {\r\n                y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\r\n                vAlign = isStart ? 'bottom' : 'top';\r\n            }\r\n            return {\r\n                x: x,\r\n                y: y,\r\n                align: align,\r\n                verticalAlign: vAlign\r\n            };\r\n        };\r\n        CalendarView.prototype._renderWeekText = function (calendarModel, rangeData, orient, group) {\r\n            var dayLabel = calendarModel.getModel('dayLabel');\r\n            if (!dayLabel.get('show')) {\r\n                return;\r\n            }\r\n            var coordSys = calendarModel.coordinateSystem;\r\n            var pos = dayLabel.get('position');\r\n            var nameMap = dayLabel.get('nameMap');\r\n            var margin = dayLabel.get('margin');\r\n            var firstDayOfWeek = coordSys.getFirstDayOfWeek();\r\n            if (isString(nameMap)) {\r\n                nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\r\n            }\r\n            var start = coordSys.getNextNDay(rangeData.end.time, (7 - rangeData.lweek)).time;\r\n            var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\r\n            margin = parsePercent$2(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\r\n            if (pos === 'start') {\r\n                start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\r\n                margin = -margin;\r\n            }\r\n            for (var i = 0; i < 7; i++) {\r\n                var tmpD = coordSys.getNextNDay(start, i);\r\n                var point = coordSys.dataToRect([tmpD.time], false).center;\r\n                var day = i;\r\n                day = Math.abs((i + firstDayOfWeek) % 7);\r\n                var weekText = new ZRText({\r\n                    z2: 30,\r\n                    style: extend(createTextStyle(dayLabel, { text: nameMap[day] }), this._weekTextPositionControl(point, orient, pos, margin, cellSize))\r\n                });\r\n                group.add(weekText);\r\n            }\r\n        };\r\n        CalendarView.type = 'calendar';\r\n        return CalendarView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(CalendarView);\n\n    var inner$g = makeInner();\r\n    var _nonShapeGraphicElements = {\r\n        path: null,\r\n        compoundPath: null,\r\n        group: Group,\r\n        image: ZRImage,\r\n        text: ZRText\r\n    };\r\n    registerPreprocessor(function (option) {\r\n        var graphicOption = option.graphic;\r\n        if (isArray(graphicOption)) {\r\n            if (!graphicOption[0] || !graphicOption[0].elements) {\r\n                option.graphic = [{ elements: graphicOption }];\r\n            }\r\n            else {\r\n                option.graphic = [option.graphic[0]];\r\n            }\r\n        }\r\n        else if (graphicOption && !graphicOption.elements) {\r\n            option.graphic = [{ elements: [graphicOption] }];\r\n        }\r\n    });\r\n    var GraphicComponentModel = (function (_super) {\r\n        __extends(GraphicComponentModel, _super);\r\n        function GraphicComponentModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GraphicComponentModel.type;\r\n            return _this;\r\n        }\r\n        GraphicComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n            var elements = this.option.elements;\r\n            this.option.elements = null;\r\n            _super.prototype.mergeOption.call(this, option, ecModel);\r\n            this.option.elements = elements;\r\n        };\r\n        GraphicComponentModel.prototype.optionUpdated = function (newOption, isInit) {\r\n            var thisOption = this.option;\r\n            var newList = (isInit ? thisOption : newOption).elements;\r\n            var existList = thisOption.elements = isInit ? [] : thisOption.elements;\r\n            var flattenedList = [];\r\n            this._flatten(newList, flattenedList, null);\r\n            var mappingResult = mappingToExists(existList, flattenedList, 'normalMerge');\r\n            var elOptionsToUpdate = this._elOptionsToUpdate = [];\r\n            each(mappingResult, function (resultItem, index) {\r\n                var newElOption = resultItem.newOption;\r\n                if (__DEV__) {\r\n                    assert(isObject(newElOption) || resultItem.existing, 'Empty graphic option definition');\r\n                }\r\n                if (!newElOption) {\r\n                    return;\r\n                }\r\n                elOptionsToUpdate.push(newElOption);\r\n                setKeyInfoToNewElOption(resultItem, newElOption);\r\n                mergeNewElOptionToExist(existList, index, newElOption);\r\n                setLayoutInfoToExist(existList[index], newElOption);\r\n            }, this);\r\n            for (var i = existList.length - 1; i >= 0; i--) {\r\n                if (existList[i] == null) {\r\n                    existList.splice(i, 1);\r\n                }\r\n                else {\r\n                    delete existList[i].$action;\r\n                }\r\n            }\r\n        };\r\n        GraphicComponentModel.prototype._flatten = function (optionList, result, parentOption) {\r\n            each(optionList, function (option) {\r\n                if (!option) {\r\n                    return;\r\n                }\r\n                if (parentOption) {\r\n                    option.parentOption = parentOption;\r\n                }\r\n                result.push(option);\r\n                var children = option.children;\r\n                if (option.type === 'group' && children) {\r\n                    this._flatten(children, result, option);\r\n                }\r\n                delete option.children;\r\n            }, this);\r\n        };\r\n        GraphicComponentModel.prototype.useElOptionsToUpdate = function () {\r\n            var els = this._elOptionsToUpdate;\r\n            this._elOptionsToUpdate = null;\r\n            return els;\r\n        };\r\n        GraphicComponentModel.type = 'graphic';\r\n        GraphicComponentModel.defaultOption = {\r\n            elements: []\r\n        };\r\n        return GraphicComponentModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(GraphicComponentModel);\r\n    var GraphicComponentView = (function (_super) {\r\n        __extends(GraphicComponentView, _super);\r\n        function GraphicComponentView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GraphicComponentView.type;\r\n            return _this;\r\n        }\r\n        GraphicComponentView.prototype.init = function () {\r\n            this._elMap = createHashMap();\r\n        };\r\n        GraphicComponentView.prototype.render = function (graphicModel, ecModel, api) {\r\n            if (graphicModel !== this._lastGraphicModel) {\r\n                this._clear();\r\n            }\r\n            this._lastGraphicModel = graphicModel;\r\n            this._updateElements(graphicModel);\r\n            this._relocate(graphicModel, api);\r\n        };\r\n        GraphicComponentView.prototype._updateElements = function (graphicModel) {\r\n            var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\r\n            if (!elOptionsToUpdate) {\r\n                return;\r\n            }\r\n            var elMap = this._elMap;\r\n            var rootGroup = this.group;\r\n            each(elOptionsToUpdate, function (elOption) {\r\n                var id = convertOptionIdName(elOption.id, null);\r\n                var elExisting = id != null ? elMap.get(id) : null;\r\n                var parentId = convertOptionIdName(elOption.parentId, null);\r\n                var targetElParent = (parentId != null ? elMap.get(parentId) : rootGroup);\r\n                var elType = elOption.type;\r\n                var elOptionStyle = elOption.style;\r\n                if (elType === 'text' && elOptionStyle) {\r\n                    if (elOption.hv && elOption.hv[1]) {\r\n                        elOptionStyle.textVerticalAlign =\r\n                            elOptionStyle.textBaseline =\r\n                                elOptionStyle.verticalAlign =\r\n                                    elOptionStyle.align = null;\r\n                    }\r\n                }\r\n                var textContentOption = elOption.textContent;\r\n                var textConfig = elOption.textConfig;\r\n                if (elOptionStyle\r\n                    && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) {\r\n                    var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true);\r\n                    if (!textConfig && convertResult.textConfig) {\r\n                        textConfig = elOption.textConfig = convertResult.textConfig;\r\n                    }\r\n                    if (!textContentOption && convertResult.textContent) {\r\n                        textContentOption = convertResult.textContent;\r\n                    }\r\n                }\r\n                var elOptionCleaned = getCleanedElOption(elOption);\r\n                if (__DEV__) {\r\n                    elExisting && assert(targetElParent === elExisting.parent, 'Changing parent is not supported.');\r\n                }\r\n                var $action = elOption.$action || 'merge';\r\n                if ($action === 'merge') {\r\n                    elExisting\r\n                        ? elExisting.attr(elOptionCleaned)\r\n                        : createEl$1(id, targetElParent, elOptionCleaned, elMap);\r\n                }\r\n                else if ($action === 'replace') {\r\n                    removeEl(elExisting, elMap);\r\n                    createEl$1(id, targetElParent, elOptionCleaned, elMap);\r\n                }\r\n                else if ($action === 'remove') {\r\n                    removeEl(elExisting, elMap);\r\n                }\r\n                var el = elMap.get(id);\r\n                if (el && textContentOption) {\r\n                    if ($action === 'merge') {\r\n                        var textContentExisting = el.getTextContent();\r\n                        textContentExisting\r\n                            ? textContentExisting.attr(textContentOption)\r\n                            : el.setTextContent(new ZRText(textContentOption));\r\n                    }\r\n                    else if ($action === 'replace') {\r\n                        el.setTextContent(new ZRText(textContentOption));\r\n                    }\r\n                }\r\n                if (el) {\r\n                    var elInner = inner$g(el);\r\n                    elInner.__ecGraphicWidthOption = elOption.width;\r\n                    elInner.__ecGraphicHeightOption = elOption.height;\r\n                    setEventData(el, graphicModel, elOption);\r\n                }\r\n            });\r\n        };\r\n        GraphicComponentView.prototype._relocate = function (graphicModel, api) {\r\n            var elOptions = graphicModel.option.elements;\r\n            var rootGroup = this.group;\r\n            var elMap = this._elMap;\r\n            var apiWidth = api.getWidth();\r\n            var apiHeight = api.getHeight();\r\n            for (var i = 0; i < elOptions.length; i++) {\r\n                var elOption = elOptions[i];\r\n                var id = convertOptionIdName(elOption.id, null);\r\n                var el = id != null ? elMap.get(id) : null;\r\n                if (!el || !el.isGroup) {\r\n                    continue;\r\n                }\r\n                var parentEl = el.parent;\r\n                var isParentRoot = parentEl === rootGroup;\r\n                var elInner = inner$g(el);\r\n                var parentElInner = inner$g(parentEl);\r\n                elInner.__ecGraphicWidth = parsePercent$2(elInner.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentElInner.__ecGraphicWidth) || 0;\r\n                elInner.__ecGraphicHeight = parsePercent$2(elInner.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentElInner.__ecGraphicHeight) || 0;\r\n            }\r\n            for (var i = elOptions.length - 1; i >= 0; i--) {\r\n                var elOption = elOptions[i];\r\n                var id = convertOptionIdName(elOption.id, null);\r\n                var el = id != null ? elMap.get(id) : null;\r\n                if (!el) {\r\n                    continue;\r\n                }\r\n                var parentEl = el.parent;\r\n                var parentElInner = inner$g(parentEl);\r\n                var containerInfo = parentEl === rootGroup\r\n                    ? {\r\n                        width: apiWidth,\r\n                        height: apiHeight\r\n                    }\r\n                    : {\r\n                        width: parentElInner.__ecGraphicWidth,\r\n                        height: parentElInner.__ecGraphicHeight\r\n                    };\r\n                positionElement(el, elOption, containerInfo, null, { hv: elOption.hv, boundingMode: elOption.bounding });\r\n            }\r\n        };\r\n        GraphicComponentView.prototype._clear = function () {\r\n            var elMap = this._elMap;\r\n            elMap.each(function (el) {\r\n                removeEl(el, elMap);\r\n            });\r\n            this._elMap = createHashMap();\r\n        };\r\n        GraphicComponentView.prototype.dispose = function () {\r\n            this._clear();\r\n        };\r\n        GraphicComponentView.type = 'graphic';\r\n        return GraphicComponentView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GraphicComponentView);\r\n    function createEl$1(id, targetElParent, elOption, elMap) {\r\n        var graphicType = elOption.type;\r\n        if (__DEV__) {\r\n            assert(graphicType, 'graphic type MUST be set');\r\n        }\r\n        var Clz = (hasOwn(_nonShapeGraphicElements, graphicType)\r\n            ? _nonShapeGraphicElements[graphicType]\r\n            : getShapeClass(graphicType));\r\n        if (__DEV__) {\r\n            assert(Clz, 'graphic type can not be found');\r\n        }\r\n        var el = new Clz(elOption);\r\n        targetElParent.add(el);\r\n        elMap.set(id, el);\r\n        inner$g(el).__ecGraphicId = id;\r\n    }\r\n    function removeEl(elExisting, elMap) {\r\n        var existElParent = elExisting && elExisting.parent;\r\n        if (existElParent) {\r\n            elExisting.type === 'group' && elExisting.traverse(function (el) {\r\n                removeEl(el, elMap);\r\n            });\r\n            elMap.removeKey(inner$g(elExisting).__ecGraphicId);\r\n            existElParent.remove(elExisting);\r\n        }\r\n    }\r\n    function getCleanedElOption(elOption) {\r\n        elOption = extend({}, elOption);\r\n        each(['id', 'parentId', '$action', 'hv', 'bounding', 'textContent'].concat(LOCATION_PARAMS), function (name) {\r\n            delete elOption[name];\r\n        });\r\n        return elOption;\r\n    }\r\n    function isSetLoc(obj, props) {\r\n        var isSet;\r\n        each(props, function (prop) {\r\n            obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\r\n        });\r\n        return isSet;\r\n    }\r\n    function setKeyInfoToNewElOption(resultItem, newElOption) {\r\n        var existElOption = resultItem.existing;\r\n        newElOption.id = resultItem.keyInfo.id;\r\n        !newElOption.type && existElOption && (newElOption.type = existElOption.type);\r\n        if (newElOption.parentId == null) {\r\n            var newElParentOption = newElOption.parentOption;\r\n            if (newElParentOption) {\r\n                newElOption.parentId = newElParentOption.id;\r\n            }\r\n            else if (existElOption) {\r\n                newElOption.parentId = existElOption.parentId;\r\n            }\r\n        }\r\n        newElOption.parentOption = null;\r\n    }\r\n    function mergeNewElOptionToExist(existList, index, newElOption) {\r\n        var newElOptCopy = extend({}, newElOption);\r\n        var existElOption = existList[index];\r\n        var $action = newElOption.$action || 'merge';\r\n        if ($action === 'merge') {\r\n            if (existElOption) {\r\n                if (__DEV__) {\r\n                    var newType = newElOption.type;\r\n                    assert(!newType || existElOption.type === newType, 'Please set $action: \"replace\" to change `type`');\r\n                }\r\n                merge(existElOption, newElOptCopy, true);\r\n                mergeLayoutParam(existElOption, newElOptCopy, { ignoreSize: true });\r\n                copyLayoutParams(newElOption, existElOption);\r\n            }\r\n            else {\r\n                existList[index] = newElOptCopy;\r\n            }\r\n        }\r\n        else if ($action === 'replace') {\r\n            existList[index] = newElOptCopy;\r\n        }\r\n        else if ($action === 'remove') {\r\n            existElOption && (existList[index] = null);\r\n        }\r\n    }\r\n    function setLayoutInfoToExist(existItem, newElOption) {\r\n        if (!existItem) {\r\n            return;\r\n        }\r\n        existItem.hv = newElOption.hv = [\r\n            isSetLoc(newElOption, ['left', 'right']),\r\n            isSetLoc(newElOption, ['top', 'bottom'])\r\n        ];\r\n        if (existItem.type === 'group') {\r\n            var existingGroupOpt = existItem;\r\n            var newGroupOpt = newElOption;\r\n            existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0);\r\n            existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0);\r\n        }\r\n    }\r\n    function setEventData(el, graphicModel, elOption) {\r\n        var eventData = getECData(el).eventData;\r\n        if (!el.silent && !el.ignore && !eventData) {\r\n            eventData = getECData(el).eventData = {\r\n                componentType: 'graphic',\r\n                componentIndex: graphicModel.componentIndex,\r\n                name: el.name\r\n            };\r\n        }\r\n        if (eventData) {\r\n            eventData.info = elOption.info;\r\n        }\r\n    }\n\n    var ToolboxFeature = (function () {\r\n        function ToolboxFeature() {\r\n        }\r\n        return ToolboxFeature;\r\n    }());\r\n    var features = {};\r\n    function registerFeature(name, ctor) {\r\n        features[name] = ctor;\r\n    }\r\n    function getFeature(name) {\r\n        return features[name];\r\n    }\n\n    var ToolboxModel = (function (_super) {\r\n        __extends(ToolboxModel, _super);\r\n        function ToolboxModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ToolboxModel.type;\r\n            return _this;\r\n        }\r\n        ToolboxModel.prototype.optionUpdated = function () {\r\n            _super.prototype.optionUpdated.apply(this, arguments);\r\n            var ecModel = this.ecModel;\r\n            each(this.option.feature, function (featureOpt, featureName) {\r\n                var Feature = getFeature(featureName);\r\n                if (Feature) {\r\n                    if (Feature.getDefaultOption) {\r\n                        Feature.defaultOption = Feature.getDefaultOption(ecModel);\r\n                    }\r\n                    merge(featureOpt, Feature.defaultOption);\r\n                }\r\n            });\r\n        };\r\n        ToolboxModel.type = 'toolbox';\r\n        ToolboxModel.layoutMode = {\r\n            type: 'box',\r\n            ignoreSize: true\r\n        };\r\n        ToolboxModel.defaultOption = {\r\n            show: true,\r\n            z: 6,\r\n            zlevel: 0,\r\n            orient: 'horizontal',\r\n            left: 'right',\r\n            top: 'top',\r\n            backgroundColor: 'transparent',\r\n            borderColor: '#ccc',\r\n            borderRadius: 0,\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            itemSize: 15,\r\n            itemGap: 8,\r\n            showTitle: true,\r\n            iconStyle: {\r\n                borderColor: '#666',\r\n                color: 'none'\r\n            },\r\n            emphasis: {\r\n                iconStyle: {\r\n                    borderColor: '#3E98C5'\r\n                }\r\n            },\r\n            tooltip: {\r\n                show: false\r\n            }\r\n        };\r\n        return ToolboxModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(ToolboxModel);\n\n    function layout$3(group, componentModel, api) {\r\n        var boxLayoutParams = componentModel.getBoxLayoutParams();\r\n        var padding = componentModel.get('padding');\r\n        var viewportSize = { width: api.getWidth(), height: api.getHeight() };\r\n        var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\r\n        box(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\r\n        positionElement(group, boxLayoutParams, viewportSize, padding);\r\n    }\r\n    function makeBackground(rect, componentModel) {\r\n        var padding = normalizeCssArray$1(componentModel.get('padding'));\r\n        var style = componentModel.getItemStyle(['color', 'opacity']);\r\n        style.fill = componentModel.get('backgroundColor');\r\n        rect = new Rect({\r\n            shape: {\r\n                x: rect.x - padding[3],\r\n                y: rect.y - padding[0],\r\n                width: rect.width + padding[1] + padding[3],\r\n                height: rect.height + padding[0] + padding[2],\r\n                r: componentModel.get('borderRadius')\r\n            },\r\n            style: style,\r\n            silent: true,\r\n            z2: -1\r\n        });\r\n        return rect;\r\n    }\n\n    var ToolboxView = (function (_super) {\r\n        __extends(ToolboxView, _super);\r\n        function ToolboxView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ToolboxView.prototype.render = function (toolboxModel, ecModel, api, payload) {\r\n            var group = this.group;\r\n            group.removeAll();\r\n            if (!toolboxModel.get('show')) {\r\n                return;\r\n            }\r\n            var itemSize = +toolboxModel.get('itemSize');\r\n            var featureOpts = toolboxModel.get('feature') || {};\r\n            var features = this._features || (this._features = {});\r\n            var featureNames = [];\r\n            each(featureOpts, function (opt, name) {\r\n                featureNames.push(name);\r\n            });\r\n            (new DataDiffer(this._featureNames || [], featureNames))\r\n                .add(processFeature)\r\n                .update(processFeature)\r\n                .remove(curry(processFeature, null))\r\n                .execute();\r\n            this._featureNames = featureNames;\r\n            function processFeature(newIndex, oldIndex) {\r\n                var featureName = featureNames[newIndex];\r\n                var oldName = featureNames[oldIndex];\r\n                var featureOpt = featureOpts[featureName];\r\n                var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\r\n                var feature;\r\n                if (payload && payload.newTitle != null && payload.featureName === featureName) {\r\n                    featureOpt.title = payload.newTitle;\r\n                }\r\n                if (featureName && !oldName) {\r\n                    if (isUserFeatureName(featureName)) {\r\n                        feature = {\r\n                            onclick: featureModel.option.onclick,\r\n                            featureName: featureName\r\n                        };\r\n                    }\r\n                    else {\r\n                        var Feature = getFeature(featureName);\r\n                        if (!Feature) {\r\n                            return;\r\n                        }\r\n                        feature = new Feature();\r\n                    }\r\n                    features[featureName] = feature;\r\n                }\r\n                else {\r\n                    feature = features[oldName];\r\n                    if (!feature) {\r\n                        return;\r\n                    }\r\n                }\r\n                feature.uid = getUID('toolbox-feature');\r\n                feature.model = featureModel;\r\n                feature.ecModel = ecModel;\r\n                feature.api = api;\r\n                if (feature instanceof ToolboxFeature) {\r\n                    if (!featureName && oldName) {\r\n                        feature.dispose && feature.dispose(ecModel, api);\r\n                        return;\r\n                    }\r\n                    if (!featureModel.get('show') || feature.unusable) {\r\n                        feature.remove && feature.remove(ecModel, api);\r\n                        return;\r\n                    }\r\n                }\r\n                createIconPaths(featureModel, feature, featureName);\r\n                featureModel.setIconStatus = function (iconName, status) {\r\n                    var option = this.option;\r\n                    var iconPaths = this.iconPaths;\r\n                    option.iconStatus = option.iconStatus || {};\r\n                    option.iconStatus[iconName] = status;\r\n                    if (iconPaths[iconName]) {\r\n                        (status === 'emphasis' ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]);\r\n                    }\r\n                };\r\n                if (feature instanceof ToolboxFeature) {\r\n                    if (feature.render) {\r\n                        feature.render(featureModel, ecModel, api, payload);\r\n                    }\r\n                }\r\n            }\r\n            function createIconPaths(featureModel, feature, featureName) {\r\n                var iconStyleModel = featureModel.getModel('iconStyle');\r\n                var iconStyleEmphasisModel = featureModel.getModel(['emphasis', 'iconStyle']);\r\n                var icons = (feature instanceof ToolboxFeature && feature.getIcons)\r\n                    ? feature.getIcons() : featureModel.get('icon');\r\n                var titles = featureModel.get('title') || {};\r\n                var iconsMap;\r\n                var titlesMap;\r\n                if (typeof icons === 'string') {\r\n                    iconsMap = {};\r\n                    iconsMap[featureName] = icons;\r\n                }\r\n                else {\r\n                    iconsMap = icons;\r\n                }\r\n                if (typeof titles === 'string') {\r\n                    titlesMap = {};\r\n                    titlesMap[featureName] = titles;\r\n                }\r\n                else {\r\n                    titlesMap = titles;\r\n                }\r\n                var iconPaths = featureModel.iconPaths = {};\r\n                each(iconsMap, function (iconStr, iconName) {\r\n                    var path = createIcon(iconStr, {}, {\r\n                        x: -itemSize / 2,\r\n                        y: -itemSize / 2,\r\n                        width: itemSize,\r\n                        height: itemSize\r\n                    });\r\n                    path.setStyle(iconStyleModel.getItemStyle());\r\n                    var pathEmphasisState = path.ensureState('emphasis');\r\n                    pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle();\r\n                    var textContent = new ZRText({\r\n                        style: {\r\n                            text: titlesMap[iconName],\r\n                            align: iconStyleEmphasisModel.get('textAlign'),\r\n                            borderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\r\n                            padding: iconStyleEmphasisModel.get('textPadding'),\r\n                            fill: null\r\n                        },\r\n                        ignore: true\r\n                    });\r\n                    path.setTextContent(textContent);\r\n                    var tooltipModel = toolboxModel.getModel('tooltip');\r\n                    if (tooltipModel && tooltipModel.get('show')) {\r\n                        path.tooltip = extend({\r\n                            content: titlesMap[iconName],\r\n                            formatter: tooltipModel.get('formatter', true)\r\n                                || function () {\r\n                                    return titlesMap[iconName];\r\n                                },\r\n                            formatterParams: {\r\n                                componentType: 'toolbox',\r\n                                name: iconName,\r\n                                title: titlesMap[iconName],\r\n                                $vars: ['name', 'title']\r\n                            },\r\n                            position: tooltipModel.get('position', true) || 'bottom'\r\n                        }, tooltipModel.option);\r\n                    }\r\n                    path.__title = titlesMap[iconName];\r\n                    path.on('mouseover', function () {\r\n                        var hoverStyle = iconStyleEmphasisModel.getItemStyle();\r\n                        var defaultTextPosition = toolboxModel.get('orient') === 'vertical'\r\n                            ? (toolboxModel.get('right') == null ? 'right' : 'left')\r\n                            : (toolboxModel.get('bottom') == null ? 'bottom' : 'top');\r\n                        textContent.setStyle({\r\n                            fill: (iconStyleEmphasisModel.get('textFill')\r\n                                || hoverStyle.fill || hoverStyle.stroke || '#000'),\r\n                            backgroundColor: iconStyleEmphasisModel.get('textBackgroundColor')\r\n                        });\r\n                        path.setTextConfig({\r\n                            position: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\r\n                        });\r\n                        textContent.ignore = !toolboxModel.get('showTitle');\r\n                        enterEmphasis(this);\r\n                    })\r\n                        .on('mouseout', function () {\r\n                        if (featureModel.get(['iconStatus', iconName]) !== 'emphasis') {\r\n                            leaveEmphasis(this);\r\n                        }\r\n                        textContent.hide();\r\n                    });\r\n                    (featureModel.get(['iconStatus', iconName]) === 'emphasis' ? enterEmphasis : leaveEmphasis)(path);\r\n                    group.add(path);\r\n                    path.on('click', bind(feature.onclick, feature, ecModel, api, iconName));\r\n                    iconPaths[iconName] = path;\r\n                });\r\n            }\r\n            layout$3(group, toolboxModel, api);\r\n            group.add(makeBackground(group.getBoundingRect(), toolboxModel));\r\n            group.eachChild(function (icon) {\r\n                var titleText = icon.__title;\r\n                var emphasisState = icon.ensureState('emphasis');\r\n                var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {});\r\n                var textContent = icon.getTextContent();\r\n                var emphasisTextState = textContent && textContent.states.emphasis;\r\n                if (emphasisTextState && !isFunction(emphasisTextState) && titleText) {\r\n                    var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {});\r\n                    var rect = getBoundingRect(titleText, ZRText.makeFont(emphasisTextStyle));\r\n                    var offsetX = icon.x + group.x;\r\n                    var offsetY = icon.y + group.y + itemSize;\r\n                    var needPutOnTop = false;\r\n                    if (offsetY + rect.height > api.getHeight()) {\r\n                        emphasisTextConfig.position = 'top';\r\n                        needPutOnTop = true;\r\n                    }\r\n                    var topOffset = needPutOnTop ? (-5 - rect.height) : (itemSize + 8);\r\n                    if (offsetX + rect.width / 2 > api.getWidth()) {\r\n                        emphasisTextConfig.position = ['100%', topOffset];\r\n                        emphasisTextStyle.align = 'right';\r\n                    }\r\n                    else if (offsetX - rect.width / 2 < 0) {\r\n                        emphasisTextConfig.position = [0, topOffset];\r\n                        emphasisTextStyle.align = 'left';\r\n                    }\r\n                }\r\n            });\r\n        };\r\n        ToolboxView.prototype.updateView = function (toolboxModel, ecModel, api, payload) {\r\n            each(this._features, function (feature) {\r\n                feature instanceof ToolboxFeature\r\n                    && feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\r\n            });\r\n        };\r\n        ToolboxView.prototype.remove = function (ecModel, api) {\r\n            each(this._features, function (feature) {\r\n                feature instanceof ToolboxFeature\r\n                    && feature.remove && feature.remove(ecModel, api);\r\n            });\r\n            this.group.removeAll();\r\n        };\r\n        ToolboxView.prototype.dispose = function (ecModel, api) {\r\n            each(this._features, function (feature) {\r\n                feature instanceof ToolboxFeature\r\n                    && feature.dispose && feature.dispose(ecModel, api);\r\n            });\r\n        };\r\n        ToolboxView.type = 'toolbox';\r\n        return ToolboxView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(ToolboxView);\r\n    function isUserFeatureName(featureName) {\r\n        return featureName.indexOf('my') === 0;\r\n    }\n\n    var SaveAsImage = (function (_super) {\r\n        __extends(SaveAsImage, _super);\r\n        function SaveAsImage() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SaveAsImage.prototype.onclick = function (ecModel, api) {\r\n            var model = this.model;\r\n            var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\r\n            var isSvg = api.getZr().painter.getType() === 'svg';\r\n            var type = isSvg ? 'svg' : model.get('type', true) || 'png';\r\n            var url = api.getConnectedDataURL({\r\n                type: type,\r\n                backgroundColor: model.get('backgroundColor', true)\r\n                    || ecModel.get('backgroundColor') || '#fff',\r\n                connectedBackgroundColor: model.get('connectedBackgroundColor'),\r\n                excludeComponents: model.get('excludeComponents'),\r\n                pixelRatio: model.get('pixelRatio')\r\n            });\r\n            if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\r\n                var $a = document.createElement('a');\r\n                $a.download = title + '.' + type;\r\n                $a.target = '_blank';\r\n                $a.href = url;\r\n                var evt = new MouseEvent('click', {\r\n                    view: document.defaultView,\r\n                    bubbles: true,\r\n                    cancelable: false\r\n                });\r\n                $a.dispatchEvent(evt);\r\n            }\r\n            else {\r\n                if (window.navigator.msSaveOrOpenBlob) {\r\n                    var bstr = atob(url.split(',')[1]);\r\n                    var n = bstr.length;\r\n                    var u8arr = new Uint8Array(n);\r\n                    while (n--) {\r\n                        u8arr[n] = bstr.charCodeAt(n);\r\n                    }\r\n                    var blob = new Blob([u8arr]);\r\n                    window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\r\n                }\r\n                else {\r\n                    var lang = model.get('lang');\r\n                    var html = ''\r\n                        + '<body style=\"margin:0;\">'\r\n                        + '<img src=\"' + url + '\" style=\"max-width:100%;\" title=\"' + ((lang && lang[0]) || '') + '\" />'\r\n                        + '</body>';\r\n                    var tab = window.open();\r\n                    tab.document.write(html);\r\n                }\r\n            }\r\n        };\r\n        SaveAsImage.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\r\n                title: ecModel.getLocale(['toolbox', 'saveAsImage', 'title']),\r\n                type: 'png',\r\n                connectedBackgroundColor: '#fff',\r\n                name: '',\r\n                excludeComponents: ['toolbox'],\r\n                pixelRatio: 1,\r\n                lang: ecModel.getLocale(['toolbox', 'saveAsImage', 'lang'])\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return SaveAsImage;\r\n    }(ToolboxFeature));\r\n    SaveAsImage.prototype.unusable = !env.canvasSupported;\r\n    registerFeature('saveAsImage', SaveAsImage);\n\n    var INNER_STACK_KEYWORD = '__ec_magicType_stack__';\r\n    var radioTypes = [\r\n        ['line', 'bar'],\r\n        ['stack']\r\n    ];\r\n    var MagicType = (function (_super) {\r\n        __extends(MagicType, _super);\r\n        function MagicType() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        MagicType.prototype.getIcons = function () {\r\n            var model = this.model;\r\n            var availableIcons = model.get('icon');\r\n            var icons = {};\r\n            each(model.get('type'), function (type) {\r\n                if (availableIcons[type]) {\r\n                    icons[type] = availableIcons[type];\r\n                }\r\n            });\r\n            return icons;\r\n        };\r\n        MagicType.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                type: [],\r\n                icon: {\r\n                    line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\r\n                    bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\r\n                    stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z'\r\n                },\r\n                title: ecModel.getLocale(['toolbox', 'magicType', 'title']),\r\n                option: {},\r\n                seriesIndex: {}\r\n            };\r\n            return defaultOption;\r\n        };\r\n        MagicType.prototype.onclick = function (ecModel, api, type) {\r\n            var model = this.model;\r\n            var seriesIndex = model.get(['seriesIndex', type]);\r\n            if (!seriesOptGenreator[type]) {\r\n                return;\r\n            }\r\n            var newOption = {\r\n                series: []\r\n            };\r\n            var generateNewSeriesTypes = function (seriesModel) {\r\n                var seriesType = seriesModel.subType;\r\n                var seriesId = seriesModel.id;\r\n                var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\r\n                if (newSeriesOpt) {\r\n                    defaults(newSeriesOpt, seriesModel.option);\r\n                    newOption.series.push(newSeriesOpt);\r\n                }\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\r\n                    var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n                    if (categoryAxis) {\r\n                        var axisDim = categoryAxis.dim;\r\n                        var axisType = axisDim + 'Axis';\r\n                        var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n                        var axisIndex = axisModel.componentIndex;\r\n                        newOption[axisType] = newOption[axisType] || [];\r\n                        for (var i = 0; i <= axisIndex; i++) {\r\n                            newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\r\n                        }\r\n                        newOption[axisType][axisIndex].boundaryGap = type === 'bar';\r\n                    }\r\n                }\r\n            };\r\n            each(radioTypes, function (radio) {\r\n                if (indexOf(radio, type) >= 0) {\r\n                    each(radio, function (item) {\r\n                        model.setIconStatus(item, 'normal');\r\n                    });\r\n                }\r\n            });\r\n            model.setIconStatus(type, 'emphasis');\r\n            ecModel.eachComponent({\r\n                mainType: 'series',\r\n                query: seriesIndex == null ? null : {\r\n                    seriesIndex: seriesIndex\r\n                }\r\n            }, generateNewSeriesTypes);\r\n            var newTitle;\r\n            if (type === 'stack') {\r\n                newTitle = merge({\r\n                    stack: model.option.title.tiled,\r\n                    tiled: model.option.title.stack\r\n                }, model.option.title);\r\n            }\r\n            api.dispatchAction({\r\n                type: 'changeMagicType',\r\n                currentType: type,\r\n                newOption: newOption,\r\n                newTitle: newTitle,\r\n                featureName: 'magicType'\r\n            });\r\n        };\r\n        return MagicType;\r\n    }(ToolboxFeature));\r\n    var seriesOptGenreator = {\r\n        'line': function (seriesType, seriesId, seriesModel, model) {\r\n            if (seriesType === 'bar') {\r\n                return merge({\r\n                    id: seriesId,\r\n                    type: 'line',\r\n                    data: seriesModel.get('data'),\r\n                    stack: seriesModel.get('stack'),\r\n                    markPoint: seriesModel.get('markPoint'),\r\n                    markLine: seriesModel.get('markLine')\r\n                }, model.get(['option', 'line']) || {}, true);\r\n            }\r\n        },\r\n        'bar': function (seriesType, seriesId, seriesModel, model) {\r\n            if (seriesType === 'line') {\r\n                return merge({\r\n                    id: seriesId,\r\n                    type: 'bar',\r\n                    data: seriesModel.get('data'),\r\n                    stack: seriesModel.get('stack'),\r\n                    markPoint: seriesModel.get('markPoint'),\r\n                    markLine: seriesModel.get('markLine')\r\n                }, model.get(['option', 'bar']) || {}, true);\r\n            }\r\n        },\r\n        'stack': function (seriesType, seriesId, seriesModel, model) {\r\n            var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\r\n            if (seriesType === 'line' || seriesType === 'bar') {\r\n                model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\r\n                return merge({\r\n                    id: seriesId,\r\n                    stack: isStack ? '' : INNER_STACK_KEYWORD\r\n                }, model.get(['option', 'stack']) || {}, true);\r\n            }\r\n        }\r\n    };\r\n    registerAction({\r\n        type: 'changeMagicType',\r\n        event: 'magicTypeChanged',\r\n        update: 'prepareAndUpdate'\r\n    }, function (payload, ecModel) {\r\n        ecModel.mergeOption(payload.newOption);\r\n    });\r\n    registerFeature('magicType', MagicType);\n\n    var BLOCK_SPLITER = new Array(60).join('-');\r\n    var ITEM_SPLITER = '\\t';\r\n    function groupSeries(ecModel) {\r\n        var seriesGroupByCategoryAxis = {};\r\n        var otherSeries = [];\r\n        var meta = [];\r\n        ecModel.eachRawSeries(function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                if (baseAxis.type === 'category') {\r\n                    var key = baseAxis.dim + '_' + baseAxis.index;\r\n                    if (!seriesGroupByCategoryAxis[key]) {\r\n                        seriesGroupByCategoryAxis[key] = {\r\n                            categoryAxis: baseAxis,\r\n                            valueAxis: coordSys.getOtherAxis(baseAxis),\r\n                            series: []\r\n                        };\r\n                        meta.push({\r\n                            axisDim: baseAxis.dim,\r\n                            axisIndex: baseAxis.index\r\n                        });\r\n                    }\r\n                    seriesGroupByCategoryAxis[key].series.push(seriesModel);\r\n                }\r\n                else {\r\n                    otherSeries.push(seriesModel);\r\n                }\r\n            }\r\n            else {\r\n                otherSeries.push(seriesModel);\r\n            }\r\n        });\r\n        return {\r\n            seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\r\n            other: otherSeries,\r\n            meta: meta\r\n        };\r\n    }\r\n    function assembleSeriesWithCategoryAxis(groups) {\r\n        var tables = [];\r\n        each(groups, function (group, key) {\r\n            var categoryAxis = group.categoryAxis;\r\n            var valueAxis = group.valueAxis;\r\n            var valueAxisDim = valueAxis.dim;\r\n            var headers = [' '].concat(map(group.series, function (series) {\r\n                return series.name;\r\n            }));\r\n            var columns = [categoryAxis.model.getCategories()];\r\n            each(group.series, function (series) {\r\n                var rawData = series.getRawData();\r\n                columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\r\n                    return val;\r\n                }));\r\n            });\r\n            var lines = [headers.join(ITEM_SPLITER)];\r\n            for (var i = 0; i < columns[0].length; i++) {\r\n                var items = [];\r\n                for (var j = 0; j < columns.length; j++) {\r\n                    items.push(columns[j][i]);\r\n                }\r\n                lines.push(items.join(ITEM_SPLITER));\r\n            }\r\n            tables.push(lines.join('\\n'));\r\n        });\r\n        return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\r\n    }\r\n    function assembleOtherSeries(series) {\r\n        return map(series, function (series) {\r\n            var data = series.getRawData();\r\n            var lines = [series.name];\r\n            var vals = [];\r\n            data.each(data.dimensions, function () {\r\n                var argLen = arguments.length;\r\n                var dataIndex = arguments[argLen - 1];\r\n                var name = data.getName(dataIndex);\r\n                for (var i = 0; i < argLen - 1; i++) {\r\n                    vals[i] = arguments[i];\r\n                }\r\n                lines.push((name ? (name + ITEM_SPLITER) : '') + vals.join(ITEM_SPLITER));\r\n            });\r\n            return lines.join('\\n');\r\n        }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\r\n    }\r\n    function getContentFromModel(ecModel) {\r\n        var result = groupSeries(ecModel);\r\n        return {\r\n            value: filter([\r\n                assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis),\r\n                assembleOtherSeries(result.other)\r\n            ], function (str) {\r\n                return !!str.replace(/[\\n\\t\\s]/g, '');\r\n            }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\r\n            meta: result.meta\r\n        };\r\n    }\r\n    function trim$1(str) {\r\n        return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\r\n    }\r\n    function isTSVFormat(block) {\r\n        var firstLine = block.slice(0, block.indexOf('\\n'));\r\n        if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\r\n            return true;\r\n        }\r\n    }\r\n    var itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\r\n    function parseTSVContents(tsv) {\r\n        var tsvLines = tsv.split(/\\n+/g);\r\n        var headers = trim$1(tsvLines.shift()).split(itemSplitRegex);\r\n        var categories = [];\r\n        var series = map(headers, function (header) {\r\n            return {\r\n                name: header,\r\n                data: []\r\n            };\r\n        });\r\n        for (var i = 0; i < tsvLines.length; i++) {\r\n            var items = trim$1(tsvLines[i]).split(itemSplitRegex);\r\n            categories.push(items.shift());\r\n            for (var j = 0; j < items.length; j++) {\r\n                series[j] && (series[j].data[i] = items[j]);\r\n            }\r\n        }\r\n        return {\r\n            series: series,\r\n            categories: categories\r\n        };\r\n    }\r\n    function parseListContents(str) {\r\n        var lines = str.split(/\\n+/g);\r\n        var seriesName = trim$1(lines.shift());\r\n        var data = [];\r\n        for (var i = 0; i < lines.length; i++) {\r\n            var line = trim$1(lines[i]);\r\n            if (!line) {\r\n                continue;\r\n            }\r\n            var items = line.split(itemSplitRegex);\r\n            var name_1 = '';\r\n            var value = void 0;\r\n            var hasName = false;\r\n            if (isNaN(items[0])) {\r\n                hasName = true;\r\n                name_1 = items[0];\r\n                items = items.slice(1);\r\n                data[i] = {\r\n                    name: name_1,\r\n                    value: []\r\n                };\r\n                value = data[i].value;\r\n            }\r\n            else {\r\n                value = data[i] = [];\r\n            }\r\n            for (var j = 0; j < items.length; j++) {\r\n                value.push(+items[j]);\r\n            }\r\n            if (value.length === 1) {\r\n                hasName ? (data[i].value = value[0]) : (data[i] = value[0]);\r\n            }\r\n        }\r\n        return {\r\n            name: seriesName,\r\n            data: data\r\n        };\r\n    }\r\n    function parseContents(str, blockMetaList) {\r\n        var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\r\n        var newOption = {\r\n            series: []\r\n        };\r\n        each(blocks, function (block, idx) {\r\n            if (isTSVFormat(block)) {\r\n                var result = parseTSVContents(block);\r\n                var blockMeta = blockMetaList[idx];\r\n                var axisKey = blockMeta.axisDim + 'Axis';\r\n                if (blockMeta) {\r\n                    newOption[axisKey] = newOption[axisKey] || [];\r\n                    newOption[axisKey][blockMeta.axisIndex] = {\r\n                        data: result.categories\r\n                    };\r\n                    newOption.series = newOption.series.concat(result.series);\r\n                }\r\n            }\r\n            else {\r\n                var result = parseListContents(block);\r\n                newOption.series.push(result);\r\n            }\r\n        });\r\n        return newOption;\r\n    }\r\n    var DataView = (function (_super) {\r\n        __extends(DataView, _super);\r\n        function DataView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        DataView.prototype.onclick = function (ecModel, api) {\r\n            var container = api.getDom();\r\n            var model = this.model;\r\n            if (this._dom) {\r\n                container.removeChild(this._dom);\r\n            }\r\n            var root = document.createElement('div');\r\n            root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\r\n            root.style.backgroundColor = model.get('backgroundColor') || '#fff';\r\n            var header = document.createElement('h4');\r\n            var lang = model.get('lang') || [];\r\n            header.innerHTML = lang[0] || model.get('title');\r\n            header.style.cssText = 'margin: 10px 20px;';\r\n            header.style.color = model.get('textColor');\r\n            var viewMain = document.createElement('div');\r\n            var textarea = document.createElement('textarea');\r\n            viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\r\n            var optionToContent = model.get('optionToContent');\r\n            var contentToOption = model.get('contentToOption');\r\n            var result = getContentFromModel(ecModel);\r\n            if (typeof optionToContent === 'function') {\r\n                var htmlOrDom = optionToContent(api.getOption());\r\n                if (typeof htmlOrDom === 'string') {\r\n                    viewMain.innerHTML = htmlOrDom;\r\n                }\r\n                else if (isDom(htmlOrDom)) {\r\n                    viewMain.appendChild(htmlOrDom);\r\n                }\r\n            }\r\n            else {\r\n                viewMain.appendChild(textarea);\r\n                textarea.readOnly = model.get('readOnly');\r\n                textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\r\n                textarea.style.color = model.get('textColor');\r\n                textarea.style.borderColor = model.get('textareaBorderColor');\r\n                textarea.style.backgroundColor = model.get('textareaColor');\r\n                textarea.value = result.value;\r\n            }\r\n            var blockMetaList = result.meta;\r\n            var buttonContainer = document.createElement('div');\r\n            buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\r\n            var buttonStyle = 'float:right;margin-right:20px;border:none;'\r\n                + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\r\n            var closeButton = document.createElement('div');\r\n            var refreshButton = document.createElement('div');\r\n            buttonStyle += ';background-color:' + model.get('buttonColor');\r\n            buttonStyle += ';color:' + model.get('buttonTextColor');\r\n            var self = this;\r\n            function close() {\r\n                container.removeChild(root);\r\n                self._dom = null;\r\n            }\r\n            addEventListener(closeButton, 'click', close);\r\n            addEventListener(refreshButton, 'click', function () {\r\n                if ((contentToOption == null && optionToContent != null)\r\n                    || (contentToOption != null && optionToContent == null)) {\r\n                    if (__DEV__) {\r\n                        console.warn('It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored.');\r\n                    }\r\n                    close();\r\n                    return;\r\n                }\r\n                var newOption;\r\n                try {\r\n                    if (typeof contentToOption === 'function') {\r\n                        newOption = contentToOption(viewMain, api.getOption());\r\n                    }\r\n                    else {\r\n                        newOption = parseContents(textarea.value, blockMetaList);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    close();\r\n                    throw new Error('Data view format error ' + e);\r\n                }\r\n                if (newOption) {\r\n                    api.dispatchAction({\r\n                        type: 'changeDataView',\r\n                        newOption: newOption\r\n                    });\r\n                }\r\n                close();\r\n            });\r\n            closeButton.innerHTML = lang[1];\r\n            refreshButton.innerHTML = lang[2];\r\n            refreshButton.style.cssText = buttonStyle;\r\n            closeButton.style.cssText = buttonStyle;\r\n            !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\r\n            buttonContainer.appendChild(closeButton);\r\n            root.appendChild(header);\r\n            root.appendChild(viewMain);\r\n            root.appendChild(buttonContainer);\r\n            viewMain.style.height = (container.clientHeight - 80) + 'px';\r\n            container.appendChild(root);\r\n            this._dom = root;\r\n        };\r\n        DataView.prototype.remove = function (ecModel, api) {\r\n            this._dom && api.getDom().removeChild(this._dom);\r\n        };\r\n        DataView.prototype.dispose = function (ecModel, api) {\r\n            this.remove(ecModel, api);\r\n        };\r\n        DataView.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                readOnly: false,\r\n                optionToContent: null,\r\n                contentToOption: null,\r\n                icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\r\n                title: ecModel.getLocale(['toolbox', 'dataView', 'title']),\r\n                lang: ecModel.getLocale(['toolbox', 'dataView', 'lang']),\r\n                backgroundColor: '#fff',\r\n                textColor: '#000',\r\n                textareaColor: '#fff',\r\n                textareaBorderColor: '#333',\r\n                buttonColor: '#c23531',\r\n                buttonTextColor: '#fff'\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return DataView;\r\n    }(ToolboxFeature));\r\n    function tryMergeDataOption(newData, originalData) {\r\n        return map(newData, function (newVal, idx) {\r\n            var original = originalData && originalData[idx];\r\n            if (isObject(original) && !isArray(original)) {\r\n                var newValIsObject = isObject(newVal) && !isArray(newVal);\r\n                if (!newValIsObject) {\r\n                    newVal = {\r\n                        value: newVal\r\n                    };\r\n                }\r\n                var shouldDeleteName = original.name != null && newVal.name == null;\r\n                newVal = defaults(newVal, original);\r\n                shouldDeleteName && (delete newVal.name);\r\n                return newVal;\r\n            }\r\n            else {\r\n                return newVal;\r\n            }\r\n        });\r\n    }\r\n    registerFeature('dataView', DataView);\r\n    registerAction({\r\n        type: 'changeDataView',\r\n        event: 'dataViewChanged',\r\n        update: 'prepareAndUpdate'\r\n    }, function (payload, ecModel) {\r\n        var newSeriesOptList = [];\r\n        each(payload.newOption.series, function (seriesOpt) {\r\n            var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\r\n            if (!seriesModel) {\r\n                newSeriesOptList.push(extend({\r\n                    type: 'scatter'\r\n                }, seriesOpt));\r\n            }\r\n            else {\r\n                var originalData = seriesModel.get('data');\r\n                newSeriesOptList.push({\r\n                    name: seriesOpt.name,\r\n                    data: tryMergeDataOption(seriesOpt.data, originalData)\r\n                });\r\n            }\r\n        });\r\n        ecModel.mergeOption(defaults({\r\n            series: newSeriesOptList\r\n        }, payload.newOption));\r\n    });\n\n    var COORD_CONVERTS = ['dataToPoint', 'pointToData'];\r\n    var INCLUDE_FINDER_MAIN_TYPES = [\r\n        'grid', 'xAxis', 'yAxis', 'geo', 'graph',\r\n        'polar', 'radiusAxis', 'angleAxis', 'bmap'\r\n    ];\r\n    var BrushTargetManager = (function () {\r\n        function BrushTargetManager(finder, ecModel, opt) {\r\n            var _this = this;\r\n            this._targetInfoList = [];\r\n            var foundCpts = parseFinder$1(ecModel, finder);\r\n            each(targetInfoBuilders, function (builder, type) {\r\n                if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\r\n                    builder(foundCpts, _this._targetInfoList);\r\n                }\r\n            });\r\n        }\r\n        BrushTargetManager.prototype.setOutputRanges = function (areas, ecModel) {\r\n            this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\r\n                (area.coordRanges || (area.coordRanges = [])).push(coordRange);\r\n                if (!area.coordRange) {\r\n                    area.coordRange = coordRange;\r\n                    var result = coordConvert[area.brushType](0, coordSys, coordRange);\r\n                    area.__rangeOffset = {\r\n                        offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\r\n                        xyMinMax: result.xyMinMax\r\n                    };\r\n                }\r\n            });\r\n            return areas;\r\n        };\r\n        BrushTargetManager.prototype.matchOutputRanges = function (areas, ecModel, cb) {\r\n            each(areas, function (area) {\r\n                var targetInfo = this.findTargetInfo(area, ecModel);\r\n                if (targetInfo && targetInfo !== true) {\r\n                    each(targetInfo.coordSyses, function (coordSys) {\r\n                        var result = coordConvert[area.brushType](1, coordSys, area.range);\r\n                        cb(area, result.values, coordSys, ecModel);\r\n                    });\r\n                }\r\n            }, this);\r\n        };\r\n        BrushTargetManager.prototype.setInputRanges = function (areas, ecModel) {\r\n            each(areas, function (area) {\r\n                var targetInfo = this.findTargetInfo(area, ecModel);\r\n                if (__DEV__) {\r\n                    assert(!targetInfo || targetInfo === true || area.coordRange, 'coordRange must be specified when coord index specified.');\r\n                    assert(!targetInfo || targetInfo !== true || area.range, 'range must be specified in global brush.');\r\n                }\r\n                area.range = area.range || [];\r\n                if (targetInfo && targetInfo !== true) {\r\n                    area.panelId = targetInfo.panelId;\r\n                    var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\r\n                    var rangeOffset = area.__rangeOffset;\r\n                    area.range = rangeOffset\r\n                        ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax))\r\n                        : result.values;\r\n                }\r\n            }, this);\r\n        };\r\n        BrushTargetManager.prototype.makePanelOpts = function (api, getDefaultBrushType) {\r\n            return map(this._targetInfoList, function (targetInfo) {\r\n                var rect = targetInfo.getPanelRect();\r\n                return {\r\n                    panelId: targetInfo.panelId,\r\n                    defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null,\r\n                    clipPath: makeRectPanelClipPath(rect),\r\n                    isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\r\n                    getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect)\r\n                };\r\n            });\r\n        };\r\n        BrushTargetManager.prototype.controlSeries = function (area, seriesModel, ecModel) {\r\n            var targetInfo = this.findTargetInfo(area, ecModel);\r\n            return targetInfo === true || (targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0);\r\n        };\r\n        BrushTargetManager.prototype.findTargetInfo = function (area, ecModel) {\r\n            var targetInfoList = this._targetInfoList;\r\n            var foundCpts = parseFinder$1(ecModel, area);\r\n            for (var i = 0; i < targetInfoList.length; i++) {\r\n                var targetInfo = targetInfoList[i];\r\n                var areaPanelId = area.panelId;\r\n                if (areaPanelId) {\r\n                    if (targetInfo.panelId === areaPanelId) {\r\n                        return targetInfo;\r\n                    }\r\n                }\r\n                else {\r\n                    for (var j = 0; j < targetInfoMatchers.length; j++) {\r\n                        if (targetInfoMatchers[j](foundCpts, targetInfo)) {\r\n                            return targetInfo;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        return BrushTargetManager;\r\n    }());\r\n    function formatMinMax(minMax) {\r\n        minMax[0] > minMax[1] && minMax.reverse();\r\n        return minMax;\r\n    }\r\n    function parseFinder$1(ecModel, finder) {\r\n        return parseFinder(ecModel, finder, { includeMainTypes: INCLUDE_FINDER_MAIN_TYPES });\r\n    }\r\n    var targetInfoBuilders = {\r\n        grid: function (foundCpts, targetInfoList) {\r\n            var xAxisModels = foundCpts.xAxisModels;\r\n            var yAxisModels = foundCpts.yAxisModels;\r\n            var gridModels = foundCpts.gridModels;\r\n            var gridModelMap = createHashMap();\r\n            var xAxesHas = {};\r\n            var yAxesHas = {};\r\n            if (!xAxisModels && !yAxisModels && !gridModels) {\r\n                return;\r\n            }\r\n            each(xAxisModels, function (axisModel) {\r\n                var gridModel = axisModel.axis.grid.model;\r\n                gridModelMap.set(gridModel.id, gridModel);\r\n                xAxesHas[gridModel.id] = true;\r\n            });\r\n            each(yAxisModels, function (axisModel) {\r\n                var gridModel = axisModel.axis.grid.model;\r\n                gridModelMap.set(gridModel.id, gridModel);\r\n                yAxesHas[gridModel.id] = true;\r\n            });\r\n            each(gridModels, function (gridModel) {\r\n                gridModelMap.set(gridModel.id, gridModel);\r\n                xAxesHas[gridModel.id] = true;\r\n                yAxesHas[gridModel.id] = true;\r\n            });\r\n            gridModelMap.each(function (gridModel) {\r\n                var grid = gridModel.coordinateSystem;\r\n                var cartesians = [];\r\n                each(grid.getCartesians(), function (cartesian, index) {\r\n                    if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0\r\n                        || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\r\n                        cartesians.push(cartesian);\r\n                    }\r\n                });\r\n                targetInfoList.push({\r\n                    panelId: 'grid--' + gridModel.id,\r\n                    gridModel: gridModel,\r\n                    coordSysModel: gridModel,\r\n                    coordSys: cartesians[0],\r\n                    coordSyses: cartesians,\r\n                    getPanelRect: panelRectBuilders.grid,\r\n                    xAxisDeclared: xAxesHas[gridModel.id],\r\n                    yAxisDeclared: yAxesHas[gridModel.id]\r\n                });\r\n            });\r\n        },\r\n        geo: function (foundCpts, targetInfoList) {\r\n            each(foundCpts.geoModels, function (geoModel) {\r\n                var coordSys = geoModel.coordinateSystem;\r\n                targetInfoList.push({\r\n                    panelId: 'geo--' + geoModel.id,\r\n                    geoModel: geoModel,\r\n                    coordSysModel: geoModel,\r\n                    coordSys: coordSys,\r\n                    coordSyses: [coordSys],\r\n                    getPanelRect: panelRectBuilders.geo\r\n                });\r\n            });\r\n        }\r\n    };\r\n    var targetInfoMatchers = [\r\n        function (foundCpts, targetInfo) {\r\n            var xAxisModel = foundCpts.xAxisModel;\r\n            var yAxisModel = foundCpts.yAxisModel;\r\n            var gridModel = foundCpts.gridModel;\r\n            !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\r\n            !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\r\n            return gridModel && gridModel === targetInfo.gridModel;\r\n        },\r\n        function (foundCpts, targetInfo) {\r\n            var geoModel = foundCpts.geoModel;\r\n            return geoModel && geoModel === targetInfo.geoModel;\r\n        }\r\n    ];\r\n    var panelRectBuilders = {\r\n        grid: function () {\r\n            return this.coordSys.master.getRect().clone();\r\n        },\r\n        geo: function () {\r\n            var coordSys = this.coordSys;\r\n            var rect = coordSys.getBoundingRect().clone();\r\n            rect.applyTransform(getTransform(coordSys));\r\n            return rect;\r\n        }\r\n    };\r\n    var coordConvert = {\r\n        lineX: curry(axisConvert, 0),\r\n        lineY: curry(axisConvert, 1),\r\n        rect: function (to, coordSys, rangeOrCoordRange) {\r\n            var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\r\n            var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\r\n            var values = [\r\n                formatMinMax([xminymin[0], xmaxymax[0]]),\r\n                formatMinMax([xminymin[1], xmaxymax[1]])\r\n            ];\r\n            return { values: values, xyMinMax: values };\r\n        },\r\n        polygon: function (to, coordSys, rangeOrCoordRange) {\r\n            var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\r\n            var values = map(rangeOrCoordRange, function (item) {\r\n                var p = coordSys[COORD_CONVERTS[to]](item);\r\n                xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\r\n                xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\r\n                xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\r\n                xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\r\n                return p;\r\n            });\r\n            return { values: values, xyMinMax: xyMinMax };\r\n        }\r\n    };\r\n    function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\r\n        if (__DEV__) {\r\n            assert(coordSys.type === 'cartesian2d', 'lineX/lineY brush is available only in cartesian2d.');\r\n        }\r\n        var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\r\n        var values = formatMinMax(map([0, 1], function (i) {\r\n            return to\r\n                ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]))\r\n                : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\r\n        }));\r\n        var xyMinMax = [];\r\n        xyMinMax[axisNameIndex] = values;\r\n        xyMinMax[1 - axisNameIndex] = [NaN, NaN];\r\n        return { values: values, xyMinMax: xyMinMax };\r\n    }\r\n    var diffProcessor = {\r\n        lineX: curry(axisDiffProcessor, 0),\r\n        lineY: curry(axisDiffProcessor, 1),\r\n        rect: function (values, refer, scales) {\r\n            return [\r\n                [values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]],\r\n                [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]\r\n            ];\r\n        },\r\n        polygon: function (values, refer, scales) {\r\n            return map(values, function (item, idx) {\r\n                return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\r\n            });\r\n        }\r\n    };\r\n    function axisDiffProcessor(axisNameIndex, values, refer, scales) {\r\n        return [\r\n            values[0] - scales[axisNameIndex] * refer[0],\r\n            values[1] - scales[axisNameIndex] * refer[1]\r\n        ];\r\n    }\r\n    function getScales(xyMinMaxCurr, xyMinMaxOrigin) {\r\n        var sizeCurr = getSize(xyMinMaxCurr);\r\n        var sizeOrigin = getSize(xyMinMaxOrigin);\r\n        var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\r\n        isNaN(scales[0]) && (scales[0] = 1);\r\n        isNaN(scales[1]) && (scales[1] = 1);\r\n        return scales;\r\n    }\r\n    function getSize(xyMinMax) {\r\n        return xyMinMax\r\n            ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]]\r\n            : [NaN, NaN];\r\n    }\n\n    var each$9 = each;\r\n    var inner$h = makeInner();\r\n    function push(ecModel, newSnapshot) {\r\n        var storedSnapshots = getStoreSnapshots(ecModel);\r\n        each$9(newSnapshot, function (batchItem, dataZoomId) {\r\n            var i = storedSnapshots.length - 1;\r\n            for (; i >= 0; i--) {\r\n                var snapshot = storedSnapshots[i];\r\n                if (snapshot[dataZoomId]) {\r\n                    break;\r\n                }\r\n            }\r\n            if (i < 0) {\r\n                var dataZoomModel = ecModel.queryComponents({ mainType: 'dataZoom', subType: 'select', id: dataZoomId })[0];\r\n                if (dataZoomModel) {\r\n                    var percentRange = dataZoomModel.getPercentRange();\r\n                    storedSnapshots[0][dataZoomId] = {\r\n                        dataZoomId: dataZoomId,\r\n                        start: percentRange[0],\r\n                        end: percentRange[1]\r\n                    };\r\n                }\r\n            }\r\n        });\r\n        storedSnapshots.push(newSnapshot);\r\n    }\r\n    function pop(ecModel) {\r\n        var storedSnapshots = getStoreSnapshots(ecModel);\r\n        var head = storedSnapshots[storedSnapshots.length - 1];\r\n        storedSnapshots.length > 1 && storedSnapshots.pop();\r\n        var snapshot = {};\r\n        each$9(head, function (batchItem, dataZoomId) {\r\n            for (var i = storedSnapshots.length - 1; i >= 0; i--) {\r\n                batchItem = storedSnapshots[i][dataZoomId];\r\n                if (batchItem) {\r\n                    snapshot[dataZoomId] = batchItem;\r\n                    break;\r\n                }\r\n            }\r\n        });\r\n        return snapshot;\r\n    }\r\n    function clear$1(ecModel) {\r\n        inner$h(ecModel).snapshots = null;\r\n    }\r\n    function count(ecModel) {\r\n        return getStoreSnapshots(ecModel).length;\r\n    }\r\n    function getStoreSnapshots(ecModel) {\r\n        var store = inner$h(ecModel);\r\n        if (!store.snapshots) {\r\n            store.snapshots = [{}];\r\n        }\r\n        return store.snapshots;\r\n    }\n\n    ComponentModel.registerSubTypeDefaulter('dataZoom', function () {\r\n        return 'slider';\r\n    });\n\n    var DATA_ZOOM_AXIS_DIMENSIONS = [\r\n        'x', 'y', 'radius', 'angle', 'single'\r\n    ];\r\n    var SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis'];\r\n    function isCoordSupported(seriesModel) {\r\n        var coordType = seriesModel.get('coordinateSystem');\r\n        return indexOf(SERIES_COORDS, coordType) >= 0;\r\n    }\r\n    function getAxisMainType(axisDim) {\r\n        if (__DEV__) {\r\n            assert(axisDim);\r\n        }\r\n        return axisDim + 'Axis';\r\n    }\r\n    function findEffectedDataZooms(ecModel, payload) {\r\n        var axisRecords = createHashMap();\r\n        var effectedModels = [];\r\n        var effectedModelMap = createHashMap();\r\n        ecModel.eachComponent({ mainType: 'dataZoom', query: payload }, function (dataZoomModel) {\r\n            if (!effectedModelMap.get(dataZoomModel.uid)) {\r\n                addToEffected(dataZoomModel);\r\n            }\r\n        });\r\n        var foundNewLink;\r\n        do {\r\n            foundNewLink = false;\r\n            ecModel.eachComponent('dataZoom', processSingle);\r\n        } while (foundNewLink);\r\n        function processSingle(dataZoomModel) {\r\n            if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {\r\n                addToEffected(dataZoomModel);\r\n                foundNewLink = true;\r\n            }\r\n        }\r\n        function addToEffected(dataZoom) {\r\n            effectedModelMap.set(dataZoom.uid, true);\r\n            effectedModels.push(dataZoom);\r\n            markAxisControlled(dataZoom);\r\n        }\r\n        function isLinked(dataZoomModel) {\r\n            var isLink = false;\r\n            dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                var axisIdxArr = axisRecords.get(axisDim);\r\n                if (axisIdxArr && axisIdxArr[axisIndex]) {\r\n                    isLink = true;\r\n                }\r\n            });\r\n            return isLink;\r\n        }\r\n        function markAxisControlled(dataZoomModel) {\r\n            dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true;\r\n            });\r\n        }\r\n        return effectedModels;\r\n    }\r\n    function collectReferCoordSysModelInfo(dataZoomModel) {\r\n        var ecModel = dataZoomModel.ecModel;\r\n        var coordSysInfoWrap = {\r\n            infoList: [],\r\n            infoMap: createHashMap()\r\n        };\r\n        dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n            var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n            if (!axisModel) {\r\n                return;\r\n            }\r\n            var coordSysModel = axisModel.getCoordSysModel();\r\n            if (!coordSysModel) {\r\n                return;\r\n            }\r\n            var coordSysUid = coordSysModel.uid;\r\n            var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid);\r\n            if (!coordSysInfo) {\r\n                coordSysInfo = { model: coordSysModel, axisModels: [] };\r\n                coordSysInfoWrap.infoList.push(coordSysInfo);\r\n                coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo);\r\n            }\r\n            coordSysInfo.axisModels.push(axisModel);\r\n        });\r\n        return coordSysInfoWrap;\r\n    }\n\n    var DataZoomAxisInfo = (function () {\r\n        function DataZoomAxisInfo() {\r\n            this.indexList = [];\r\n            this.indexMap = [];\r\n        }\r\n        DataZoomAxisInfo.prototype.add = function (axisCmptIdx) {\r\n            if (!this.indexMap[axisCmptIdx]) {\r\n                this.indexList.push(axisCmptIdx);\r\n                this.indexMap[axisCmptIdx] = true;\r\n            }\r\n        };\r\n        return DataZoomAxisInfo;\r\n    }());\r\n    var DataZoomModel = (function (_super) {\r\n        __extends(DataZoomModel, _super);\r\n        function DataZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = DataZoomModel.type;\r\n            _this._autoThrottle = true;\r\n            _this._noTarget = true;\r\n            _this._rangePropMode = ['percent', 'percent'];\r\n            return _this;\r\n        }\r\n        DataZoomModel.prototype.init = function (option, parentModel, ecModel) {\r\n            var inputRawOption = retrieveRawOption(option);\r\n            this.settledOption = inputRawOption;\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            this._doInit(inputRawOption);\r\n        };\r\n        DataZoomModel.prototype.mergeOption = function (newOption) {\r\n            var inputRawOption = retrieveRawOption(newOption);\r\n            merge(this.option, newOption, true);\r\n            merge(this.settledOption, inputRawOption, true);\r\n            this._doInit(inputRawOption);\r\n        };\r\n        DataZoomModel.prototype._doInit = function (inputRawOption) {\r\n            var thisOption = this.option;\r\n            this._setDefaultThrottle(inputRawOption);\r\n            this._updateRangeUse(inputRawOption);\r\n            var settledOption = this.settledOption;\r\n            each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\r\n                if (this._rangePropMode[index] === 'value') {\r\n                    thisOption[names[0]] = settledOption[names[0]] = null;\r\n                }\r\n            }, this);\r\n            this._resetTarget();\r\n        };\r\n        DataZoomModel.prototype._resetTarget = function () {\r\n            var optionOrient = this.get('orient', true);\r\n            var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap();\r\n            var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap);\r\n            if (hasAxisSpecified) {\r\n                this._orient = optionOrient || this._makeAutoOrientByTargetAxis();\r\n            }\r\n            else {\r\n                this._orient = optionOrient || 'horizontal';\r\n                this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient);\r\n            }\r\n            this._noTarget = true;\r\n            targetAxisIndexMap.each(function (axisInfo) {\r\n                if (axisInfo.indexList.length) {\r\n                    this._noTarget = false;\r\n                }\r\n            }, this);\r\n        };\r\n        DataZoomModel.prototype._fillSpecifiedTargetAxis = function (targetAxisIndexMap) {\r\n            var hasAxisSpecified = false;\r\n            each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\r\n                var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING);\r\n                if (!refering.specified) {\r\n                    return;\r\n                }\r\n                hasAxisSpecified = true;\r\n                var axisInfo = new DataZoomAxisInfo();\r\n                each(refering.models, function (axisModel) {\r\n                    axisInfo.add(axisModel.componentIndex);\r\n                });\r\n                targetAxisIndexMap.set(axisDim, axisInfo);\r\n            }, this);\r\n            return hasAxisSpecified;\r\n        };\r\n        DataZoomModel.prototype._fillAutoTargetAxisByOrient = function (targetAxisIndexMap, orient) {\r\n            var ecModel = this.ecModel;\r\n            var needAuto = true;\r\n            if (needAuto) {\r\n                var axisDim = orient === 'vertical' ? 'y' : 'x';\r\n                var axisModels = ecModel.findComponents({ mainType: axisDim + 'Axis' });\r\n                setParallelAxis(axisModels, axisDim);\r\n            }\r\n            if (needAuto) {\r\n                var axisModels = ecModel.findComponents({\r\n                    mainType: 'singleAxis',\r\n                    filter: function (axisModel) { return axisModel.get('orient', true) === orient; }\r\n                });\r\n                setParallelAxis(axisModels, 'single');\r\n            }\r\n            function setParallelAxis(axisModels, axisDim) {\r\n                var axisModel = axisModels[0];\r\n                if (!axisModel) {\r\n                    return;\r\n                }\r\n                var axisInfo = new DataZoomAxisInfo();\r\n                axisInfo.add(axisModel.componentIndex);\r\n                targetAxisIndexMap.set(axisDim, axisInfo);\r\n                needAuto = false;\r\n                if (axisDim === 'x' || axisDim === 'y') {\r\n                    var gridModel_1 = axisModel.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n                    gridModel_1 && each(axisModels, function (axModel) {\r\n                        if (axisModel.componentIndex !== axModel.componentIndex\r\n                            && gridModel_1 === axModel.getReferringComponents('grid', SINGLE_REFERRING).models[0]) {\r\n                            axisInfo.add(axModel.componentIndex);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (needAuto) {\r\n                each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\r\n                    if (!needAuto) {\r\n                        return;\r\n                    }\r\n                    var axisModels = ecModel.findComponents({\r\n                        mainType: getAxisMainType(axisDim),\r\n                        filter: function (axisModel) { return axisModel.get('type', true) === 'category'; }\r\n                    });\r\n                    if (axisModels[0]) {\r\n                        var axisInfo = new DataZoomAxisInfo();\r\n                        axisInfo.add(axisModels[0].componentIndex);\r\n                        targetAxisIndexMap.set(axisDim, axisInfo);\r\n                        needAuto = false;\r\n                    }\r\n                }, this);\r\n            }\r\n        };\r\n        DataZoomModel.prototype._makeAutoOrientByTargetAxis = function () {\r\n            var dim;\r\n            this.eachTargetAxis(function (axisDim) {\r\n                !dim && (dim = axisDim);\r\n            }, this);\r\n            return dim === 'y' ? 'vertical' : 'horizontal';\r\n        };\r\n        DataZoomModel.prototype._setDefaultThrottle = function (inputRawOption) {\r\n            if (inputRawOption.hasOwnProperty('throttle')) {\r\n                this._autoThrottle = false;\r\n            }\r\n            if (this._autoThrottle) {\r\n                var globalOption = this.ecModel.option;\r\n                this.option.throttle = (globalOption.animation && globalOption.animationDurationUpdate > 0) ? 100 : 20;\r\n            }\r\n        };\r\n        DataZoomModel.prototype._updateRangeUse = function (inputRawOption) {\r\n            var rangePropMode = this._rangePropMode;\r\n            var rangeModeInOption = this.get('rangeMode');\r\n            each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\r\n                var percentSpecified = inputRawOption[names[0]] != null;\r\n                var valueSpecified = inputRawOption[names[1]] != null;\r\n                if (percentSpecified && !valueSpecified) {\r\n                    rangePropMode[index] = 'percent';\r\n                }\r\n                else if (!percentSpecified && valueSpecified) {\r\n                    rangePropMode[index] = 'value';\r\n                }\r\n                else if (rangeModeInOption) {\r\n                    rangePropMode[index] = rangeModeInOption[index];\r\n                }\r\n                else if (percentSpecified) {\r\n                    rangePropMode[index] = 'percent';\r\n                }\r\n            });\r\n        };\r\n        DataZoomModel.prototype.noTarget = function () {\r\n            return this._noTarget;\r\n        };\r\n        DataZoomModel.prototype.getFirstTargetAxisModel = function () {\r\n            var firstAxisModel;\r\n            this.eachTargetAxis(function (axisDim, axisIndex) {\r\n                if (firstAxisModel == null) {\r\n                    firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n                }\r\n            }, this);\r\n            return firstAxisModel;\r\n        };\r\n        DataZoomModel.prototype.eachTargetAxis = function (callback, context) {\r\n            this._targetAxisInfoMap.each(function (axisInfo, axisDim) {\r\n                each(axisInfo.indexList, function (axisIndex) {\r\n                    callback.call(context, axisDim, axisIndex);\r\n                });\r\n            });\r\n        };\r\n        DataZoomModel.prototype.getAxisProxy = function (axisDim, axisIndex) {\r\n            var axisModel = this.getAxisModel(axisDim, axisIndex);\r\n            if (axisModel) {\r\n                return axisModel.__dzAxisProxy;\r\n            }\r\n        };\r\n        DataZoomModel.prototype.getAxisModel = function (axisDim, axisIndex) {\r\n            if (__DEV__) {\r\n                assert(axisDim && axisIndex != null);\r\n            }\r\n            var axisInfo = this._targetAxisInfoMap.get(axisDim);\r\n            if (axisInfo && axisInfo.indexMap[axisIndex]) {\r\n                return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n            }\r\n        };\r\n        DataZoomModel.prototype.setRawRange = function (opt) {\r\n            var thisOption = this.option;\r\n            var settledOption = this.settledOption;\r\n            each([['start', 'startValue'], ['end', 'endValue']], function (names) {\r\n                if (opt[names[0]] != null || opt[names[1]] != null) {\r\n                    thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\r\n                    thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\r\n                }\r\n            }, this);\r\n            this._updateRangeUse(opt);\r\n        };\r\n        DataZoomModel.prototype.setCalculatedRange = function (opt) {\r\n            var option = this.option;\r\n            each(['start', 'startValue', 'end', 'endValue'], function (name) {\r\n                option[name] = opt[name];\r\n            });\r\n        };\r\n        DataZoomModel.prototype.getPercentRange = function () {\r\n            var axisProxy = this.findRepresentativeAxisProxy();\r\n            if (axisProxy) {\r\n                return axisProxy.getDataPercentWindow();\r\n            }\r\n        };\r\n        DataZoomModel.prototype.getValueRange = function (axisDim, axisIndex) {\r\n            if (axisDim == null && axisIndex == null) {\r\n                var axisProxy = this.findRepresentativeAxisProxy();\r\n                if (axisProxy) {\r\n                    return axisProxy.getDataValueWindow();\r\n                }\r\n            }\r\n            else {\r\n                return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow();\r\n            }\r\n        };\r\n        DataZoomModel.prototype.findRepresentativeAxisProxy = function (axisModel) {\r\n            if (axisModel) {\r\n                return axisModel.__dzAxisProxy;\r\n            }\r\n            var firstProxy;\r\n            var axisDimList = this._targetAxisInfoMap.keys();\r\n            for (var i = 0; i < axisDimList.length; i++) {\r\n                var axisDim = axisDimList[i];\r\n                var axisInfo = this._targetAxisInfoMap.get(axisDim);\r\n                for (var j = 0; j < axisInfo.indexList.length; j++) {\r\n                    var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]);\r\n                    if (proxy.hostedBy(this)) {\r\n                        return proxy;\r\n                    }\r\n                    if (!firstProxy) {\r\n                        firstProxy = proxy;\r\n                    }\r\n                }\r\n            }\r\n            return firstProxy;\r\n        };\r\n        DataZoomModel.prototype.getRangePropMode = function () {\r\n            return this._rangePropMode.slice();\r\n        };\r\n        DataZoomModel.prototype.getOrient = function () {\r\n            if (__DEV__) {\r\n                assert(this._orient);\r\n            }\r\n            return this._orient;\r\n        };\r\n        DataZoomModel.type = 'dataZoom';\r\n        DataZoomModel.dependencies = [\r\n            'xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series', 'toolbox'\r\n        ];\r\n        DataZoomModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 4,\r\n            filterMode: 'filter',\r\n            start: 0,\r\n            end: 100\r\n        };\r\n        return DataZoomModel;\r\n    }(ComponentModel));\r\n    function retrieveRawOption(option) {\r\n        var ret = {};\r\n        each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\r\n            option.hasOwnProperty(name) && (ret[name] = option[name]);\r\n        });\r\n        return ret;\r\n    }\n\n    var DataZoomView = (function (_super) {\r\n        __extends(DataZoomView, _super);\r\n        function DataZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = DataZoomView.type;\r\n            return _this;\r\n        }\r\n        DataZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\r\n            this.dataZoomModel = dataZoomModel;\r\n            this.ecModel = ecModel;\r\n            this.api = api;\r\n        };\r\n        DataZoomView.type = 'dataZoom';\r\n        return DataZoomView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(DataZoomView);\n\n    var SelectDataZoomModel = (function (_super) {\r\n        __extends(SelectDataZoomModel, _super);\r\n        function SelectDataZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SelectDataZoomModel.type;\r\n            return _this;\r\n        }\r\n        SelectDataZoomModel.type = 'dataZoom.select';\r\n        return SelectDataZoomModel;\r\n    }(DataZoomModel));\r\n    ComponentModel.registerClass(SelectDataZoomModel);\n\n    var SelectDataZoomView = (function (_super) {\r\n        __extends(SelectDataZoomView, _super);\r\n        function SelectDataZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SelectDataZoomView.type;\r\n            return _this;\r\n        }\r\n        SelectDataZoomView.type = 'dataZoom.select';\r\n        return SelectDataZoomView;\r\n    }(DataZoomView));\r\n    ComponentView.registerClass(SelectDataZoomView);\n\n    var each$a = each;\r\n    var asc$1 = asc;\r\n    var AxisProxy = (function () {\r\n        function AxisProxy(dimName, axisIndex, dataZoomModel, ecModel) {\r\n            this._dimName = dimName;\r\n            this._axisIndex = axisIndex;\r\n            this.ecModel = ecModel;\r\n            this._dataZoomModel = dataZoomModel;\r\n        }\r\n        AxisProxy.prototype.hostedBy = function (dataZoomModel) {\r\n            return this._dataZoomModel === dataZoomModel;\r\n        };\r\n        AxisProxy.prototype.getDataValueWindow = function () {\r\n            return this._valueWindow.slice();\r\n        };\r\n        AxisProxy.prototype.getDataPercentWindow = function () {\r\n            return this._percentWindow.slice();\r\n        };\r\n        AxisProxy.prototype.getTargetSeriesModels = function () {\r\n            var seriesModels = [];\r\n            this.ecModel.eachSeries(function (seriesModel) {\r\n                if (isCoordSupported(seriesModel)) {\r\n                    var axisMainType = getAxisMainType(this._dimName);\r\n                    var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0];\r\n                    if (axisModel && this._axisIndex === axisModel.componentIndex) {\r\n                        seriesModels.push(seriesModel);\r\n                    }\r\n                }\r\n            }, this);\r\n            return seriesModels;\r\n        };\r\n        AxisProxy.prototype.getAxisModel = function () {\r\n            return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\r\n        };\r\n        AxisProxy.prototype.getMinMaxSpan = function () {\r\n            return clone(this._minMaxSpan);\r\n        };\r\n        AxisProxy.prototype.calculateDataWindow = function (opt) {\r\n            var dataExtent = this._dataExtent;\r\n            var axisModel = this.getAxisModel();\r\n            var scale = axisModel.axis.scale;\r\n            var rangePropMode = this._dataZoomModel.getRangePropMode();\r\n            var percentExtent = [0, 100];\r\n            var percentWindow = [];\r\n            var valueWindow = [];\r\n            var hasPropModeValue;\r\n            each$a(['start', 'end'], function (prop, idx) {\r\n                var boundPercent = opt[prop];\r\n                var boundValue = opt[prop + 'Value'];\r\n                if (rangePropMode[idx] === 'percent') {\r\n                    boundPercent == null && (boundPercent = percentExtent[idx]);\r\n                    boundValue = scale.parse(linearMap(boundPercent, percentExtent, dataExtent));\r\n                }\r\n                else {\r\n                    hasPropModeValue = true;\r\n                    boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue);\r\n                    boundPercent = linearMap(boundValue, dataExtent, percentExtent);\r\n                }\r\n                valueWindow[idx] = boundValue;\r\n                percentWindow[idx] = boundPercent;\r\n            });\r\n            asc$1(valueWindow);\r\n            asc$1(percentWindow);\r\n            var spans = this._minMaxSpan;\r\n            hasPropModeValue\r\n                ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false)\r\n                : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\r\n            function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\r\n                var suffix = toValue ? 'Span' : 'ValueSpan';\r\n                sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\r\n                for (var i = 0; i < 2; i++) {\r\n                    toWindow[i] = linearMap(fromWindow[i], fromExtent, toExtent, true);\r\n                    toValue && (toWindow[i] = scale.parse(toWindow[i]));\r\n                }\r\n            }\r\n            return {\r\n                valueWindow: valueWindow,\r\n                percentWindow: percentWindow\r\n            };\r\n        };\r\n        AxisProxy.prototype.reset = function (dataZoomModel) {\r\n            if (dataZoomModel !== this._dataZoomModel) {\r\n                return;\r\n            }\r\n            var targetSeries = this.getTargetSeriesModels();\r\n            this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries);\r\n            this._updateMinMaxSpan();\r\n            var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\r\n            this._valueWindow = dataWindow.valueWindow;\r\n            this._percentWindow = dataWindow.percentWindow;\r\n            this._setAxisModel();\r\n        };\r\n        AxisProxy.prototype.filterData = function (dataZoomModel, api) {\r\n            if (dataZoomModel !== this._dataZoomModel) {\r\n                return;\r\n            }\r\n            var axisDim = this._dimName;\r\n            var seriesModels = this.getTargetSeriesModels();\r\n            var filterMode = dataZoomModel.get('filterMode');\r\n            var valueWindow = this._valueWindow;\r\n            if (filterMode === 'none') {\r\n                return;\r\n            }\r\n            each$a(seriesModels, function (seriesModel) {\r\n                var seriesData = seriesModel.getData();\r\n                var dataDims = seriesData.mapDimensionsAll(axisDim);\r\n                if (!dataDims.length) {\r\n                    return;\r\n                }\r\n                if (filterMode === 'weakFilter') {\r\n                    seriesData.filterSelf(function (dataIndex) {\r\n                        var leftOut;\r\n                        var rightOut;\r\n                        var hasValue;\r\n                        for (var i = 0; i < dataDims.length; i++) {\r\n                            var value = seriesData.get(dataDims[i], dataIndex);\r\n                            var thisHasValue = !isNaN(value);\r\n                            var thisLeftOut = value < valueWindow[0];\r\n                            var thisRightOut = value > valueWindow[1];\r\n                            if (thisHasValue && !thisLeftOut && !thisRightOut) {\r\n                                return true;\r\n                            }\r\n                            thisHasValue && (hasValue = true);\r\n                            thisLeftOut && (leftOut = true);\r\n                            thisRightOut && (rightOut = true);\r\n                        }\r\n                        return hasValue && leftOut && rightOut;\r\n                    });\r\n                }\r\n                else {\r\n                    each$a(dataDims, function (dim) {\r\n                        if (filterMode === 'empty') {\r\n                            seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\r\n                                return !isInWindow(value) ? NaN : value;\r\n                            }));\r\n                        }\r\n                        else {\r\n                            var range = {};\r\n                            range[dim] = valueWindow;\r\n                            seriesData.selectRange(range);\r\n                        }\r\n                    });\r\n                }\r\n                each$a(dataDims, function (dim) {\r\n                    seriesData.setApproximateExtent(valueWindow, dim);\r\n                });\r\n            });\r\n            function isInWindow(value) {\r\n                return value >= valueWindow[0] && value <= valueWindow[1];\r\n            }\r\n        };\r\n        AxisProxy.prototype._updateMinMaxSpan = function () {\r\n            var minMaxSpan = this._minMaxSpan = {};\r\n            var dataZoomModel = this._dataZoomModel;\r\n            var dataExtent = this._dataExtent;\r\n            each$a(['min', 'max'], function (minMax) {\r\n                var percentSpan = dataZoomModel.get(minMax + 'Span');\r\n                var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\r\n                valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan));\r\n                if (valueSpan != null) {\r\n                    percentSpan = linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\r\n                }\r\n                else if (percentSpan != null) {\r\n                    valueSpan = linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\r\n                }\r\n                minMaxSpan[minMax + 'Span'] = percentSpan;\r\n                minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\r\n            }, this);\r\n        };\r\n        AxisProxy.prototype._setAxisModel = function () {\r\n            var axisModel = this.getAxisModel();\r\n            var percentWindow = this._percentWindow;\r\n            var valueWindow = this._valueWindow;\r\n            if (!percentWindow) {\r\n                return;\r\n            }\r\n            var precision = getPixelPrecision(valueWindow, [0, 500]);\r\n            precision = Math.min(precision, 20);\r\n            var rawExtentInfo = axisModel.axis.scale.rawExtentInfo;\r\n            if (percentWindow[0] !== 0) {\r\n                rawExtentInfo.setDeterminedMinMax('min', +valueWindow[0].toFixed(precision));\r\n            }\r\n            if (percentWindow[1] !== 100) {\r\n                rawExtentInfo.setDeterminedMinMax('max', +valueWindow[1].toFixed(precision));\r\n            }\r\n            rawExtentInfo.freeze();\r\n        };\r\n        return AxisProxy;\r\n    }());\r\n    function calculateDataExtent(axisProxy, axisDim, seriesModels) {\r\n        var dataExtent = [Infinity, -Infinity];\r\n        each$a(seriesModels, function (seriesModel) {\r\n            unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim);\r\n        });\r\n        var axisModel = axisProxy.getAxisModel();\r\n        var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate();\r\n        return [rawExtentResult.min, rawExtentResult.max];\r\n    }\n\n    registerProcessor(PRIORITY.PROCESSOR.FILTER, {\r\n        getTargetSeries: function (ecModel) {\r\n            function eachAxisModel(cb) {\r\n                ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n                    dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                        var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n                        cb(axisDim, axisIndex, axisModel, dataZoomModel);\r\n                    });\r\n                });\r\n            }\r\n            eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\r\n                axisModel.__dzAxisProxy = null;\r\n            });\r\n            var proxyList = [];\r\n            eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\r\n                if (!axisModel.__dzAxisProxy) {\r\n                    axisModel.__dzAxisProxy = new AxisProxy(axisDim, axisIndex, dataZoomModel, ecModel);\r\n                    proxyList.push(axisModel.__dzAxisProxy);\r\n                }\r\n            });\r\n            var seriesModelMap = createHashMap();\r\n            each(proxyList, function (axisProxy) {\r\n                each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\r\n                    seriesModelMap.set(seriesModel.uid, seriesModel);\r\n                });\r\n            });\r\n            return seriesModelMap;\r\n        },\r\n        overallReset: function (ecModel, api) {\r\n            ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n                dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                    dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel);\r\n                });\r\n                dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                    dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api);\r\n                });\r\n            });\r\n            ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n                var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\r\n                if (axisProxy) {\r\n                    var percentRange = axisProxy.getDataPercentWindow();\r\n                    var valueRange = axisProxy.getDataValueWindow();\r\n                    dataZoomModel.setCalculatedRange({\r\n                        start: percentRange[0],\r\n                        end: percentRange[1],\r\n                        startValue: valueRange[0],\r\n                        endValue: valueRange[1]\r\n                    });\r\n                }\r\n            });\r\n        }\r\n    });\n\n    registerAction('dataZoom', function (payload, ecModel) {\r\n        var effectedModels = findEffectedDataZooms(ecModel, payload);\r\n        each(effectedModels, function (dataZoomModel) {\r\n            dataZoomModel.setRawRange({\r\n                start: payload.start,\r\n                end: payload.end,\r\n                startValue: payload.startValue,\r\n                endValue: payload.endValue\r\n            });\r\n        });\r\n    });\n\n    var each$b = each;\r\n    var DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_');\r\n    var DataZoomFeature = (function (_super) {\r\n        __extends(DataZoomFeature, _super);\r\n        function DataZoomFeature() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        DataZoomFeature.prototype.render = function (featureModel, ecModel, api, payload) {\r\n            if (!this.brushController) {\r\n                this.brushController = new BrushController(api.getZr());\r\n                this.brushController.on('brush', bind(this._onBrush, this))\r\n                    .mount();\r\n            }\r\n            updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\r\n            updateBackBtnStatus(featureModel, ecModel);\r\n        };\r\n        DataZoomFeature.prototype.onclick = function (ecModel, api, type) {\r\n            handlers$1[type].call(this);\r\n        };\r\n        DataZoomFeature.prototype.remove = function (ecModel, api) {\r\n            this.brushController.unmount();\r\n        };\r\n        DataZoomFeature.prototype.dispose = function (ecModel, api) {\r\n            this.brushController.dispose();\r\n        };\r\n        DataZoomFeature.prototype._onBrush = function (eventParam) {\r\n            var areas = eventParam.areas;\r\n            if (!eventParam.isEnd || !areas.length) {\r\n                return;\r\n            }\r\n            var snapshot = {};\r\n            var ecModel = this.ecModel;\r\n            this.brushController.updateCovers([]);\r\n            var brushTargetManager = new BrushTargetManager(makeAxisFinder(this.model), ecModel, { include: ['grid'] });\r\n            brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\r\n                if (coordSys.type !== 'cartesian2d') {\r\n                    return;\r\n                }\r\n                var brushType = area.brushType;\r\n                if (brushType === 'rect') {\r\n                    setBatch('x', coordSys, coordRange[0]);\r\n                    setBatch('y', coordSys, coordRange[1]);\r\n                }\r\n                else {\r\n                    setBatch({ lineX: 'x', lineY: 'y' }[brushType], coordSys, coordRange);\r\n                }\r\n            });\r\n            push(ecModel, snapshot);\r\n            this._dispatchZoomAction(snapshot);\r\n            function setBatch(dimName, coordSys, minMax) {\r\n                var axis = coordSys.getAxis(dimName);\r\n                var axisModel = axis.model;\r\n                var dataZoomModel = findDataZoom(dimName, axisModel, ecModel);\r\n                var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\r\n                if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\r\n                    minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\r\n                }\r\n                dataZoomModel && (snapshot[dataZoomModel.id] = {\r\n                    dataZoomId: dataZoomModel.id,\r\n                    startValue: minMax[0],\r\n                    endValue: minMax[1]\r\n                });\r\n            }\r\n            function findDataZoom(dimName, axisModel, ecModel) {\r\n                var found;\r\n                ecModel.eachComponent({ mainType: 'dataZoom', subType: 'select' }, function (dzModel) {\r\n                    var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\r\n                    has && (found = dzModel);\r\n                });\r\n                return found;\r\n            }\r\n        };\r\n        DataZoomFeature.prototype._dispatchZoomAction = function (snapshot) {\r\n            var batch = [];\r\n            each$b(snapshot, function (batchItem, dataZoomId) {\r\n                batch.push(clone(batchItem));\r\n            });\r\n            batch.length && this.api.dispatchAction({\r\n                type: 'dataZoom',\r\n                from: this.uid,\r\n                batch: batch\r\n            });\r\n        };\r\n        DataZoomFeature.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                filterMode: 'filter',\r\n                icon: {\r\n                    zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\r\n                    back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\r\n                },\r\n                title: ecModel.getLocale(['toolbox', 'dataZoom', 'title']),\r\n                brushStyle: {\r\n                    borderWidth: 0,\r\n                    color: 'rgba(210,219,238,0.2)'\r\n                }\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return DataZoomFeature;\r\n    }(ToolboxFeature));\r\n    var handlers$1 = {\r\n        zoom: function () {\r\n            var nextActive = !this.isZoomActive;\r\n            this.api.dispatchAction({\r\n                type: 'takeGlobalCursor',\r\n                key: 'dataZoomSelect',\r\n                dataZoomSelectActive: nextActive\r\n            });\r\n        },\r\n        back: function () {\r\n            this._dispatchZoomAction(pop(this.ecModel));\r\n        }\r\n    };\r\n    function makeAxisFinder(dzFeatureModel) {\r\n        var setting = {\r\n            xAxisIndex: dzFeatureModel.get('xAxisIndex', true),\r\n            yAxisIndex: dzFeatureModel.get('yAxisIndex', true),\r\n            xAxisId: dzFeatureModel.get('xAxisId', true),\r\n            yAxisId: dzFeatureModel.get('yAxisId', true)\r\n        };\r\n        if (setting.xAxisIndex == null && setting.xAxisId == null) {\r\n            setting.xAxisIndex = 'all';\r\n        }\r\n        if (setting.yAxisIndex == null && setting.yAxisId == null) {\r\n            setting.yAxisIndex = 'all';\r\n        }\r\n        return setting;\r\n    }\r\n    function updateBackBtnStatus(featureModel, ecModel) {\r\n        featureModel.setIconStatus('back', count(ecModel) > 1 ? 'emphasis' : 'normal');\r\n    }\r\n    function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\r\n        var zoomActive = view.isZoomActive;\r\n        if (payload && payload.type === 'takeGlobalCursor') {\r\n            zoomActive = payload.key === 'dataZoomSelect'\r\n                ? payload.dataZoomSelectActive : false;\r\n        }\r\n        view.isZoomActive = zoomActive;\r\n        featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\r\n        var brushTargetManager = new BrushTargetManager(makeAxisFinder(featureModel), ecModel, { include: ['grid'] });\r\n        var panels = brushTargetManager.makePanelOpts(api, function (targetInfo) {\r\n            return (targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared)\r\n                ? 'lineX'\r\n                : (!targetInfo.xAxisDeclared && targetInfo.yAxisDeclared)\r\n                    ? 'lineY'\r\n                    : 'rect';\r\n        });\r\n        view.brushController\r\n            .setPanels(panels)\r\n            .enableBrush((zoomActive && panels.length)\r\n            ? {\r\n                brushType: 'auto',\r\n                brushStyle: featureModel.getModel('brushStyle').getItemStyle()\r\n            }\r\n            : false);\r\n    }\r\n    registerFeature('dataZoom', DataZoomFeature);\r\n    registerInternalOptionCreator('dataZoom', function (ecModel) {\r\n        var toolboxModel = ecModel.getComponent('toolbox', 0);\r\n        if (!toolboxModel) {\r\n            return;\r\n        }\r\n        var dzFeatureModel = toolboxModel.getModel(['feature', 'dataZoom']);\r\n        var dzOptions = [];\r\n        var finder = makeAxisFinder(dzFeatureModel);\r\n        var finderResult = parseFinder(ecModel, finder);\r\n        each$b(finderResult.xAxisModels, function (axisModel) { return buildInternalOptions(axisModel, 'xAxis', 'xAxisIndex'); });\r\n        each$b(finderResult.yAxisModels, function (axisModel) { return buildInternalOptions(axisModel, 'yAxis', 'yAxisIndex'); });\r\n        function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {\r\n            var axisIndex = axisModel.componentIndex;\r\n            var newOpt = {\r\n                type: 'select',\r\n                $fromToolbox: true,\r\n                filterMode: dzFeatureModel.get('filterMode', true) || 'filter',\r\n                id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex\r\n            };\r\n            newOpt[axisIndexPropName] = axisIndex;\r\n            dzOptions.push(newOpt);\r\n        }\r\n        return dzOptions;\r\n    });\n\n    var RestoreOption = (function (_super) {\r\n        __extends(RestoreOption, _super);\r\n        function RestoreOption() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        RestoreOption.prototype.onclick = function (ecModel, api) {\r\n            clear$1(ecModel);\r\n            api.dispatchAction({\r\n                type: 'restore',\r\n                from: this.uid\r\n            });\r\n        };\r\n        RestoreOption.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\r\n                title: ecModel.getLocale(['toolbox', 'restore', 'title'])\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return RestoreOption;\r\n    }(ToolboxFeature));\r\n    registerFeature('restore', RestoreOption);\r\n    registerAction({ type: 'restore', event: 'restore', update: 'prepareAndUpdate' }, function (payload, ecModel) {\r\n        ecModel.resetOption('recreate');\r\n    });\n\n    var TooltipModel = (function (_super) {\r\n        __extends(TooltipModel, _super);\r\n        function TooltipModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TooltipModel.type;\r\n            return _this;\r\n        }\r\n        TooltipModel.type = 'tooltip';\r\n        TooltipModel.dependencies = ['axisPointer'];\r\n        TooltipModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 60,\r\n            show: true,\r\n            showContent: true,\r\n            trigger: 'item',\r\n            triggerOn: 'mousemove|click',\r\n            alwaysShowContent: false,\r\n            displayMode: 'single',\r\n            renderMode: 'auto',\r\n            confine: null,\r\n            showDelay: 0,\r\n            hideDelay: 100,\r\n            transitionDuration: 0.4,\r\n            enterable: false,\r\n            backgroundColor: '#fff',\r\n            shadowBlur: 10,\r\n            shadowColor: 'rgba(0, 0, 0, .2)',\r\n            shadowOffsetX: 1,\r\n            shadowOffsetY: 2,\r\n            borderColor: '#333',\r\n            borderRadius: 4,\r\n            borderWidth: 1,\r\n            padding: null,\r\n            extraCssText: '',\r\n            axisPointer: {\r\n                type: 'line',\r\n                axis: 'auto',\r\n                animation: 'auto',\r\n                animationDurationUpdate: 200,\r\n                animationEasingUpdate: 'exponentialOut',\r\n                crossStyle: {\r\n                    color: '#999',\r\n                    width: 1,\r\n                    type: 'dashed',\r\n                    textStyle: {}\r\n                }\r\n            },\r\n            textStyle: {\r\n                color: '#666',\r\n                fontSize: 14\r\n            }\r\n        };\r\n        return TooltipModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(TooltipModel);\n\n    function shouldTooltipConfine(tooltipModel) {\r\n        var confineOption = tooltipModel.get('confine');\r\n        return confineOption != null\r\n            ? !!confineOption\r\n            : tooltipModel.get('renderMode') === 'richText';\r\n    }\n\n    var vendors = ['-ms-', '-moz-', '-o-', '-webkit-', ''];\r\n    var gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\r\n    function mirrorPos(pos) {\r\n        pos = pos === 'left'\r\n            ? 'right'\r\n            : pos === 'right'\r\n                ? 'left'\r\n                : pos === 'top'\r\n                    ? 'bottom'\r\n                    : 'top';\r\n        return pos;\r\n    }\r\n    function assembleArrow(backgroundColor, borderColor, arrowPosition) {\r\n        if (!isString(arrowPosition) || arrowPosition === 'inside') {\r\n            return '';\r\n        }\r\n        borderColor = convertToColorString(borderColor);\r\n        var arrowPos = mirrorPos(arrowPosition);\r\n        var positionStyle = '';\r\n        var transformStyle = '';\r\n        if (indexOf(['left', 'right'], arrowPos) > -1) {\r\n            positionStyle = arrowPos + \":-6px;top:50%;\";\r\n            transformStyle = \"translateY(-50%) rotate(\" + (arrowPos === 'left' ? -225 : -45) + \"deg)\";\r\n        }\r\n        else {\r\n            positionStyle = arrowPos + \":-6px;left:50%;\";\r\n            transformStyle = \"translateX(-50%) rotate(\" + (arrowPos === 'top' ? 225 : 45) + \"deg)\";\r\n        }\r\n        transformStyle = map(vendors, function (vendorPrefix) {\r\n            return vendorPrefix + 'transform:' + transformStyle;\r\n        }).join(';');\r\n        var styleCss = [\r\n            'position:absolute;width:10px;height:10px;',\r\n            \"\" + positionStyle + transformStyle + \";\",\r\n            \"border-bottom: \" + borderColor + \" solid 1px;\",\r\n            \"border-right: \" + borderColor + \" solid 1px;\",\r\n            \"background-color: \" + backgroundColor + \";\",\r\n            'box-shadow: 8px 8px 16px -3px #000;'\r\n        ];\r\n        return \"<div style=\\\"\" + styleCss.join('') + \"\\\"></div>\";\r\n    }\r\n    function assembleTransition(duration, onlyFade) {\r\n        var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\r\n        var transitionText = 'opacity ' + (duration / 2) + 's ' + transitionCurve + ','\r\n            + 'visibility ' + (duration / 2) + 's ' + transitionCurve;\r\n        if (!onlyFade) {\r\n            transitionText += ',left ' + duration + 's ' + transitionCurve\r\n                + ',top ' + duration + 's ' + transitionCurve;\r\n        }\r\n        return map(vendors, function (vendorPrefix) {\r\n            return vendorPrefix + 'transition:' + transitionText;\r\n        }).join(';');\r\n    }\r\n    function assembleFont(textStyleModel) {\r\n        var cssText = [];\r\n        var fontSize = textStyleModel.get('fontSize');\r\n        var color = textStyleModel.getTextColor();\r\n        color && cssText.push('color:' + color);\r\n        cssText.push('font:' + textStyleModel.getFont());\r\n        fontSize\r\n            && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\r\n        var shadowColor = textStyleModel.get('textShadowColor');\r\n        var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\r\n        var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\r\n        var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\r\n        shadowColor && shadowBlur\r\n            && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px '\r\n                + shadowBlur + 'px ' + shadowColor);\r\n        each(['decoration', 'align'], function (name) {\r\n            var val = textStyleModel.get(name);\r\n            val && cssText.push('text-' + name + ':' + val);\r\n        });\r\n        return cssText.join(';');\r\n    }\r\n    function assembleCssText(tooltipModel, enableTransition, onlyFade) {\r\n        var cssText = [];\r\n        var transitionDuration = tooltipModel.get('transitionDuration');\r\n        var backgroundColor = tooltipModel.get('backgroundColor');\r\n        var shadowBlur = tooltipModel.get('shadowBlur');\r\n        var shadowColor = tooltipModel.get('shadowColor');\r\n        var shadowOffsetX = tooltipModel.get('shadowOffsetX');\r\n        var shadowOffsetY = tooltipModel.get('shadowOffsetY');\r\n        var textStyleModel = tooltipModel.getModel('textStyle');\r\n        var padding = getPaddingFromTooltipModel(tooltipModel, 'html');\r\n        var boxShadow = shadowOffsetX + \"px \" + shadowOffsetY + \"px \" + shadowBlur + \"px \" + shadowColor;\r\n        cssText.push('box-shadow:' + boxShadow);\r\n        enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));\r\n        if (backgroundColor) {\r\n            if (env.canvasSupported) {\r\n                cssText.push('background-Color:' + backgroundColor);\r\n            }\r\n            else {\r\n                cssText.push('background-Color:#' + toHex(backgroundColor));\r\n                cssText.push('filter:alpha(opacity=70)');\r\n            }\r\n        }\r\n        each(['width', 'color', 'radius'], function (name) {\r\n            var borderName = 'border-' + name;\r\n            var camelCase = toCamelCase(borderName);\r\n            var val = tooltipModel.get(camelCase);\r\n            val != null\r\n                && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\r\n        });\r\n        cssText.push(assembleFont(textStyleModel));\r\n        if (padding != null) {\r\n            cssText.push('padding:' + normalizeCssArray$1(padding).join('px ') + 'px');\r\n        }\r\n        return cssText.join(';') + ';';\r\n    }\r\n    function makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\r\n        var zrPainter = zr && zr.painter;\r\n        if (appendToBody) {\r\n            var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\r\n            if (zrViewportRoot) {\r\n                transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\r\n            }\r\n        }\r\n        else {\r\n            out[0] = zrX;\r\n            out[1] = zrY;\r\n            var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\r\n            if (viewportRootOffset) {\r\n                out[0] += viewportRootOffset.offsetLeft;\r\n                out[1] += viewportRootOffset.offsetTop;\r\n            }\r\n        }\r\n        out[2] = out[0] / zr.getWidth();\r\n        out[3] = out[1] / zr.getHeight();\r\n    }\r\n    var TooltipHTMLContent = (function () {\r\n        function TooltipHTMLContent(container, api, opt) {\r\n            this._show = false;\r\n            this._styleCoord = [0, 0, 0, 0];\r\n            this._enterable = true;\r\n            this._firstShow = true;\r\n            this._longHide = true;\r\n            if (env.wxa) {\r\n                return null;\r\n            }\r\n            var el = document.createElement('div');\r\n            el.domBelongToZr = true;\r\n            this.el = el;\r\n            var zr = this._zr = api.getZr();\r\n            var appendToBody = this._appendToBody = opt && opt.appendToBody;\r\n            makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\r\n            if (appendToBody) {\r\n                document.body.appendChild(el);\r\n            }\r\n            else {\r\n                container.appendChild(el);\r\n            }\r\n            this._container = container;\r\n            var self = this;\r\n            el.onmouseenter = function () {\r\n                if (self._enterable) {\r\n                    clearTimeout(self._hideTimeout);\r\n                    self._show = true;\r\n                }\r\n                self._inContent = true;\r\n            };\r\n            el.onmousemove = function (e) {\r\n                e = e || window.event;\r\n                if (!self._enterable) {\r\n                    var handler = zr.handler;\r\n                    var zrViewportRoot = zr.painter.getViewportRoot();\r\n                    normalizeEvent(zrViewportRoot, e, true);\r\n                    handler.dispatch('mousemove', e);\r\n                }\r\n            };\r\n            el.onmouseleave = function () {\r\n                self._inContent = false;\r\n                if (self._enterable) {\r\n                    if (self._show) {\r\n                        self.hideLater(self._hideDelay);\r\n                    }\r\n                }\r\n            };\r\n        }\r\n        TooltipHTMLContent.prototype.update = function (tooltipModel) {\r\n            var container = this._container;\r\n            var stl = container.currentStyle\r\n                || document.defaultView.getComputedStyle(container);\r\n            var domStyle = container.style;\r\n            if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\r\n                domStyle.position = 'relative';\r\n            }\r\n            var alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n            alwaysShowContent && this._moveIfResized();\r\n            this.el.className = tooltipModel.get('className') || '';\r\n        };\r\n        TooltipHTMLContent.prototype.show = function (tooltipModel, nearPointColor) {\r\n            clearTimeout(this._hideTimeout);\r\n            clearTimeout(this._longHideTimeout);\r\n            var el = this.el;\r\n            var styleCoord = this._styleCoord;\r\n            var offset = el.offsetHeight / 2;\r\n            nearPointColor = convertToColorString(nearPointColor);\r\n            el.style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide)\r\n                + ';left:' + styleCoord[0] + 'px;top:' + (styleCoord[1] - offset) + 'px;'\r\n                + (\"border-color: \" + nearPointColor + \";\")\r\n                + (tooltipModel.get('extraCssText') || '');\r\n            el.style.display = el.innerHTML ? 'block' : 'none';\r\n            el.style.pointerEvents = this._enterable ? 'auto' : 'none';\r\n            this._show = true;\r\n            this._firstShow = false;\r\n            this._longHide = false;\r\n        };\r\n        TooltipHTMLContent.prototype.setContent = function (content, markers, tooltipModel, borderColor, arrowPosition) {\r\n            if (content == null) {\r\n                return;\r\n            }\r\n            var el = this.el;\r\n            if (isString(arrowPosition) && tooltipModel.get('trigger') === 'item'\r\n                && !shouldTooltipConfine(tooltipModel)) {\r\n                content += assembleArrow(tooltipModel.get('backgroundColor'), borderColor, arrowPosition);\r\n            }\r\n            if (isString(content)) {\r\n                el.innerHTML = content;\r\n            }\r\n            else if (content) {\r\n                el.innerHTML = '';\r\n                if (!isArray(content)) {\r\n                    content = [content];\r\n                }\r\n                for (var i = 0; i < content.length; i++) {\r\n                    if (isDom(content[i]) && content[i].parentNode !== el) {\r\n                        el.appendChild(content[i]);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        TooltipHTMLContent.prototype.setEnterable = function (enterable) {\r\n            this._enterable = enterable;\r\n        };\r\n        TooltipHTMLContent.prototype.getSize = function () {\r\n            var el = this.el;\r\n            return [el.clientWidth, el.clientHeight];\r\n        };\r\n        TooltipHTMLContent.prototype.moveTo = function (zrX, zrY) {\r\n            var styleCoord = this._styleCoord;\r\n            makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\r\n            if (styleCoord[0] != null && styleCoord[1] != null) {\r\n                var style = this.el.style;\r\n                style.left = styleCoord[0].toFixed(0) + 'px';\r\n                style.top = styleCoord[1].toFixed(0) + 'px';\r\n            }\r\n        };\r\n        TooltipHTMLContent.prototype._moveIfResized = function () {\r\n            var ratioX = this._styleCoord[2];\r\n            var ratioY = this._styleCoord[3];\r\n            this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\r\n        };\r\n        TooltipHTMLContent.prototype.hide = function () {\r\n            var _this = this;\r\n            this.el.style.visibility = 'hidden';\r\n            this.el.style.opacity = '0';\r\n            this._show = false;\r\n            this._longHideTimeout = setTimeout(function () { return _this._longHide = true; }, 500);\r\n        };\r\n        TooltipHTMLContent.prototype.hideLater = function (time) {\r\n            if (this._show && !(this._inContent && this._enterable)) {\r\n                if (time) {\r\n                    this._hideDelay = time;\r\n                    this._show = false;\r\n                    this._hideTimeout = setTimeout(bind(this.hide, this), time);\r\n                }\r\n                else {\r\n                    this.hide();\r\n                }\r\n            }\r\n        };\r\n        TooltipHTMLContent.prototype.isShow = function () {\r\n            return this._show;\r\n        };\r\n        TooltipHTMLContent.prototype.dispose = function () {\r\n            this.el.parentNode.removeChild(this.el);\r\n        };\r\n        TooltipHTMLContent.prototype.getOuterSize = function () {\r\n            var width = this.el.clientWidth;\r\n            var height = this.el.clientHeight;\r\n            if (document.defaultView && document.defaultView.getComputedStyle) {\r\n                var stl = document.defaultView.getComputedStyle(this.el);\r\n                if (stl) {\r\n                    width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\r\n                    height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\r\n                }\r\n            }\r\n            return { width: width, height: height };\r\n        };\r\n        return TooltipHTMLContent;\r\n    }());\n\n    var TooltipRichContent = (function () {\r\n        function TooltipRichContent(api) {\r\n            this._show = false;\r\n            this._styleCoord = [0, 0, 0, 0];\r\n            this._enterable = true;\r\n            this._zr = api.getZr();\r\n            makeStyleCoord$1(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);\r\n        }\r\n        TooltipRichContent.prototype.update = function (tooltipModel) {\r\n            var alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n            alwaysShowContent && this._moveIfResized();\r\n        };\r\n        TooltipRichContent.prototype.show = function () {\r\n            if (this._hideTimeout) {\r\n                clearTimeout(this._hideTimeout);\r\n            }\r\n            this.el.show();\r\n            this._show = true;\r\n        };\r\n        TooltipRichContent.prototype.setContent = function (content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {\r\n            if (isObject(content)) {\r\n                throwError(__DEV__ ? 'Passing DOM nodes as content is not supported in richText tooltip!' : '');\r\n            }\r\n            if (this.el) {\r\n                this._zr.remove(this.el);\r\n            }\r\n            var textStyleModel = tooltipModel.getModel('textStyle');\r\n            this.el = new ZRText({\r\n                style: {\r\n                    rich: markupStyleCreator.richTextStyles,\r\n                    text: content,\r\n                    lineHeight: 22,\r\n                    backgroundColor: tooltipModel.get('backgroundColor'),\r\n                    borderRadius: tooltipModel.get('borderRadius'),\r\n                    borderWidth: 1,\r\n                    borderColor: borderColor,\r\n                    shadowColor: tooltipModel.get('shadowColor'),\r\n                    shadowBlur: tooltipModel.get('shadowBlur'),\r\n                    shadowOffsetX: tooltipModel.get('shadowOffsetX'),\r\n                    shadowOffsetY: tooltipModel.get('shadowOffsetY'),\r\n                    textShadowColor: textStyleModel.get('textShadowColor'),\r\n                    textShadowBlur: textStyleModel.get('textShadowBlur') || 0,\r\n                    textShadowOffsetX: textStyleModel.get('textShadowOffsetX') || 0,\r\n                    textShadowOffsetY: textStyleModel.get('textShadowOffsetY') || 0,\r\n                    fill: tooltipModel.get(['textStyle', 'color']),\r\n                    padding: getPaddingFromTooltipModel(tooltipModel, 'richText'),\r\n                    verticalAlign: 'top',\r\n                    align: 'left'\r\n                },\r\n                z: tooltipModel.get('z')\r\n            });\r\n            this._zr.add(this.el);\r\n            var self = this;\r\n            this.el.on('mouseover', function () {\r\n                if (self._enterable) {\r\n                    clearTimeout(self._hideTimeout);\r\n                    self._show = true;\r\n                }\r\n                self._inContent = true;\r\n            });\r\n            this.el.on('mouseout', function () {\r\n                if (self._enterable) {\r\n                    if (self._show) {\r\n                        self.hideLater(self._hideDelay);\r\n                    }\r\n                }\r\n                self._inContent = false;\r\n            });\r\n        };\r\n        TooltipRichContent.prototype.setEnterable = function (enterable) {\r\n            this._enterable = enterable;\r\n        };\r\n        TooltipRichContent.prototype.getSize = function () {\r\n            var el = this.el;\r\n            var bounding = this.el.getBoundingRect();\r\n            var shadowOuterSize = calcShadowOuterSize(el.style);\r\n            return [\r\n                bounding.width + shadowOuterSize.left + shadowOuterSize.right,\r\n                bounding.height + shadowOuterSize.top + shadowOuterSize.bottom\r\n            ];\r\n        };\r\n        TooltipRichContent.prototype.moveTo = function (x, y) {\r\n            var el = this.el;\r\n            if (el) {\r\n                var styleCoord = this._styleCoord;\r\n                makeStyleCoord$1(styleCoord, this._zr, x, y);\r\n                x = styleCoord[0];\r\n                y = styleCoord[1];\r\n                var style = el.style;\r\n                var borderWidth = mathMaxWith0(style.borderWidth || 0);\r\n                var shadowOuterSize = calcShadowOuterSize(style);\r\n                el.x = x + borderWidth + shadowOuterSize.left;\r\n                el.y = y + borderWidth + shadowOuterSize.top;\r\n                el.markRedraw();\r\n            }\r\n        };\r\n        TooltipRichContent.prototype._moveIfResized = function () {\r\n            var ratioX = this._styleCoord[2];\r\n            var ratioY = this._styleCoord[3];\r\n            this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\r\n        };\r\n        TooltipRichContent.prototype.hide = function () {\r\n            if (this.el) {\r\n                this.el.hide();\r\n            }\r\n            this._show = false;\r\n        };\r\n        TooltipRichContent.prototype.hideLater = function (time) {\r\n            if (this._show && !(this._inContent && this._enterable)) {\r\n                if (time) {\r\n                    this._hideDelay = time;\r\n                    this._show = false;\r\n                    this._hideTimeout = setTimeout(bind(this.hide, this), time);\r\n                }\r\n                else {\r\n                    this.hide();\r\n                }\r\n            }\r\n        };\r\n        TooltipRichContent.prototype.isShow = function () {\r\n            return this._show;\r\n        };\r\n        TooltipRichContent.prototype.getOuterSize = function () {\r\n            var size = this.getSize();\r\n            return {\r\n                width: size[0],\r\n                height: size[1]\r\n            };\r\n        };\r\n        TooltipRichContent.prototype.dispose = function () {\r\n            this._zr.remove(this.el);\r\n        };\r\n        return TooltipRichContent;\r\n    }());\r\n    function mathMaxWith0(val) {\r\n        return Math.max(0, val);\r\n    }\r\n    function calcShadowOuterSize(style) {\r\n        var shadowBlur = mathMaxWith0(style.shadowBlur || 0);\r\n        var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0);\r\n        var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0);\r\n        return {\r\n            left: mathMaxWith0(shadowBlur - shadowOffsetX),\r\n            right: mathMaxWith0(shadowBlur + shadowOffsetX),\r\n            top: mathMaxWith0(shadowBlur - shadowOffsetY),\r\n            bottom: mathMaxWith0(shadowBlur + shadowOffsetY)\r\n        };\r\n    }\r\n    function makeStyleCoord$1(out, zr, zrX, zrY) {\r\n        out[0] = zrX;\r\n        out[1] = zrY;\r\n        out[2] = out[0] / zr.getWidth();\r\n        out[3] = out[1] / zr.getHeight();\r\n    }\n\n    var bind$2 = bind;\r\n    var each$c = each;\r\n    var parsePercent$3 = parsePercent$2;\r\n    var proxyRect = new Rect({\r\n        shape: { x: -1, y: -1, width: 2, height: 2 }\r\n    });\r\n    var TooltipView = (function (_super) {\r\n        __extends(TooltipView, _super);\r\n        function TooltipView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TooltipView.type;\r\n            return _this;\r\n        }\r\n        TooltipView.prototype.init = function (ecModel, api) {\r\n            if (env.node) {\r\n                return;\r\n            }\r\n            var tooltipModel = ecModel.getComponent('tooltip');\r\n            var renderMode = tooltipModel.get('renderMode');\r\n            this._renderMode = getTooltipRenderMode(renderMode);\r\n            this._tooltipContent = this._renderMode === 'richText'\r\n                ? new TooltipRichContent(api)\r\n                : new TooltipHTMLContent(api.getDom(), api, {\r\n                    appendToBody: tooltipModel.get('appendToBody', true)\r\n                });\r\n        };\r\n        TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\r\n            if (env.node) {\r\n                return;\r\n            }\r\n            this.group.removeAll();\r\n            this._tooltipModel = tooltipModel;\r\n            this._ecModel = ecModel;\r\n            this._api = api;\r\n            this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n            var tooltipContent = this._tooltipContent;\r\n            tooltipContent.update(tooltipModel);\r\n            tooltipContent.setEnterable(tooltipModel.get('enterable'));\r\n            this._initGlobalListener();\r\n            this._keepShow();\r\n        };\r\n        TooltipView.prototype._initGlobalListener = function () {\r\n            var tooltipModel = this._tooltipModel;\r\n            var triggerOn = tooltipModel.get('triggerOn');\r\n            register('itemTooltip', this._api, bind$2(function (currTrigger, e, dispatchAction) {\r\n                if (triggerOn !== 'none') {\r\n                    if (triggerOn.indexOf(currTrigger) >= 0) {\r\n                        this._tryShow(e, dispatchAction);\r\n                    }\r\n                    else if (currTrigger === 'leave') {\r\n                        this._hide(dispatchAction);\r\n                    }\r\n                }\r\n            }, this));\r\n        };\r\n        TooltipView.prototype._keepShow = function () {\r\n            var tooltipModel = this._tooltipModel;\r\n            var ecModel = this._ecModel;\r\n            var api = this._api;\r\n            if (this._lastX != null\r\n                && this._lastY != null\r\n                && tooltipModel.get('triggerOn') !== 'none') {\r\n                var self_1 = this;\r\n                clearTimeout(this._refreshUpdateTimeout);\r\n                this._refreshUpdateTimeout = setTimeout(function () {\r\n                    !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\r\n                        x: self_1._lastX,\r\n                        y: self_1._lastY,\r\n                        dataByCoordSys: self_1._lastDataByCoordSys\r\n                    });\r\n                });\r\n            }\r\n        };\r\n        TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\r\n            if (payload.from === this.uid || env.node) {\r\n                return;\r\n            }\r\n            var dispatchAction = makeDispatchAction$1(payload, api);\r\n            this._ticket = '';\r\n            var dataByCoordSys = payload.dataByCoordSys;\r\n            if (payload.tooltip && payload.x != null && payload.y != null) {\r\n                var el = proxyRect;\r\n                el.x = payload.x;\r\n                el.y = payload.y;\r\n                el.update();\r\n                el.tooltip = payload.tooltip;\r\n                this._tryShow({\r\n                    offsetX: payload.x,\r\n                    offsetY: payload.y,\r\n                    target: el\r\n                }, dispatchAction);\r\n            }\r\n            else if (dataByCoordSys) {\r\n                this._tryShow({\r\n                    offsetX: payload.x,\r\n                    offsetY: payload.y,\r\n                    position: payload.position,\r\n                    dataByCoordSys: dataByCoordSys,\r\n                    tooltipOption: payload.tooltipOption\r\n                }, dispatchAction);\r\n            }\r\n            else if (payload.seriesIndex != null) {\r\n                if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\r\n                    return;\r\n                }\r\n                var pointInfo = findPointFromSeries(payload, ecModel);\r\n                var cx = pointInfo.point[0];\r\n                var cy = pointInfo.point[1];\r\n                if (cx != null && cy != null) {\r\n                    this._tryShow({\r\n                        offsetX: cx,\r\n                        offsetY: cy,\r\n                        position: payload.position,\r\n                        target: pointInfo.el\r\n                    }, dispatchAction);\r\n                }\r\n            }\r\n            else if (payload.x != null && payload.y != null) {\r\n                api.dispatchAction({\r\n                    type: 'updateAxisPointer',\r\n                    x: payload.x,\r\n                    y: payload.y\r\n                });\r\n                this._tryShow({\r\n                    offsetX: payload.x,\r\n                    offsetY: payload.y,\r\n                    position: payload.position,\r\n                    target: api.getZr().findHover(payload.x, payload.y).target\r\n                }, dispatchAction);\r\n            }\r\n        };\r\n        TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\r\n            var tooltipContent = this._tooltipContent;\r\n            if (!this._alwaysShowContent && this._tooltipModel) {\r\n                tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\r\n            }\r\n            this._lastX = this._lastY = this._lastDataByCoordSys = null;\r\n            if (payload.from !== this.uid) {\r\n                this._hide(makeDispatchAction$1(payload, api));\r\n            }\r\n        };\r\n        TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\r\n            var seriesIndex = payload.seriesIndex;\r\n            var dataIndex = payload.dataIndex;\r\n            var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\r\n            if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\r\n                return;\r\n            }\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            if (!seriesModel) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var tooltipCascadedModel = buildTooltipModel([\r\n                data.getItemModel(dataIndex),\r\n                seriesModel,\r\n                (seriesModel.coordinateSystem || {}).model,\r\n                tooltipModel\r\n            ]);\r\n            if (tooltipCascadedModel.get('trigger') !== 'axis') {\r\n                return;\r\n            }\r\n            api.dispatchAction({\r\n                type: 'updateAxisPointer',\r\n                seriesIndex: seriesIndex,\r\n                dataIndex: dataIndex,\r\n                position: payload.position\r\n            });\r\n            return true;\r\n        };\r\n        TooltipView.prototype._tryShow = function (e, dispatchAction) {\r\n            var el = e.target;\r\n            var tooltipModel = this._tooltipModel;\r\n            if (!tooltipModel) {\r\n                return;\r\n            }\r\n            this._lastX = e.offsetX;\r\n            this._lastY = e.offsetY;\r\n            var dataByCoordSys = e.dataByCoordSys;\r\n            if (dataByCoordSys && dataByCoordSys.length) {\r\n                this._showAxisTooltip(dataByCoordSys, e);\r\n            }\r\n            else if (el && findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; })) {\r\n                this._lastDataByCoordSys = null;\r\n                this._showSeriesItemTooltip(e, el, dispatchAction);\r\n            }\r\n            else if (el && el.tooltip) {\r\n                this._lastDataByCoordSys = null;\r\n                this._showComponentItemTooltip(e, el, dispatchAction);\r\n            }\r\n            else {\r\n                this._lastDataByCoordSys = null;\r\n                this._hide(dispatchAction);\r\n            }\r\n        };\r\n        TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\r\n            var delay = tooltipModel.get('showDelay');\r\n            cb = bind(cb, this);\r\n            clearTimeout(this._showTimout);\r\n            delay > 0\r\n                ? (this._showTimout = setTimeout(cb, delay))\r\n                : cb();\r\n        };\r\n        TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\r\n            var ecModel = this._ecModel;\r\n            var globalTooltipModel = this._tooltipModel;\r\n            var point = [e.offsetX, e.offsetY];\r\n            var singleTooltipModel = buildTooltipModel([\r\n                e.tooltipOption,\r\n                globalTooltipModel\r\n            ]);\r\n            var renderMode = this._renderMode;\r\n            var cbParamsList = [];\r\n            var articleMarkup = createTooltipMarkup('section', {\r\n                blocks: [],\r\n                noHeader: true\r\n            });\r\n            var markupTextArrLegacy = [];\r\n            var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n            each$c(dataByCoordSys, function (itemCoordSys) {\r\n                each$c(itemCoordSys.dataByAxis, function (axisItem) {\r\n                    var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex);\r\n                    var axisValue = axisItem.value;\r\n                    if (!axisModel || axisValue == null) {\r\n                        return;\r\n                    }\r\n                    var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);\r\n                    var axisSectionMarkup = createTooltipMarkup('section', {\r\n                        header: axisValueLabel,\r\n                        noHeader: !trim(axisValueLabel),\r\n                        sortBlocks: true,\r\n                        blocks: []\r\n                    });\r\n                    articleMarkup.blocks.push(axisSectionMarkup);\r\n                    each(axisItem.seriesDataIndices, function (idxItem) {\r\n                        var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\r\n                        var dataIndex = idxItem.dataIndexInside;\r\n                        var cbParams = series.getDataParams(dataIndex);\r\n                        cbParams.axisDim = axisItem.axisDim;\r\n                        cbParams.axisIndex = axisItem.axisIndex;\r\n                        cbParams.axisType = axisItem.axisType;\r\n                        cbParams.axisId = axisItem.axisId;\r\n                        cbParams.axisValue = getAxisRawValue(axisModel.axis, { value: axisValue });\r\n                        cbParams.axisValueLabel = axisValueLabel;\r\n                        cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode);\r\n                        var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));\r\n                        if (seriesTooltipResult.markupFragment) {\r\n                            axisSectionMarkup.blocks.push(seriesTooltipResult.markupFragment);\r\n                        }\r\n                        if (seriesTooltipResult.markupText) {\r\n                            markupTextArrLegacy.push(seriesTooltipResult.markupText);\r\n                        }\r\n                        cbParamsList.push(cbParams);\r\n                    });\r\n                });\r\n            });\r\n            articleMarkup.blocks.reverse();\r\n            markupTextArrLegacy.reverse();\r\n            var positionExpr = e.position;\r\n            var orderMode = singleTooltipModel.get('order');\r\n            var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'));\r\n            builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);\r\n            var blockBreak = renderMode === 'richText' ? '\\n\\n' : '<br/>';\r\n            var allMarkupText = markupTextArrLegacy.join(blockBreak);\r\n            this._showOrMove(singleTooltipModel, function () {\r\n                if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\r\n                    this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);\r\n                }\r\n                else {\r\n                    this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator);\r\n                }\r\n            });\r\n        };\r\n        TooltipView.prototype._showSeriesItemTooltip = function (e, el, dispatchAction) {\r\n            var dispatcher = findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; });\r\n            var ecModel = this._ecModel;\r\n            var ecData = getECData(dispatcher);\r\n            var seriesIndex = ecData.seriesIndex;\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            var dataModel = ecData.dataModel || seriesModel;\r\n            var dataIndex = ecData.dataIndex;\r\n            var dataType = ecData.dataType;\r\n            var data = dataModel.getData(dataType);\r\n            var renderMode = this._renderMode;\r\n            var tooltipModel = buildTooltipModel([\r\n                data.getItemModel(dataIndex),\r\n                dataModel,\r\n                seriesModel && (seriesModel.coordinateSystem || {}).model,\r\n                this._tooltipModel\r\n            ]);\r\n            var tooltipTrigger = tooltipModel.get('trigger');\r\n            if (tooltipTrigger != null && tooltipTrigger !== 'item') {\r\n                return;\r\n            }\r\n            var params = dataModel.getDataParams(dataIndex, dataType);\r\n            var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n            params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode);\r\n            var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));\r\n            var orderMode = tooltipModel.get('order');\r\n            var markupText = seriesTooltipResult.markupFragment\r\n                ? buildTooltipMarkup(seriesTooltipResult.markupFragment, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'))\r\n                : seriesTooltipResult.markupText;\r\n            var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\r\n            this._showOrMove(tooltipModel, function () {\r\n                this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator);\r\n            });\r\n            dispatchAction({\r\n                type: 'showTip',\r\n                dataIndexInside: dataIndex,\r\n                dataIndex: data.getRawIndex(dataIndex),\r\n                seriesIndex: seriesIndex,\r\n                from: this.uid\r\n            });\r\n        };\r\n        TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) {\r\n            var tooltipOpt = el.tooltip;\r\n            if (isString(tooltipOpt)) {\r\n                var content = tooltipOpt;\r\n                tooltipOpt = {\r\n                    content: content,\r\n                    formatter: content\r\n                };\r\n            }\r\n            var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\r\n            var defaultHtml = subTooltipModel.get('content');\r\n            var asyncTicket = Math.random() + '';\r\n            var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n            this._showOrMove(subTooltipModel, function () {\r\n                this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator);\r\n            });\r\n            dispatchAction({\r\n                type: 'showTip',\r\n                from: this.uid\r\n            });\r\n        };\r\n        TooltipView.prototype._showTooltipContent = function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {\r\n            this._ticket = '';\r\n            if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\r\n                return;\r\n            }\r\n            var tooltipContent = this._tooltipContent;\r\n            var formatter = tooltipModel.get('formatter');\r\n            positionExpr = positionExpr || tooltipModel.get('position');\r\n            var html = defaultHtml;\r\n            var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'));\r\n            if (formatter && isString(formatter)) {\r\n                var useUTC = tooltipModel.ecModel.get('useUTC');\r\n                var params0 = isArray(params) ? params[0] : params;\r\n                var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0;\r\n                html = formatter;\r\n                if (isTimeAxis) {\r\n                    html = format(params0.axisValue, html, useUTC);\r\n                }\r\n                html = formatTpl(html, params, true);\r\n            }\r\n            else if (isFunction(formatter)) {\r\n                var callback = bind$2(function (cbTicket, html) {\r\n                    if (cbTicket === this._ticket) {\r\n                        tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPoint.color, positionExpr);\r\n                        this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\r\n                    }\r\n                }, this);\r\n                this._ticket = asyncTicket;\r\n                html = formatter(params, asyncTicket, callback);\r\n            }\r\n            tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPoint.color, positionExpr);\r\n            tooltipContent.show(tooltipModel, nearPoint.color);\r\n            this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\r\n        };\r\n        TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger) {\r\n            if (trigger === 'axis' || isArray(tooltipDataParams)) {\r\n                return {\r\n                    color: this._renderMode === 'html' ? '#fff' : 'none'\r\n                };\r\n            }\r\n            if (!isArray(tooltipDataParams)) {\r\n                return {\r\n                    color: tooltipDataParams.color || tooltipDataParams.borderColor\r\n                };\r\n            }\r\n        };\r\n        TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, y, content, params, el) {\r\n            var viewWidth = this._api.getWidth();\r\n            var viewHeight = this._api.getHeight();\r\n            positionExpr = positionExpr || tooltipModel.get('position');\r\n            var contentSize = content.getSize();\r\n            var align = tooltipModel.get('align');\r\n            var vAlign = tooltipModel.get('verticalAlign');\r\n            var rect = el && el.getBoundingRect().clone();\r\n            el && rect.applyTransform(el.transform);\r\n            if (isFunction(positionExpr)) {\r\n                positionExpr = positionExpr([x, y], params, content.el, rect, {\r\n                    viewSize: [viewWidth, viewHeight],\r\n                    contentSize: contentSize.slice()\r\n                });\r\n            }\r\n            if (isArray(positionExpr)) {\r\n                x = parsePercent$3(positionExpr[0], viewWidth);\r\n                y = parsePercent$3(positionExpr[1], viewHeight);\r\n            }\r\n            else if (isObject(positionExpr)) {\r\n                var boxLayoutPosition = positionExpr;\r\n                boxLayoutPosition.width = contentSize[0];\r\n                boxLayoutPosition.height = contentSize[1];\r\n                var layoutRect = getLayoutRect(boxLayoutPosition, { width: viewWidth, height: viewHeight });\r\n                x = layoutRect.x;\r\n                y = layoutRect.y;\r\n                align = null;\r\n                vAlign = null;\r\n            }\r\n            else if (isString(positionExpr) && el) {\r\n                var pos = calcTooltipPosition(positionExpr, rect, contentSize);\r\n                x = pos[0];\r\n                y = pos[1];\r\n            }\r\n            else {\r\n                var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\r\n                x = pos[0];\r\n                y = pos[1];\r\n            }\r\n            align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\r\n            vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\r\n            if (shouldTooltipConfine(tooltipModel)) {\r\n                var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\r\n                x = pos[0];\r\n                y = pos[1];\r\n            }\r\n            content.moveTo(x, y);\r\n        };\r\n        TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys) {\r\n            var lastCoordSys = this._lastDataByCoordSys;\r\n            var contentNotChanged = !!lastCoordSys\r\n                && lastCoordSys.length === dataByCoordSys.length;\r\n            contentNotChanged && each$c(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\r\n                var lastDataByAxis = lastItemCoordSys.dataByAxis || [];\r\n                var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\r\n                var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\r\n                contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;\r\n                contentNotChanged && each$c(lastDataByAxis, function (lastItem, indexAxis) {\r\n                    var thisItem = thisDataByAxis[indexAxis] || {};\r\n                    var lastIndices = lastItem.seriesDataIndices || [];\r\n                    var newIndices = thisItem.seriesDataIndices || [];\r\n                    contentNotChanged = contentNotChanged\r\n                        && lastItem.value === thisItem.value\r\n                        && lastItem.axisType === thisItem.axisType\r\n                        && lastItem.axisId === thisItem.axisId\r\n                        && lastIndices.length === newIndices.length;\r\n                    contentNotChanged && each$c(lastIndices, function (lastIdxItem, j) {\r\n                        var newIdxItem = newIndices[j];\r\n                        contentNotChanged = contentNotChanged\r\n                            && lastIdxItem.seriesIndex === newIdxItem.seriesIndex\r\n                            && lastIdxItem.dataIndex === newIdxItem.dataIndex;\r\n                    });\r\n                });\r\n            });\r\n            this._lastDataByCoordSys = dataByCoordSys;\r\n            return !!contentNotChanged;\r\n        };\r\n        TooltipView.prototype._hide = function (dispatchAction) {\r\n            this._lastDataByCoordSys = null;\r\n            dispatchAction({\r\n                type: 'hideTip',\r\n                from: this.uid\r\n            });\r\n        };\r\n        TooltipView.prototype.dispose = function (ecModel, api) {\r\n            if (env.node) {\r\n                return;\r\n            }\r\n            this._tooltipContent.dispose();\r\n            unregister('itemTooltip', api);\r\n        };\r\n        TooltipView.type = 'tooltip';\r\n        return TooltipView;\r\n    }(ComponentView));\r\n    function buildTooltipModel(modelCascade) {\r\n        var resultModel = modelCascade.pop();\r\n        while (modelCascade.length) {\r\n            var tooltipOpt = modelCascade.pop();\r\n            if (tooltipOpt) {\r\n                if (tooltipOpt instanceof Model) {\r\n                    tooltipOpt = tooltipOpt.get('tooltip', true);\r\n                }\r\n                if (isString(tooltipOpt)) {\r\n                    tooltipOpt = {\r\n                        formatter: tooltipOpt\r\n                    };\r\n                }\r\n                resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\r\n            }\r\n        }\r\n        return resultModel;\r\n    }\r\n    function makeDispatchAction$1(payload, api) {\r\n        return payload.dispatchAction || bind(api.dispatchAction, api);\r\n    }\r\n    function refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\r\n        var size = content.getOuterSize();\r\n        var width = size.width;\r\n        var height = size.height;\r\n        if (gapH != null) {\r\n            if (x + width + gapH + 2 > viewWidth) {\r\n                x -= width + gapH;\r\n            }\r\n            else {\r\n                x += gapH;\r\n            }\r\n        }\r\n        if (gapV != null) {\r\n            if (y + height + gapV > viewHeight) {\r\n                y -= height + gapV;\r\n            }\r\n            else {\r\n                y += gapV;\r\n            }\r\n        }\r\n        return [x, y];\r\n    }\r\n    function confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\r\n        var size = content.getOuterSize();\r\n        var width = size.width;\r\n        var height = size.height;\r\n        x = Math.min(x + width, viewWidth) - width;\r\n        y = Math.min(y + height, viewHeight) - height;\r\n        x = Math.max(x, 0);\r\n        y = Math.max(y, 0);\r\n        return [x, y];\r\n    }\r\n    function calcTooltipPosition(position, rect, contentSize) {\r\n        var domWidth = contentSize[0];\r\n        var domHeight = contentSize[1];\r\n        var gap = 10;\r\n        var offset = 5;\r\n        var x = 0;\r\n        var y = 0;\r\n        var rectWidth = rect.width;\r\n        var rectHeight = rect.height;\r\n        switch (position) {\r\n            case 'inside':\r\n                x = rect.x + rectWidth / 2 - domWidth / 2;\r\n                y = rect.y + rectHeight / 2 - domHeight / 2;\r\n                break;\r\n            case 'top':\r\n                x = rect.x + rectWidth / 2 - domWidth / 2;\r\n                y = rect.y - domHeight - gap;\r\n                break;\r\n            case 'bottom':\r\n                x = rect.x + rectWidth / 2 - domWidth / 2;\r\n                y = rect.y + rectHeight + gap;\r\n                break;\r\n            case 'left':\r\n                x = rect.x - domWidth - gap - offset;\r\n                y = rect.y + rectHeight / 2 - domHeight / 2;\r\n                break;\r\n            case 'right':\r\n                x = rect.x + rectWidth + gap + offset;\r\n                y = rect.y + rectHeight / 2 - domHeight / 2;\r\n        }\r\n        return [x, y];\r\n    }\r\n    function isCenterAlign(align) {\r\n        return align === 'center' || align === 'middle';\r\n    }\r\n    ComponentView.registerClass(TooltipView);\n\n    registerAction({\r\n        type: 'showTip',\r\n        event: 'showTip',\r\n        update: 'tooltip:manuallyShowTip'\r\n    }, function () { });\r\n    registerAction({\r\n        type: 'hideTip',\r\n        event: 'hideTip',\r\n        update: 'tooltip:manuallyHideTip'\r\n    }, function () { });\n\n    var DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\r\n    function brushPreprocessor(option, isNew) {\r\n        var brushComponents = normalizeToArray(option ? option.brush : []);\r\n        if (!brushComponents.length) {\r\n            return;\r\n        }\r\n        var brushComponentSpecifiedBtns = [];\r\n        each(brushComponents, function (brushOpt) {\r\n            var tbs = brushOpt.hasOwnProperty('toolbox')\r\n                ? brushOpt.toolbox : [];\r\n            if (tbs instanceof Array) {\r\n                brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\r\n            }\r\n        });\r\n        var toolbox = option && option.toolbox;\r\n        if (isArray(toolbox)) {\r\n            toolbox = toolbox[0];\r\n        }\r\n        if (!toolbox) {\r\n            toolbox = { feature: {} };\r\n            option.toolbox = [toolbox];\r\n        }\r\n        var toolboxFeature = (toolbox.feature || (toolbox.feature = {}));\r\n        var toolboxBrush = (toolboxFeature.brush || (toolboxFeature.brush = {}));\r\n        var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\r\n        brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\r\n        removeDuplicate(brushTypes);\r\n        if (isNew && !brushTypes.length) {\r\n            brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\r\n        }\r\n    }\r\n    function removeDuplicate(arr) {\r\n        var map = {};\r\n        each(arr, function (val) {\r\n            map[val] = 1;\r\n        });\r\n        arr.length = 0;\r\n        each(map, function (flag, val) {\r\n            arr.push(val);\r\n        });\r\n    }\n\n    var each$d = each;\r\n    function hasKeys(obj) {\r\n        if (obj) {\r\n            for (var name_1 in obj) {\r\n                if (obj.hasOwnProperty(name_1)) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function createVisualMappings(option, stateList, supplementVisualOption) {\r\n        var visualMappings = {};\r\n        each$d(stateList, function (state) {\r\n            var mappings = visualMappings[state] = createMappings();\r\n            each$d(option[state], function (visualData, visualType) {\r\n                if (!VisualMapping.isValidType(visualType)) {\r\n                    return;\r\n                }\r\n                var mappingOption = {\r\n                    type: visualType,\r\n                    visual: visualData\r\n                };\r\n                supplementVisualOption && supplementVisualOption(mappingOption, state);\r\n                mappings[visualType] = new VisualMapping(mappingOption);\r\n                if (visualType === 'opacity') {\r\n                    mappingOption = clone(mappingOption);\r\n                    mappingOption.type = 'colorAlpha';\r\n                    mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\r\n                }\r\n            });\r\n        });\r\n        return visualMappings;\r\n        function createMappings() {\r\n            var Creater = function () { };\r\n            Creater.prototype.__hidden = Creater.prototype;\r\n            var obj = new Creater();\r\n            return obj;\r\n        }\r\n    }\r\n    function replaceVisualOption(thisOption, newOption, keys) {\r\n        var has;\r\n        each(keys, function (key) {\r\n            if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\r\n                has = true;\r\n            }\r\n        });\r\n        has && each(keys, function (key) {\r\n            if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\r\n                thisOption[key] = clone(newOption[key]);\r\n            }\r\n            else {\r\n                delete thisOption[key];\r\n            }\r\n        });\r\n    }\r\n    function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\r\n        var visualTypesMap = {};\r\n        each(stateList, function (state) {\r\n            var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\r\n            visualTypesMap[state] = visualTypes;\r\n        });\r\n        var dataIndex;\r\n        function getVisual(key) {\r\n            return getItemVisualFromData(data, dataIndex, key);\r\n        }\r\n        function setVisual(key, value) {\r\n            setItemVisualFromData(data, dataIndex, key, value);\r\n        }\r\n        if (dimension == null) {\r\n            data.each(eachItem);\r\n        }\r\n        else {\r\n            data.each([dimension], eachItem);\r\n        }\r\n        function eachItem(valueOrIndex, index) {\r\n            dataIndex = dimension == null\r\n                ? valueOrIndex\r\n                : index;\r\n            var rawDataItem = data.getRawDataItem(dataIndex);\r\n            if (rawDataItem && rawDataItem.visualMap === false) {\r\n                return;\r\n            }\r\n            var valueState = getValueState.call(scope, valueOrIndex);\r\n            var mappings = visualMappings[valueState];\r\n            var visualTypes = visualTypesMap[valueState];\r\n            for (var i = 0, len = visualTypes.length; i < len; i++) {\r\n                var type = visualTypes[i];\r\n                mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\r\n            }\r\n        }\r\n    }\r\n    function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\r\n        var visualTypesMap = {};\r\n        each(stateList, function (state) {\r\n            var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\r\n            visualTypesMap[state] = visualTypes;\r\n        });\r\n        return {\r\n            progress: function progress(params, data) {\r\n                var dimName;\r\n                if (dim != null) {\r\n                    dimName = data.getDimension(dim);\r\n                }\r\n                function getVisual(key) {\r\n                    return getItemVisualFromData(data, dataIndex, key);\r\n                }\r\n                function setVisual(key, value) {\r\n                    setItemVisualFromData(data, dataIndex, key, value);\r\n                }\r\n                var dataIndex;\r\n                while ((dataIndex = params.next()) != null) {\r\n                    var rawDataItem = data.getRawDataItem(dataIndex);\r\n                    if (rawDataItem && rawDataItem.visualMap === false) {\r\n                        continue;\r\n                    }\r\n                    var value = dim != null\r\n                        ? data.get(dimName, dataIndex)\r\n                        : dataIndex;\r\n                    var valueState = getValueState(value);\r\n                    var mappings = visualMappings[valueState];\r\n                    var visualTypes = visualTypesMap[valueState];\r\n                    for (var i = 0, len = visualTypes.length; i < len; i++) {\r\n                        var type = visualTypes[i];\r\n                        mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\n\n    function makeBrushCommonSelectorForSeries(area) {\r\n        var brushType = area.brushType;\r\n        var selectors = {\r\n            point: function (itemLayout) {\r\n                return selector[brushType].point(itemLayout, selectors, area);\r\n            },\r\n            rect: function (itemLayout) {\r\n                return selector[brushType].rect(itemLayout, selectors, area);\r\n            }\r\n        };\r\n        return selectors;\r\n    }\r\n    var selector = {\r\n        lineX: getLineSelectors(0),\r\n        lineY: getLineSelectors(1),\r\n        rect: {\r\n            point: function (itemLayout, selectors, area) {\r\n                return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\r\n            },\r\n            rect: function (itemLayout, selectors, area) {\r\n                return itemLayout && area.boundingRect.intersect(itemLayout);\r\n            }\r\n        },\r\n        polygon: {\r\n            point: function (itemLayout, selectors, area) {\r\n                return itemLayout\r\n                    && area.boundingRect.contain(itemLayout[0], itemLayout[1])\r\n                    && contain$2(area.range, itemLayout[0], itemLayout[1]);\r\n            },\r\n            rect: function (itemLayout, selectors, area) {\r\n                var points = area.range;\r\n                if (!itemLayout || points.length <= 1) {\r\n                    return false;\r\n                }\r\n                var x = itemLayout.x;\r\n                var y = itemLayout.y;\r\n                var width = itemLayout.width;\r\n                var height = itemLayout.height;\r\n                var p = points[0];\r\n                if (contain$2(points, x, y)\r\n                    || contain$2(points, x + width, y)\r\n                    || contain$2(points, x, y + height)\r\n                    || contain$2(points, x + width, y + height)\r\n                    || BoundingRect.create(itemLayout).contain(p[0], p[1])\r\n                    || linePolygonIntersect(x, y, x + width, y, points)\r\n                    || linePolygonIntersect(x, y, x, y + height, points)\r\n                    || linePolygonIntersect(x + width, y, x + width, y + height, points)\r\n                    || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    function getLineSelectors(xyIndex) {\r\n        var xy = ['x', 'y'];\r\n        var wh = ['width', 'height'];\r\n        return {\r\n            point: function (itemLayout, selectors, area) {\r\n                if (itemLayout) {\r\n                    var range = area.range;\r\n                    var p = itemLayout[xyIndex];\r\n                    return inLineRange(p, range);\r\n                }\r\n            },\r\n            rect: function (itemLayout, selectors, area) {\r\n                if (itemLayout) {\r\n                    var range = area.range;\r\n                    var layoutRange = [\r\n                        itemLayout[xy[xyIndex]],\r\n                        itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]\r\n                    ];\r\n                    layoutRange[1] < layoutRange[0] && layoutRange.reverse();\r\n                    return inLineRange(layoutRange[0], range)\r\n                        || inLineRange(layoutRange[1], range)\r\n                        || inLineRange(range[0], layoutRange)\r\n                        || inLineRange(range[1], layoutRange);\r\n                }\r\n            }\r\n        };\r\n    }\r\n    function inLineRange(p, range) {\r\n        return range[0] <= p && p <= range[1];\r\n    }\n\n    var STATE_LIST = ['inBrush', 'outOfBrush'];\r\n    var DISPATCH_METHOD = '__ecBrushSelect';\r\n    var DISPATCH_FLAG = '__ecInBrushSelectEvent';\r\n    var PRIORITY_BRUSH = PRIORITY.VISUAL.BRUSH;\r\n    function layoutCovers(ecModel) {\r\n        ecModel.eachComponent({ mainType: 'brush' }, function (brushModel) {\r\n            var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\r\n            brushTargetManager.setInputRanges(brushModel.areas, ecModel);\r\n        });\r\n    }\r\n    registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\r\n        var brushSelected = [];\r\n        var throttleType;\r\n        var throttleDelay;\r\n        ecModel.eachComponent({ mainType: 'brush' }, function (brushModel) {\r\n            payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : { brushType: false });\r\n        });\r\n        layoutCovers(ecModel);\r\n        ecModel.eachComponent({ mainType: 'brush' }, function (brushModel, brushIndex) {\r\n            var thisBrushSelected = {\r\n                brushId: brushModel.id,\r\n                brushIndex: brushIndex,\r\n                brushName: brushModel.name,\r\n                areas: clone(brushModel.areas),\r\n                selected: []\r\n            };\r\n            brushSelected.push(thisBrushSelected);\r\n            var brushOption = brushModel.option;\r\n            var brushLink = brushOption.brushLink;\r\n            var linkedSeriesMap = [];\r\n            var selectedDataIndexForLink = [];\r\n            var rangeInfoBySeries = [];\r\n            var hasBrushExists = false;\r\n            if (!brushIndex) {\r\n                throttleType = brushOption.throttleType;\r\n                throttleDelay = brushOption.throttleDelay;\r\n            }\r\n            var areas = map(brushModel.areas, function (area) {\r\n                var builder = boundingRectBuilders[area.brushType];\r\n                var selectableArea = defaults({ boundingRect: builder ? builder(area) : void 0 }, area);\r\n                selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea);\r\n                return selectableArea;\r\n            });\r\n            var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\r\n                mappingOption.mappingMethod = 'fixed';\r\n            });\r\n            isArray(brushLink) && each(brushLink, function (seriesIndex) {\r\n                linkedSeriesMap[seriesIndex] = 1;\r\n            });\r\n            function linkOthers(seriesIndex) {\r\n                return brushLink === 'all' || !!linkedSeriesMap[seriesIndex];\r\n            }\r\n            function brushed(rangeInfoList) {\r\n                return !!rangeInfoList.length;\r\n            }\r\n            ecModel.eachSeries(function (seriesModel, seriesIndex) {\r\n                var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\r\n                seriesModel.subType === 'parallel'\r\n                    ? stepAParallel(seriesModel, seriesIndex)\r\n                    : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\r\n            });\r\n            function stepAParallel(seriesModel, seriesIndex) {\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed();\r\n                linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\r\n                    activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\r\n                });\r\n            }\r\n            function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\r\n                if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) {\r\n                    return;\r\n                }\r\n                each(areas, function (area) {\r\n                    if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) {\r\n                        rangeInfoList.push(area);\r\n                    }\r\n                    hasBrushExists = hasBrushExists || brushed(rangeInfoList);\r\n                });\r\n                if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\r\n                    var data_1 = seriesModel.getData();\r\n                    data_1.each(function (dataIndex) {\r\n                        if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) {\r\n                            selectedDataIndexForLink[dataIndex] = 1;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            ecModel.eachSeries(function (seriesModel, seriesIndex) {\r\n                var seriesBrushSelected = {\r\n                    seriesId: seriesModel.id,\r\n                    seriesIndex: seriesIndex,\r\n                    seriesName: seriesModel.name,\r\n                    dataIndex: []\r\n                };\r\n                thisBrushSelected.selected.push(seriesBrushSelected);\r\n                var rangeInfoList = rangeInfoBySeries[seriesIndex];\r\n                var data = seriesModel.getData();\r\n                var getValueState = linkOthers(seriesIndex)\r\n                    ? function (dataIndex) {\r\n                        return selectedDataIndexForLink[dataIndex]\r\n                            ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush')\r\n                            : 'outOfBrush';\r\n                    }\r\n                    : function (dataIndex) {\r\n                        return checkInRange(seriesModel, rangeInfoList, data, dataIndex)\r\n                            ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush')\r\n                            : 'outOfBrush';\r\n                    };\r\n                (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList))\r\n                    && applyVisual(STATE_LIST, visualMappings, data, getValueState);\r\n            });\r\n        });\r\n        dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\r\n    });\r\n    function dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\r\n        if (!payload) {\r\n            return;\r\n        }\r\n        var zr = api.getZr();\r\n        if (zr[DISPATCH_FLAG]) {\r\n            return;\r\n        }\r\n        if (!zr[DISPATCH_METHOD]) {\r\n            zr[DISPATCH_METHOD] = doDispatch;\r\n        }\r\n        var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\r\n        fn(api, brushSelected);\r\n    }\r\n    function doDispatch(api, brushSelected) {\r\n        if (!api.isDisposed()) {\r\n            var zr = api.getZr();\r\n            zr[DISPATCH_FLAG] = true;\r\n            api.dispatchAction({\r\n                type: 'brushSelect',\r\n                batch: brushSelected\r\n            });\r\n            zr[DISPATCH_FLAG] = false;\r\n        }\r\n    }\r\n    function checkInRange(seriesModel, rangeInfoList, data, dataIndex) {\r\n        for (var i = 0, len = rangeInfoList.length; i < len; i++) {\r\n            var area = rangeInfoList[i];\r\n            if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) {\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    function brushModelNotControll(brushModel, seriesIndex) {\r\n        var seriesIndices = brushModel.option.seriesIndex;\r\n        return seriesIndices != null\r\n            && seriesIndices !== 'all'\r\n            && (isArray(seriesIndices)\r\n                ? indexOf(seriesIndices, seriesIndex) < 0\r\n                : seriesIndex !== seriesIndices);\r\n    }\r\n    var boundingRectBuilders = {\r\n        rect: function (area) {\r\n            return getBoundingRectFromMinMax(area.range);\r\n        },\r\n        polygon: function (area) {\r\n            var minMax;\r\n            var range = area.range;\r\n            for (var i = 0, len = range.length; i < len; i++) {\r\n                minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\r\n                var rg = range[i];\r\n                rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\r\n                rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\r\n                rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\r\n                rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\r\n            }\r\n            return minMax && getBoundingRectFromMinMax(minMax);\r\n        }\r\n    };\r\n    function getBoundingRectFromMinMax(minMax) {\r\n        return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\r\n    }\n\n    var DEFAULT_OUT_OF_BRUSH_COLOR = '#ddd';\r\n    var BrushModel = (function (_super) {\r\n        __extends(BrushModel, _super);\r\n        function BrushModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BrushModel.type;\r\n            _this.areas = [];\r\n            _this.brushOption = {};\r\n            return _this;\r\n        }\r\n        BrushModel.prototype.optionUpdated = function (newOption, isInit) {\r\n            var thisOption = this.option;\r\n            !isInit && replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\r\n            var inBrush = thisOption.inBrush = thisOption.inBrush || {};\r\n            thisOption.outOfBrush = thisOption.outOfBrush || { color: DEFAULT_OUT_OF_BRUSH_COLOR };\r\n            if (!inBrush.hasOwnProperty('liftZ')) {\r\n                inBrush.liftZ = 5;\r\n            }\r\n        };\r\n        BrushModel.prototype.setAreas = function (areas) {\r\n            if (__DEV__) {\r\n                assert(isArray(areas));\r\n                each(areas, function (area) {\r\n                    assert(area.brushType, 'Illegal areas');\r\n                });\r\n            }\r\n            if (!areas) {\r\n                return;\r\n            }\r\n            this.areas = map(areas, function (area) {\r\n                return generateBrushOption(this.option, area);\r\n            }, this);\r\n        };\r\n        BrushModel.prototype.setBrushOption = function (brushOption) {\r\n            this.brushOption = generateBrushOption(this.option, brushOption);\r\n            this.brushType = this.brushOption.brushType;\r\n        };\r\n        BrushModel.type = 'brush';\r\n        BrushModel.dependencies = ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'];\r\n        BrushModel.defaultOption = {\r\n            seriesIndex: 'all',\r\n            brushType: 'rect',\r\n            brushMode: 'single',\r\n            transformable: true,\r\n            brushStyle: {\r\n                borderWidth: 1,\r\n                color: 'rgba(210,219,238,0.3)',\r\n                borderColor: '#D2DBEE'\r\n            },\r\n            throttleType: 'fixRate',\r\n            throttleDelay: 0,\r\n            removeOnClick: true,\r\n            z: 10000\r\n        };\r\n        return BrushModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(BrushModel);\r\n    function generateBrushOption(option, brushOption) {\r\n        return merge({\r\n            brushType: option.brushType,\r\n            brushMode: option.brushMode,\r\n            transformable: option.transformable,\r\n            brushStyle: new Model(option.brushStyle).getItemStyle(),\r\n            removeOnClick: option.removeOnClick,\r\n            z: option.z\r\n        }, brushOption, true);\r\n    }\n\n    var BrushView = (function (_super) {\r\n        __extends(BrushView, _super);\r\n        function BrushView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BrushView.type;\r\n            return _this;\r\n        }\r\n        BrushView.prototype.init = function (ecModel, api) {\r\n            this.ecModel = ecModel;\r\n            this.api = api;\r\n            this.model;\r\n            (this._brushController = new BrushController(api.getZr()))\r\n                .on('brush', bind(this._onBrush, this))\r\n                .mount();\r\n        };\r\n        BrushView.prototype.render = function (brushModel, ecModel, api, payload) {\r\n            this.model = brushModel;\r\n            this._updateController(brushModel, ecModel, api, payload);\r\n        };\r\n        BrushView.prototype.updateTransform = function (brushModel, ecModel, api, payload) {\r\n            layoutCovers(ecModel);\r\n            this._updateController(brushModel, ecModel, api, payload);\r\n        };\r\n        BrushView.prototype.updateVisual = function (brushModel, ecModel, api, payload) {\r\n            this.updateTransform(brushModel, ecModel, api, payload);\r\n        };\r\n        BrushView.prototype.updateView = function (brushModel, ecModel, api, payload) {\r\n            this._updateController(brushModel, ecModel, api, payload);\r\n        };\r\n        BrushView.prototype._updateController = function (brushModel, ecModel, api, payload) {\r\n            (!payload || payload.$from !== brushModel.id) && this._brushController\r\n                .setPanels(brushModel.brushTargetManager.makePanelOpts(api))\r\n                .enableBrush(brushModel.brushOption)\r\n                .updateCovers(brushModel.areas.slice());\r\n        };\r\n        BrushView.prototype.dispose = function () {\r\n            this._brushController.dispose();\r\n        };\r\n        BrushView.prototype._onBrush = function (eventParam) {\r\n            var modelId = this.model.id;\r\n            var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel);\r\n            (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({\r\n                type: 'brush',\r\n                brushId: modelId,\r\n                areas: clone(areas),\r\n                $from: modelId\r\n            });\r\n            eventParam.isEnd && this.api.dispatchAction({\r\n                type: 'brushEnd',\r\n                brushId: modelId,\r\n                areas: clone(areas),\r\n                $from: modelId\r\n            });\r\n        };\r\n        BrushView.type = 'brush';\r\n        return BrushView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(BrushView);\n\n    registerAction({ type: 'brush', event: 'brush', update: 'updateVisual' }, function (payload, ecModel) {\r\n        ecModel.eachComponent({ mainType: 'brush', query: payload }, function (brushModel) {\r\n            brushModel.setAreas(payload.areas);\r\n        });\r\n    });\r\n    registerAction({ type: 'brushSelect', event: 'brushSelected', update: 'none' }, function () { });\r\n    registerAction({ type: 'brushEnd', event: 'brushEnd', update: 'none' }, function () { });\n\n    var ICON_TYPES = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'];\r\n    var BrushFeature = (function (_super) {\r\n        __extends(BrushFeature, _super);\r\n        function BrushFeature() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        BrushFeature.prototype.render = function (featureModel, ecModel, api) {\r\n            var brushType;\r\n            var brushMode;\r\n            var isBrushed;\r\n            ecModel.eachComponent({ mainType: 'brush' }, function (brushModel) {\r\n                brushType = brushModel.brushType;\r\n                brushMode = brushModel.brushOption.brushMode || 'single';\r\n                isBrushed = isBrushed || !!brushModel.areas.length;\r\n            });\r\n            this._brushType = brushType;\r\n            this._brushMode = brushMode;\r\n            each(featureModel.get('type', true), function (type) {\r\n                featureModel.setIconStatus(type, (type === 'keep'\r\n                    ? brushMode === 'multiple'\r\n                    : type === 'clear'\r\n                        ? isBrushed\r\n                        : type === brushType) ? 'emphasis' : 'normal');\r\n            });\r\n        };\r\n        BrushFeature.prototype.updateView = function (featureModel, ecModel, api) {\r\n            this.render(featureModel, ecModel, api);\r\n        };\r\n        BrushFeature.prototype.getIcons = function () {\r\n            var model = this.model;\r\n            var availableIcons = model.get('icon', true);\r\n            var icons = {};\r\n            each(model.get('type', true), function (type) {\r\n                if (availableIcons[type]) {\r\n                    icons[type] = availableIcons[type];\r\n                }\r\n            });\r\n            return icons;\r\n        };\r\n        BrushFeature.prototype.onclick = function (ecModel, api, type) {\r\n            var brushType = this._brushType;\r\n            var brushMode = this._brushMode;\r\n            if (type === 'clear') {\r\n                api.dispatchAction({\r\n                    type: 'axisAreaSelect',\r\n                    intervals: []\r\n                });\r\n                api.dispatchAction({\r\n                    type: 'brush',\r\n                    command: 'clear',\r\n                    areas: []\r\n                });\r\n            }\r\n            else {\r\n                api.dispatchAction({\r\n                    type: 'takeGlobalCursor',\r\n                    key: 'brush',\r\n                    brushOption: {\r\n                        brushType: type === 'keep'\r\n                            ? brushType\r\n                            : (brushType === type ? false : type),\r\n                        brushMode: type === 'keep'\r\n                            ? (brushMode === 'multiple' ? 'single' : 'multiple')\r\n                            : brushMode\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        BrushFeature.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                type: ICON_TYPES.slice(),\r\n                icon: {\r\n                    rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\r\n                    polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\r\n                    lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\r\n                    lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\r\n                    keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\r\n                    clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2'\r\n                },\r\n                title: ecModel.getLocale(['toolbox', 'brush', 'title'])\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return BrushFeature;\r\n    }(ToolboxFeature));\r\n    registerFeature('brush', BrushFeature);\n\n    registerPreprocessor(brushPreprocessor);\n\n    var TitleModel = (function (_super) {\r\n        __extends(TitleModel, _super);\r\n        function TitleModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TitleModel.type;\r\n            _this.layoutMode = { type: 'box', ignoreSize: true };\r\n            return _this;\r\n        }\r\n        TitleModel.type = 'title';\r\n        TitleModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 6,\r\n            show: true,\r\n            text: '',\r\n            target: 'blank',\r\n            subtext: '',\r\n            subtarget: 'blank',\r\n            left: 0,\r\n            top: 0,\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderColor: '#ccc',\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            itemGap: 10,\r\n            textStyle: {\r\n                fontSize: 18,\r\n                fontWeight: 'bold',\r\n                color: '#464646'\r\n            },\r\n            subtextStyle: {\r\n                fontSize: 12,\r\n                color: '#6E7079'\r\n            }\r\n        };\r\n        return TitleModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(TitleModel);\r\n    var TitleView = (function (_super) {\r\n        __extends(TitleView, _super);\r\n        function TitleView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TitleView.type;\r\n            return _this;\r\n        }\r\n        TitleView.prototype.render = function (titleModel, ecModel, api) {\r\n            this.group.removeAll();\r\n            if (!titleModel.get('show')) {\r\n                return;\r\n            }\r\n            var group = this.group;\r\n            var textStyleModel = titleModel.getModel('textStyle');\r\n            var subtextStyleModel = titleModel.getModel('subtextStyle');\r\n            var textAlign = titleModel.get('textAlign');\r\n            var textVerticalAlign = retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\r\n            var textEl = new ZRText({\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: titleModel.get('text'),\r\n                    fill: textStyleModel.getTextColor()\r\n                }, { disableBox: true }),\r\n                z2: 10\r\n            });\r\n            var textRect = textEl.getBoundingRect();\r\n            var subText = titleModel.get('subtext');\r\n            var subTextEl = new ZRText({\r\n                style: createTextStyle(subtextStyleModel, {\r\n                    text: subText,\r\n                    fill: subtextStyleModel.getTextColor(),\r\n                    y: textRect.height + titleModel.get('itemGap'),\r\n                    verticalAlign: 'top'\r\n                }, { disableBox: true }),\r\n                z2: 10\r\n            });\r\n            var link = titleModel.get('link');\r\n            var sublink = titleModel.get('sublink');\r\n            var triggerEvent = titleModel.get('triggerEvent', true);\r\n            textEl.silent = !link && !triggerEvent;\r\n            subTextEl.silent = !sublink && !triggerEvent;\r\n            if (link) {\r\n                textEl.on('click', function () {\r\n                    windowOpen(link, '_' + titleModel.get('target'));\r\n                });\r\n            }\r\n            if (sublink) {\r\n                subTextEl.on('click', function () {\r\n                    windowOpen(sublink, '_' + titleModel.get('subtarget'));\r\n                });\r\n            }\r\n            getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent\r\n                ? {\r\n                    componentType: 'title',\r\n                    componentIndex: titleModel.componentIndex\r\n                }\r\n                : null;\r\n            group.add(textEl);\r\n            subText && group.add(subTextEl);\r\n            var groupRect = group.getBoundingRect();\r\n            var layoutOption = titleModel.getBoxLayoutParams();\r\n            layoutOption.width = groupRect.width;\r\n            layoutOption.height = groupRect.height;\r\n            var layoutRect = getLayoutRect(layoutOption, {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            }, titleModel.get('padding'));\r\n            if (!textAlign) {\r\n                textAlign = (titleModel.get('left') || titleModel.get('right'));\r\n                if (textAlign === 'middle') {\r\n                    textAlign = 'center';\r\n                }\r\n                if (textAlign === 'right') {\r\n                    layoutRect.x += layoutRect.width;\r\n                }\r\n                else if (textAlign === 'center') {\r\n                    layoutRect.x += layoutRect.width / 2;\r\n                }\r\n            }\r\n            if (!textVerticalAlign) {\r\n                textVerticalAlign = (titleModel.get('top') || titleModel.get('bottom'));\r\n                if (textVerticalAlign === 'center') {\r\n                    textVerticalAlign = 'middle';\r\n                }\r\n                if (textVerticalAlign === 'bottom') {\r\n                    layoutRect.y += layoutRect.height;\r\n                }\r\n                else if (textVerticalAlign === 'middle') {\r\n                    layoutRect.y += layoutRect.height / 2;\r\n                }\r\n                textVerticalAlign = textVerticalAlign || 'top';\r\n            }\r\n            group.x = layoutRect.x;\r\n            group.y = layoutRect.y;\r\n            group.markRedraw();\r\n            var alignStyle = {\r\n                align: textAlign,\r\n                verticalAlign: textVerticalAlign\r\n            };\r\n            textEl.setStyle(alignStyle);\r\n            subTextEl.setStyle(alignStyle);\r\n            groupRect = group.getBoundingRect();\r\n            var padding = layoutRect.margin;\r\n            var style = titleModel.getItemStyle(['color', 'opacity']);\r\n            style.fill = titleModel.get('backgroundColor');\r\n            var rect = new Rect({\r\n                shape: {\r\n                    x: groupRect.x - padding[3],\r\n                    y: groupRect.y - padding[0],\r\n                    width: groupRect.width + padding[1] + padding[3],\r\n                    height: groupRect.height + padding[0] + padding[2],\r\n                    r: titleModel.get('borderRadius')\r\n                },\r\n                style: style,\r\n                subPixelOptimize: true,\r\n                silent: true\r\n            });\r\n            group.add(rect);\r\n        };\r\n        TitleView.type = 'title';\r\n        return TitleView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(TitleView);\n\n    function timelinePreprocessor(option) {\r\n        var timelineOpt = option && option.timeline;\r\n        if (!isArray(timelineOpt)) {\r\n            timelineOpt = timelineOpt ? [timelineOpt] : [];\r\n        }\r\n        each(timelineOpt, function (opt) {\r\n            if (!opt) {\r\n                return;\r\n            }\r\n            compatibleEC2(opt);\r\n        });\r\n    }\r\n    function compatibleEC2(opt) {\r\n        var type = opt.type;\r\n        var ec2Types = { 'number': 'value', 'time': 'time' };\r\n        if (ec2Types[type]) {\r\n            opt.axisType = ec2Types[type];\r\n            delete opt.type;\r\n        }\r\n        transferItem(opt);\r\n        if (has(opt, 'controlPosition')) {\r\n            var controlStyle = opt.controlStyle || (opt.controlStyle = {});\r\n            if (!has(controlStyle, 'position')) {\r\n                controlStyle.position = opt.controlPosition;\r\n            }\r\n            if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\r\n                controlStyle.show = false;\r\n                delete controlStyle.position;\r\n            }\r\n            delete opt.controlPosition;\r\n        }\r\n        each(opt.data || [], function (dataItem) {\r\n            if (isObject(dataItem) && !isArray(dataItem)) {\r\n                if (!has(dataItem, 'value') && has(dataItem, 'name')) {\r\n                    dataItem.value = dataItem.name;\r\n                }\r\n                transferItem(dataItem);\r\n            }\r\n        });\r\n    }\r\n    function transferItem(opt) {\r\n        var itemStyle = opt.itemStyle || (opt.itemStyle = {});\r\n        var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {});\r\n        var label = opt.label || (opt.label || {});\r\n        var labelNormal = label.normal || (label.normal = {});\r\n        var excludeLabelAttr = { normal: 1, emphasis: 1 };\r\n        each(label, function (value, name) {\r\n            if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\r\n                labelNormal[name] = value;\r\n            }\r\n        });\r\n        if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\r\n            label.emphasis = itemStyleEmphasis.label;\r\n            delete itemStyleEmphasis.label;\r\n        }\r\n    }\r\n    function has(obj, attr) {\r\n        return obj.hasOwnProperty(attr);\r\n    }\n\n    ComponentModel.registerSubTypeDefaulter('timeline', function () {\r\n        return 'slider';\r\n    });\n\n    registerAction({ type: 'timelineChange', event: 'timelineChanged', update: 'prepareAndUpdate' }, function (payload, ecModel) {\r\n        var timelineModel = ecModel.getComponent('timeline');\r\n        if (timelineModel && payload.currentIndex != null) {\r\n            timelineModel.setCurrentIndex(payload.currentIndex);\r\n            if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\r\n                timelineModel.setPlayState(false);\r\n            }\r\n        }\r\n        ecModel.resetOption('timeline', { replaceMerge: timelineModel.get('replaceMerge', true) });\r\n        return defaults({\r\n            currentIndex: timelineModel.option.currentIndex\r\n        }, payload);\r\n    });\r\n    registerAction({ type: 'timelinePlayChange', event: 'timelinePlayChanged', update: 'update' }, function (payload, ecModel) {\r\n        var timelineModel = ecModel.getComponent('timeline');\r\n        if (timelineModel && payload.playState != null) {\r\n            timelineModel.setPlayState(payload.playState);\r\n        }\r\n    });\n\n    var TimelineModel = (function (_super) {\r\n        __extends(TimelineModel, _super);\r\n        function TimelineModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TimelineModel.type;\r\n            _this.layoutMode = 'box';\r\n            return _this;\r\n        }\r\n        TimelineModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            this._initData();\r\n        };\r\n        TimelineModel.prototype.mergeOption = function (option) {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n            this._initData();\r\n        };\r\n        TimelineModel.prototype.setCurrentIndex = function (currentIndex) {\r\n            if (currentIndex == null) {\r\n                currentIndex = this.option.currentIndex;\r\n            }\r\n            var count = this._data.count();\r\n            if (this.option.loop) {\r\n                currentIndex = (currentIndex % count + count) % count;\r\n            }\r\n            else {\r\n                currentIndex >= count && (currentIndex = count - 1);\r\n                currentIndex < 0 && (currentIndex = 0);\r\n            }\r\n            this.option.currentIndex = currentIndex;\r\n        };\r\n        TimelineModel.prototype.getCurrentIndex = function () {\r\n            return this.option.currentIndex;\r\n        };\r\n        TimelineModel.prototype.isIndexMax = function () {\r\n            return this.getCurrentIndex() >= this._data.count() - 1;\r\n        };\r\n        TimelineModel.prototype.setPlayState = function (state) {\r\n            this.option.autoPlay = !!state;\r\n        };\r\n        TimelineModel.prototype.getPlayState = function () {\r\n            return !!this.option.autoPlay;\r\n        };\r\n        TimelineModel.prototype._initData = function () {\r\n            var thisOption = this.option;\r\n            var dataArr = thisOption.data || [];\r\n            var axisType = thisOption.axisType;\r\n            var names = this._names = [];\r\n            var processedDataArr;\r\n            if (axisType === 'category') {\r\n                processedDataArr = [];\r\n                each(dataArr, function (item, index) {\r\n                    var value = convertOptionIdName(getDataItemValue(item), '');\r\n                    var newItem;\r\n                    if (isObject(item)) {\r\n                        newItem = clone(item);\r\n                        newItem.value = index;\r\n                    }\r\n                    else {\r\n                        newItem = index;\r\n                    }\r\n                    processedDataArr.push(newItem);\r\n                    names.push(value);\r\n                });\r\n            }\r\n            else {\r\n                processedDataArr = dataArr;\r\n            }\r\n            var dimType = ({\r\n                category: 'ordinal',\r\n                time: 'time',\r\n                value: 'number'\r\n            })[axisType] || 'number';\r\n            var data = this._data = new List([{\r\n                    name: 'value', type: dimType\r\n                }], this);\r\n            data.initData(processedDataArr, names);\r\n        };\r\n        TimelineModel.prototype.getData = function () {\r\n            return this._data;\r\n        };\r\n        TimelineModel.prototype.getCategories = function () {\r\n            if (this.get('axisType') === 'category') {\r\n                return this._names.slice();\r\n            }\r\n        };\r\n        TimelineModel.type = 'timeline';\r\n        TimelineModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 4,\r\n            show: true,\r\n            axisType: 'time',\r\n            realtime: true,\r\n            left: '20%',\r\n            top: null,\r\n            right: '20%',\r\n            bottom: 0,\r\n            width: null,\r\n            height: 40,\r\n            padding: 5,\r\n            controlPosition: 'left',\r\n            autoPlay: false,\r\n            rewind: false,\r\n            loop: true,\r\n            playInterval: 2000,\r\n            currentIndex: 0,\r\n            itemStyle: {},\r\n            label: {\r\n                color: '#000'\r\n            },\r\n            data: []\r\n        };\r\n        return TimelineModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(TimelineModel);\n\n    var SliderTimelineModel = (function (_super) {\r\n        __extends(SliderTimelineModel, _super);\r\n        function SliderTimelineModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SliderTimelineModel.type;\r\n            return _this;\r\n        }\r\n        SliderTimelineModel.type = 'timeline.slider';\r\n        SliderTimelineModel.defaultOption = inheritDefaultOption(TimelineModel.defaultOption, {\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderColor: '#ccc',\r\n            borderWidth: 0,\r\n            orient: 'horizontal',\r\n            inverse: false,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            symbol: 'circle',\r\n            symbolSize: 12,\r\n            lineStyle: {\r\n                show: true,\r\n                width: 2,\r\n                color: '#DAE1F5'\r\n            },\r\n            label: {\r\n                position: 'auto',\r\n                show: true,\r\n                interval: 'auto',\r\n                rotate: 0,\r\n                color: '#A4B1D7'\r\n            },\r\n            itemStyle: {\r\n                color: '#A4B1D7',\r\n                borderWidth: 1\r\n            },\r\n            checkpointStyle: {\r\n                symbol: 'circle',\r\n                symbolSize: 15,\r\n                color: '#316bf3',\r\n                borderColor: '#fff',\r\n                borderWidth: 2,\r\n                shadowBlur: 2,\r\n                shadowOffsetX: 1,\r\n                shadowOffsetY: 1,\r\n                shadowColor: 'rgba(0, 0, 0, 0.3)',\r\n                animation: true,\r\n                animationDuration: 300,\r\n                animationEasing: 'quinticInOut'\r\n            },\r\n            controlStyle: {\r\n                show: true,\r\n                showPlayBtn: true,\r\n                showPrevBtn: true,\r\n                showNextBtn: true,\r\n                itemSize: 24,\r\n                itemGap: 12,\r\n                position: 'left',\r\n                playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\r\n                stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\r\n                nextIcon: 'M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z',\r\n                prevIcon: 'M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z',\r\n                prevBtnSize: 18,\r\n                nextBtnSize: 18,\r\n                color: '#A4B1D7',\r\n                borderColor: '#A4B1D7',\r\n                borderWidth: 1\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true,\r\n                    color: '#6f778d'\r\n                },\r\n                itemStyle: {\r\n                    color: '#316BF3'\r\n                },\r\n                controlStyle: {\r\n                    color: '#316BF3',\r\n                    borderColor: '#316BF3',\r\n                    borderWidth: 2\r\n                }\r\n            },\r\n            progress: {\r\n                lineStyle: {\r\n                    color: '#316BF3'\r\n                },\r\n                itemStyle: {\r\n                    color: '#316BF3'\r\n                },\r\n                label: {\r\n                    color: '#6f778d'\r\n                }\r\n            },\r\n            data: []\r\n        });\r\n        return SliderTimelineModel;\r\n    }(TimelineModel));\r\n    mixin(SliderTimelineModel, DataFormatMixin.prototype);\r\n    ComponentModel.registerClass(SliderTimelineModel);\n\n    var TimelineView = (function (_super) {\r\n        __extends(TimelineView, _super);\r\n        function TimelineView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TimelineView.type;\r\n            return _this;\r\n        }\r\n        TimelineView.type = 'timeline';\r\n        return TimelineView;\r\n    }(ComponentView));\n\n    var TimelineAxis = (function (_super) {\r\n        __extends(TimelineAxis, _super);\r\n        function TimelineAxis(dim, scale, coordExtent, axisType) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.type = axisType || 'value';\r\n            return _this;\r\n        }\r\n        TimelineAxis.prototype.getLabelModel = function () {\r\n            return this.model.getModel('label');\r\n        };\r\n        TimelineAxis.prototype.isHorizontal = function () {\r\n            return this.model.get('orient') === 'horizontal';\r\n        };\r\n        return TimelineAxis;\r\n    }(Axis));\n\n    var PI$9 = Math.PI;\r\n    var labelDataIndexStore = makeInner();\r\n    var SliderTimelineView = (function (_super) {\r\n        __extends(SliderTimelineView, _super);\r\n        function SliderTimelineView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SliderTimelineView.type;\r\n            return _this;\r\n        }\r\n        SliderTimelineView.prototype.init = function (ecModel, api) {\r\n            this.api = api;\r\n        };\r\n        SliderTimelineView.prototype.render = function (timelineModel, ecModel, api) {\r\n            this.model = timelineModel;\r\n            this.api = api;\r\n            this.ecModel = ecModel;\r\n            this.group.removeAll();\r\n            if (timelineModel.get('show', true)) {\r\n                var layoutInfo_1 = this._layout(timelineModel, api);\r\n                var mainGroup_1 = this._createGroup('_mainGroup');\r\n                var labelGroup = this._createGroup('_labelGroup');\r\n                var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel);\r\n                timelineModel.formatTooltip = function (dataIndex) {\r\n                    var name = axis_1.scale.getLabel({ value: dataIndex });\r\n                    return createTooltipMarkup('nameValue', { noName: true, value: name });\r\n                };\r\n                each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\r\n                    this['_render' + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel);\r\n                }, this);\r\n                this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel);\r\n                this._position(layoutInfo_1, timelineModel);\r\n            }\r\n            this._doPlayStop();\r\n            this._updateTicksStatus();\r\n        };\r\n        SliderTimelineView.prototype.remove = function () {\r\n            this._clearTimer();\r\n            this.group.removeAll();\r\n        };\r\n        SliderTimelineView.prototype.dispose = function () {\r\n            this._clearTimer();\r\n        };\r\n        SliderTimelineView.prototype._layout = function (timelineModel, api) {\r\n            var labelPosOpt = timelineModel.get(['label', 'position']);\r\n            var orient = timelineModel.get('orient');\r\n            var viewRect = getViewRect$5(timelineModel, api);\r\n            var parsedLabelPos;\r\n            if (labelPosOpt == null || labelPosOpt === 'auto') {\r\n                parsedLabelPos = orient === 'horizontal'\r\n                    ? ((viewRect.y + viewRect.height / 2) < api.getHeight() / 2 ? '-' : '+')\r\n                    : ((viewRect.x + viewRect.width / 2) < api.getWidth() / 2 ? '+' : '-');\r\n            }\r\n            else if (isString(labelPosOpt)) {\r\n                parsedLabelPos = {\r\n                    horizontal: { top: '-', bottom: '+' },\r\n                    vertical: { left: '-', right: '+' }\r\n                }[orient][labelPosOpt];\r\n            }\r\n            else {\r\n                parsedLabelPos = labelPosOpt;\r\n            }\r\n            var labelAlignMap = {\r\n                horizontal: 'center',\r\n                vertical: (parsedLabelPos >= 0 || parsedLabelPos === '+') ? 'left' : 'right'\r\n            };\r\n            var labelBaselineMap = {\r\n                horizontal: (parsedLabelPos >= 0 || parsedLabelPos === '+') ? 'top' : 'bottom',\r\n                vertical: 'middle'\r\n            };\r\n            var rotationMap = {\r\n                horizontal: 0,\r\n                vertical: PI$9 / 2\r\n            };\r\n            var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\r\n            var controlModel = timelineModel.getModel('controlStyle');\r\n            var showControl = controlModel.get('show', true);\r\n            var controlSize = showControl ? controlModel.get('itemSize') : 0;\r\n            var controlGap = showControl ? controlModel.get('itemGap') : 0;\r\n            var sizePlusGap = controlSize + controlGap;\r\n            var labelRotation = timelineModel.get(['label', 'rotate']) || 0;\r\n            labelRotation = labelRotation * PI$9 / 180;\r\n            var playPosition;\r\n            var prevBtnPosition;\r\n            var nextBtnPosition;\r\n            var controlPosition = controlModel.get('position', true);\r\n            var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\r\n            var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\r\n            var showNextBtn = showControl && controlModel.get('showNextBtn', true);\r\n            var xLeft = 0;\r\n            var xRight = mainLength;\r\n            if (controlPosition === 'left' || controlPosition === 'bottom') {\r\n                showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\r\n                showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\r\n                showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\r\n            }\r\n            else {\r\n                showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\r\n                showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\r\n                showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\r\n            }\r\n            var axisExtent = [xLeft, xRight];\r\n            if (timelineModel.get('inverse')) {\r\n                axisExtent.reverse();\r\n            }\r\n            return {\r\n                viewRect: viewRect,\r\n                mainLength: mainLength,\r\n                orient: orient,\r\n                rotation: rotationMap[orient],\r\n                labelRotation: labelRotation,\r\n                labelPosOpt: parsedLabelPos,\r\n                labelAlign: timelineModel.get(['label', 'align']) || labelAlignMap[orient],\r\n                labelBaseline: timelineModel.get(['label', 'verticalAlign'])\r\n                    || timelineModel.get(['label', 'baseline'])\r\n                    || labelBaselineMap[orient],\r\n                playPosition: playPosition,\r\n                prevBtnPosition: prevBtnPosition,\r\n                nextBtnPosition: nextBtnPosition,\r\n                axisExtent: axisExtent,\r\n                controlSize: controlSize,\r\n                controlGap: controlGap\r\n            };\r\n        };\r\n        SliderTimelineView.prototype._position = function (layoutInfo, timelineModel) {\r\n            var mainGroup = this._mainGroup;\r\n            var labelGroup = this._labelGroup;\r\n            var viewRect = layoutInfo.viewRect;\r\n            if (layoutInfo.orient === 'vertical') {\r\n                var m = create$1();\r\n                var rotateOriginX = viewRect.x;\r\n                var rotateOriginY = viewRect.y + viewRect.height;\r\n                translate(m, m, [-rotateOriginX, -rotateOriginY]);\r\n                rotate(m, m, -PI$9 / 2);\r\n                translate(m, m, [rotateOriginX, rotateOriginY]);\r\n                viewRect = viewRect.clone();\r\n                viewRect.applyTransform(m);\r\n            }\r\n            var viewBound = getBound(viewRect);\r\n            var mainBound = getBound(mainGroup.getBoundingRect());\r\n            var labelBound = getBound(labelGroup.getBoundingRect());\r\n            var mainPosition = [mainGroup.x, mainGroup.y];\r\n            var labelsPosition = [labelGroup.x, labelGroup.y];\r\n            labelsPosition[0] = mainPosition[0] = viewBound[0][0];\r\n            var labelPosOpt = layoutInfo.labelPosOpt;\r\n            if (labelPosOpt == null || isString(labelPosOpt)) {\r\n                var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\r\n                toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\r\n                toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\r\n            }\r\n            else {\r\n                var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\r\n                toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\r\n                labelsPosition[1] = mainPosition[1] + labelPosOpt;\r\n            }\r\n            mainGroup.setPosition(mainPosition);\r\n            labelGroup.setPosition(labelsPosition);\r\n            mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\r\n            setOrigin(mainGroup);\r\n            setOrigin(labelGroup);\r\n            function setOrigin(targetGroup) {\r\n                targetGroup.originX = viewBound[0][0] - targetGroup.x;\r\n                targetGroup.originY = viewBound[1][0] - targetGroup.y;\r\n            }\r\n            function getBound(rect) {\r\n                return [\r\n                    [rect.x, rect.x + rect.width],\r\n                    [rect.y, rect.y + rect.height]\r\n                ];\r\n            }\r\n            function toBound(fromPos, from, to, dimIdx, boundIdx) {\r\n                fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\r\n            }\r\n        };\r\n        SliderTimelineView.prototype._createAxis = function (layoutInfo, timelineModel) {\r\n            var data = timelineModel.getData();\r\n            var axisType = timelineModel.get('axisType');\r\n            var scale = createScaleByModel$1(timelineModel, axisType);\r\n            scale.getTicks = function () {\r\n                return data.mapArray(['value'], function (value) {\r\n                    return { value: value };\r\n                });\r\n            };\r\n            var dataExtent = data.getDataExtent('value');\r\n            scale.setExtent(dataExtent[0], dataExtent[1]);\r\n            scale.niceTicks();\r\n            var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\r\n            axis.model = timelineModel;\r\n            return axis;\r\n        };\r\n        SliderTimelineView.prototype._createGroup = function (key) {\r\n            var newGroup = this[key] = new Group();\r\n            this.group.add(newGroup);\r\n            return newGroup;\r\n        };\r\n        SliderTimelineView.prototype._renderAxisLine = function (layoutInfo, group, axis, timelineModel) {\r\n            var axisExtent = axis.getExtent();\r\n            if (!timelineModel.get(['lineStyle', 'show'])) {\r\n                return;\r\n            }\r\n            var line = new Line({\r\n                shape: {\r\n                    x1: axisExtent[0], y1: 0,\r\n                    x2: axisExtent[1], y2: 0\r\n                },\r\n                style: extend({ lineCap: 'round' }, timelineModel.getModel('lineStyle').getLineStyle()),\r\n                silent: true,\r\n                z2: 1\r\n            });\r\n            group.add(line);\r\n            var progressLine = this._progressLine = new Line({\r\n                shape: {\r\n                    x1: axisExtent[0],\r\n                    x2: this._currentPointer\r\n                        ? this._currentPointer.x : axisExtent[0],\r\n                    y1: 0, y2: 0\r\n                },\r\n                style: defaults({ lineCap: 'round', lineWidth: line.style.lineWidth }, timelineModel.getModel(['progress', 'lineStyle']).getLineStyle()),\r\n                silent: true,\r\n                z2: 1\r\n            });\r\n            group.add(progressLine);\r\n        };\r\n        SliderTimelineView.prototype._renderAxisTick = function (layoutInfo, group, axis, timelineModel) {\r\n            var _this = this;\r\n            var data = timelineModel.getData();\r\n            var ticks = axis.scale.getTicks();\r\n            this._tickSymbols = [];\r\n            each(ticks, function (tick) {\r\n                var tickCoord = axis.dataToCoord(tick.value);\r\n                var itemModel = data.getItemModel(tick.value);\r\n                var itemStyleModel = itemModel.getModel('itemStyle');\r\n                var hoverStyleModel = itemModel.getModel(['emphasis', 'itemStyle']);\r\n                var progressStyleModel = itemModel.getModel(['progress', 'itemStyle']);\r\n                var symbolOpt = {\r\n                    x: tickCoord,\r\n                    y: 0,\r\n                    onclick: bind(_this._changeTimeline, _this, tick.value)\r\n                };\r\n                var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\r\n                el.ensureState('emphasis').style = hoverStyleModel.getItemStyle();\r\n                el.ensureState('progress').style = progressStyleModel.getItemStyle();\r\n                enableHoverEmphasis(el);\r\n                var ecData = getECData(el);\r\n                if (itemModel.get('tooltip')) {\r\n                    ecData.dataIndex = tick.value;\r\n                    ecData.dataModel = timelineModel;\r\n                }\r\n                else {\r\n                    ecData.dataIndex = ecData.dataModel = null;\r\n                }\r\n                _this._tickSymbols.push(el);\r\n            });\r\n        };\r\n        SliderTimelineView.prototype._renderAxisLabel = function (layoutInfo, group, axis, timelineModel) {\r\n            var _this = this;\r\n            var labelModel = axis.getLabelModel();\r\n            if (!labelModel.get('show')) {\r\n                return;\r\n            }\r\n            var data = timelineModel.getData();\r\n            var labels = axis.getViewLabels();\r\n            this._tickLabels = [];\r\n            each(labels, function (labelItem) {\r\n                var dataIndex = labelItem.tickValue;\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var normalLabelModel = itemModel.getModel('label');\r\n                var hoverLabelModel = itemModel.getModel(['emphasis', 'label']);\r\n                var progressLabelModel = itemModel.getModel(['progress', 'label']);\r\n                var tickCoord = axis.dataToCoord(labelItem.tickValue);\r\n                var textEl = new ZRText({\r\n                    x: tickCoord,\r\n                    y: 0,\r\n                    rotation: layoutInfo.labelRotation - layoutInfo.rotation,\r\n                    onclick: bind(_this._changeTimeline, _this, dataIndex),\r\n                    silent: false,\r\n                    style: createTextStyle(normalLabelModel, {\r\n                        text: labelItem.formattedLabel,\r\n                        align: layoutInfo.labelAlign,\r\n                        verticalAlign: layoutInfo.labelBaseline\r\n                    })\r\n                });\r\n                textEl.ensureState('emphasis').style = createTextStyle(hoverLabelModel);\r\n                textEl.ensureState('progress').style = createTextStyle(progressLabelModel);\r\n                group.add(textEl);\r\n                enableHoverEmphasis(textEl);\r\n                labelDataIndexStore(textEl).dataIndex = dataIndex;\r\n                _this._tickLabels.push(textEl);\r\n            });\r\n        };\r\n        SliderTimelineView.prototype._renderControl = function (layoutInfo, group, axis, timelineModel) {\r\n            var controlSize = layoutInfo.controlSize;\r\n            var rotation = layoutInfo.rotation;\r\n            var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\r\n            var hoverStyle = timelineModel.getModel(['emphasis', 'controlStyle']).getItemStyle();\r\n            var playState = timelineModel.getPlayState();\r\n            var inverse = timelineModel.get('inverse', true);\r\n            makeBtn(layoutInfo.nextBtnPosition, 'next', bind(this._changeTimeline, this, inverse ? '-' : '+'));\r\n            makeBtn(layoutInfo.prevBtnPosition, 'prev', bind(this._changeTimeline, this, inverse ? '+' : '-'));\r\n            makeBtn(layoutInfo.playPosition, (playState ? 'stop' : 'play'), bind(this._handlePlayClick, this, !playState), true);\r\n            function makeBtn(position, iconName, onclick, willRotate) {\r\n                if (!position) {\r\n                    return;\r\n                }\r\n                var iconSize = parsePercent(retrieve2(timelineModel.get(['controlStyle', iconName + 'BtnSize']), controlSize), controlSize);\r\n                var rect = [0, -iconSize / 2, iconSize, iconSize];\r\n                var opt = {\r\n                    position: position,\r\n                    origin: [controlSize / 2, 0],\r\n                    rotation: willRotate ? -rotation : 0,\r\n                    rectHover: true,\r\n                    style: itemStyle,\r\n                    onclick: onclick\r\n                };\r\n                var btn = makeControlIcon(timelineModel, iconName + 'Icon', rect, opt);\r\n                btn.ensureState('emphasis').style = hoverStyle;\r\n                group.add(btn);\r\n                enableHoverEmphasis(btn);\r\n            }\r\n        };\r\n        SliderTimelineView.prototype._renderCurrentPointer = function (layoutInfo, group, axis, timelineModel) {\r\n            var data = timelineModel.getData();\r\n            var currentIndex = timelineModel.getCurrentIndex();\r\n            var pointerModel = data.getItemModel(currentIndex)\r\n                .getModel('checkpointStyle');\r\n            var me = this;\r\n            var callback = {\r\n                onCreate: function (pointer) {\r\n                    pointer.draggable = true;\r\n                    pointer.drift = bind(me._handlePointerDrag, me);\r\n                    pointer.ondragend = bind(me._handlePointerDragend, me);\r\n                    pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel, true);\r\n                },\r\n                onUpdate: function (pointer) {\r\n                    pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel);\r\n                }\r\n            };\r\n            this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\r\n        };\r\n        SliderTimelineView.prototype._handlePlayClick = function (nextState) {\r\n            this._clearTimer();\r\n            this.api.dispatchAction({\r\n                type: 'timelinePlayChange',\r\n                playState: nextState,\r\n                from: this.uid\r\n            });\r\n        };\r\n        SliderTimelineView.prototype._handlePointerDrag = function (dx, dy, e) {\r\n            this._clearTimer();\r\n            this._pointerChangeTimeline([e.offsetX, e.offsetY]);\r\n        };\r\n        SliderTimelineView.prototype._handlePointerDragend = function (e) {\r\n            this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\r\n        };\r\n        SliderTimelineView.prototype._pointerChangeTimeline = function (mousePos, trigger) {\r\n            var toCoord = this._toAxisCoord(mousePos)[0];\r\n            var axis = this._axis;\r\n            var axisExtent = asc(axis.getExtent().slice());\r\n            toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\r\n            toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\r\n            this._currentPointer.x = toCoord;\r\n            this._currentPointer.markRedraw();\r\n            this._progressLine.shape.x2 = toCoord;\r\n            this._progressLine.dirty();\r\n            var targetDataIndex = this._findNearestTick(toCoord);\r\n            var timelineModel = this.model;\r\n            if (trigger || (targetDataIndex !== timelineModel.getCurrentIndex()\r\n                && timelineModel.get('realtime'))) {\r\n                this._changeTimeline(targetDataIndex);\r\n            }\r\n        };\r\n        SliderTimelineView.prototype._doPlayStop = function () {\r\n            var _this = this;\r\n            this._clearTimer();\r\n            if (this.model.getPlayState()) {\r\n                this._timer = setTimeout(function () {\r\n                    var timelineModel = _this.model;\r\n                    _this._changeTimeline(timelineModel.getCurrentIndex()\r\n                        + (timelineModel.get('rewind', true) ? -1 : 1));\r\n                }, this.model.get('playInterval'));\r\n            }\r\n        };\r\n        SliderTimelineView.prototype._toAxisCoord = function (vertex) {\r\n            var trans = this._mainGroup.getLocalTransform();\r\n            return applyTransform$1(vertex, trans, true);\r\n        };\r\n        SliderTimelineView.prototype._findNearestTick = function (axisCoord) {\r\n            var data = this.model.getData();\r\n            var dist = Infinity;\r\n            var targetDataIndex;\r\n            var axis = this._axis;\r\n            data.each(['value'], function (value, dataIndex) {\r\n                var coord = axis.dataToCoord(value);\r\n                var d = Math.abs(coord - axisCoord);\r\n                if (d < dist) {\r\n                    dist = d;\r\n                    targetDataIndex = dataIndex;\r\n                }\r\n            });\r\n            return targetDataIndex;\r\n        };\r\n        SliderTimelineView.prototype._clearTimer = function () {\r\n            if (this._timer) {\r\n                clearTimeout(this._timer);\r\n                this._timer = null;\r\n            }\r\n        };\r\n        SliderTimelineView.prototype._changeTimeline = function (nextIndex) {\r\n            var currentIndex = this.model.getCurrentIndex();\r\n            if (nextIndex === '+') {\r\n                nextIndex = currentIndex + 1;\r\n            }\r\n            else if (nextIndex === '-') {\r\n                nextIndex = currentIndex - 1;\r\n            }\r\n            this.api.dispatchAction({\r\n                type: 'timelineChange',\r\n                currentIndex: nextIndex,\r\n                from: this.uid\r\n            });\r\n        };\r\n        SliderTimelineView.prototype._updateTicksStatus = function () {\r\n            var currentIndex = this.model.getCurrentIndex();\r\n            var tickSymbols = this._tickSymbols;\r\n            var tickLabels = this._tickLabels;\r\n            if (tickSymbols) {\r\n                for (var i = 0; i < tickSymbols.length; i++) {\r\n                    tickSymbols && tickSymbols[i]\r\n                        && tickSymbols[i].toggleState('progress', i < currentIndex);\r\n                }\r\n            }\r\n            if (tickLabels) {\r\n                for (var i = 0; i < tickLabels.length; i++) {\r\n                    tickLabels && tickLabels[i]\r\n                        && tickLabels[i].toggleState('progress', labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex);\r\n                }\r\n            }\r\n        };\r\n        SliderTimelineView.type = 'timeline.slider';\r\n        return SliderTimelineView;\r\n    }(TimelineView));\r\n    function createScaleByModel$1(model, axisType) {\r\n        axisType = axisType || model.get('type');\r\n        if (axisType) {\r\n            switch (axisType) {\r\n                case 'category':\r\n                    return new OrdinalScale({\r\n                        ordinalMeta: model.getCategories(),\r\n                        extent: [Infinity, -Infinity]\r\n                    });\r\n                case 'time':\r\n                    return new TimeScale({\r\n                        locale: model.ecModel.getLocaleModel(),\r\n                        useUTC: model.ecModel.get('useUTC')\r\n                    });\r\n                default:\r\n                    return new IntervalScale();\r\n            }\r\n        }\r\n    }\r\n    function getViewRect$5(model, api) {\r\n        return getLayoutRect(model.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        }, model.get('padding'));\r\n    }\r\n    function makeControlIcon(timelineModel, objPath, rect, opts) {\r\n        var style = opts.style;\r\n        var icon = createIcon(timelineModel.get(['controlStyle', objPath]), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3]));\r\n        if (style) {\r\n            icon.setStyle(style);\r\n        }\r\n        return icon;\r\n    }\r\n    function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\r\n        var color = itemStyleModel.get('color');\r\n        if (!symbol) {\r\n            var symbolType = hostModel.get('symbol');\r\n            symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\r\n            symbol.setStyle('strokeNoScale', true);\r\n            group.add(symbol);\r\n            callback && callback.onCreate(symbol);\r\n        }\r\n        else {\r\n            symbol.setColor(color);\r\n            group.add(symbol);\r\n            callback && callback.onUpdate(symbol);\r\n        }\r\n        var itemStyle = itemStyleModel.getItemStyle(['color']);\r\n        symbol.setStyle(itemStyle);\r\n        opt = merge({\r\n            rectHover: true,\r\n            z2: 100\r\n        }, opt, true);\r\n        var symbolSize = hostModel.get('symbolSize');\r\n        symbolSize = symbolSize instanceof Array\r\n            ? symbolSize.slice()\r\n            : [+symbolSize, +symbolSize];\r\n        opt.scaleX = symbolSize[0] / 2;\r\n        opt.scaleY = symbolSize[1] / 2;\r\n        var symbolOffset = hostModel.get('symbolOffset');\r\n        if (symbolOffset) {\r\n            opt.x = opt.x || 0;\r\n            opt.y = opt.y || 0;\r\n            opt.x += parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n            opt.y += parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n        }\r\n        var symbolRotate = hostModel.get('symbolRotate');\r\n        opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\r\n        symbol.attr(opt);\r\n        symbol.updateTransform();\r\n        return symbol;\r\n    }\r\n    function pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) {\r\n        if (pointer.dragging) {\r\n            return;\r\n        }\r\n        var pointerModel = timelineModel.getModel('checkpointStyle');\r\n        var toCoord = axis.dataToCoord(timelineModel.getData().get('value', dataIndex));\r\n        if (noAnimation || !pointerModel.get('animation', true)) {\r\n            pointer.attr({\r\n                x: toCoord,\r\n                y: 0\r\n            });\r\n            progressLine && progressLine.attr({\r\n                shape: { x2: toCoord }\r\n            });\r\n        }\r\n        else {\r\n            var animationCfg = {\r\n                duration: pointerModel.get('animationDuration', true),\r\n                easing: pointerModel.get('animationEasing', true)\r\n            };\r\n            pointer.stopAnimation(null, true);\r\n            pointer.animateTo({\r\n                x: toCoord,\r\n                y: 0\r\n            }, animationCfg);\r\n            progressLine && progressLine.animateTo({\r\n                shape: { x2: toCoord }\r\n            }, animationCfg);\r\n        }\r\n    }\r\n    ComponentView.registerClass(SliderTimelineView);\n\n    registerPreprocessor(timelinePreprocessor);\n\n    function fillLabel(opt) {\r\n        defaultEmphasis(opt, 'label', ['show']);\r\n    }\r\n    var inner$i = makeInner();\r\n    var MarkerModel = (function (_super) {\r\n        __extends(MarkerModel, _super);\r\n        function MarkerModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkerModel.type;\r\n            _this.createdBySelf = false;\r\n            return _this;\r\n        }\r\n        MarkerModel.prototype.init = function (option, parentModel, ecModel) {\r\n            if (__DEV__) {\r\n                if (this.type === 'marker') {\r\n                    throw new Error('Marker component is abstract component. Use markLine, markPoint, markArea instead.');\r\n                }\r\n            }\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            this._mergeOption(option, ecModel, false, true);\r\n        };\r\n        MarkerModel.prototype.isAnimationEnabled = function () {\r\n            if (env.node) {\r\n                return false;\r\n            }\r\n            var hostSeries = this.__hostSeries;\r\n            return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\r\n        };\r\n        MarkerModel.prototype.mergeOption = function (newOpt, ecModel) {\r\n            this._mergeOption(newOpt, ecModel, false, false);\r\n        };\r\n        MarkerModel.prototype._mergeOption = function (newOpt, ecModel, createdBySelf, isInit) {\r\n            var componentType = this.mainType;\r\n            if (!createdBySelf) {\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var markerOpt = seriesModel.get(this.mainType, true);\r\n                    var markerModel = inner$i(seriesModel)[componentType];\r\n                    if (!markerOpt || !markerOpt.data) {\r\n                        inner$i(seriesModel)[componentType] = null;\r\n                        return;\r\n                    }\r\n                    if (!markerModel) {\r\n                        if (isInit) {\r\n                            fillLabel(markerOpt);\r\n                        }\r\n                        each(markerOpt.data, function (item) {\r\n                            if (item instanceof Array) {\r\n                                fillLabel(item[0]);\r\n                                fillLabel(item[1]);\r\n                            }\r\n                            else {\r\n                                fillLabel(item);\r\n                            }\r\n                        });\r\n                        markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel);\r\n                        extend(markerModel, {\r\n                            mainType: this.mainType,\r\n                            seriesIndex: seriesModel.seriesIndex,\r\n                            name: seriesModel.name,\r\n                            createdBySelf: true\r\n                        });\r\n                        markerModel.__hostSeries = seriesModel;\r\n                    }\r\n                    else {\r\n                        markerModel._mergeOption(markerOpt, ecModel, true);\r\n                    }\r\n                    inner$i(seriesModel)[componentType] = markerModel;\r\n                }, this);\r\n            }\r\n        };\r\n        MarkerModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            var data = this.getData();\r\n            var value = this.getRawValue(dataIndex);\r\n            var itemName = data.getName(dataIndex);\r\n            return createTooltipMarkup('section', {\r\n                header: this.name,\r\n                blocks: [createTooltipMarkup('nameValue', {\r\n                        name: itemName,\r\n                        value: value,\r\n                        noName: !itemName,\r\n                        noValue: value == null\r\n                    })]\r\n            });\r\n        };\r\n        MarkerModel.prototype.getData = function () {\r\n            return this._data;\r\n        };\r\n        MarkerModel.prototype.setData = function (data) {\r\n            this._data = data;\r\n        };\r\n        MarkerModel.getMarkerModelFromSeries = function (seriesModel, componentType) {\r\n            return inner$i(seriesModel)[componentType];\r\n        };\r\n        MarkerModel.type = 'marker';\r\n        MarkerModel.dependencies = ['series', 'grid', 'polar', 'geo'];\r\n        return MarkerModel;\r\n    }(ComponentModel));\r\n    mixin(MarkerModel, DataFormatMixin.prototype);\n\n    var MarkPointModel = (function (_super) {\r\n        __extends(MarkPointModel, _super);\r\n        function MarkPointModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkPointModel.type;\r\n            return _this;\r\n        }\r\n        MarkPointModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n            return new MarkPointModel(markerOpt, masterMarkerModel, ecModel);\r\n        };\r\n        MarkPointModel.type = 'markPoint';\r\n        MarkPointModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 5,\r\n            symbol: 'pin',\r\n            symbolSize: 50,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            label: {\r\n                show: true,\r\n                position: 'inside'\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 2\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                }\r\n            }\r\n        };\r\n        return MarkPointModel;\r\n    }(MarkerModel));\r\n    ComponentModel.registerClass(MarkPointModel);\n\n    function hasXOrY(item) {\r\n        return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\r\n    }\r\n    function hasXAndY(item) {\r\n        return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\r\n    }\r\n    function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\r\n        var coordArr = [];\r\n        var stacked = isDimensionStacked(data, targetDataDim);\r\n        var calcDataDim = stacked\r\n            ? data.getCalculationInfo('stackResultDimension')\r\n            : targetDataDim;\r\n        var value = numCalculate(data, calcDataDim, markerType);\r\n        var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\r\n        coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\r\n        coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\r\n        var coordArrValue = data.get(targetDataDim, dataIndex);\r\n        var precision = getPrecision(data.get(targetDataDim, dataIndex));\r\n        precision = Math.min(precision, 20);\r\n        if (precision >= 0) {\r\n            coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\r\n        }\r\n        return [coordArr, coordArrValue];\r\n    }\r\n    var markerTypeCalculator = {\r\n        min: curry(markerTypeCalculatorWithExtent, 'min'),\r\n        max: curry(markerTypeCalculatorWithExtent, 'max'),\r\n        average: curry(markerTypeCalculatorWithExtent, 'average'),\r\n        median: curry(markerTypeCalculatorWithExtent, 'median')\r\n    };\r\n    function dataTransform(seriesModel, item) {\r\n        var data = seriesModel.getData();\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (item && !hasXAndY(item) && !isArray(item.coord) && coordSys) {\r\n            var dims = coordSys.dimensions;\r\n            var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel);\r\n            item = clone(item);\r\n            if (item.type\r\n                && markerTypeCalculator[item.type]\r\n                && axisInfo.baseAxis && axisInfo.valueAxis) {\r\n                var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\r\n                var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\r\n                var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\r\n                item.coord = coordInfo[0];\r\n                item.value = coordInfo[1];\r\n            }\r\n            else {\r\n                var coord = [\r\n                    item.xAxis != null ? item.xAxis : item.radiusAxis,\r\n                    item.yAxis != null ? item.yAxis : item.angleAxis\r\n                ];\r\n                for (var i = 0; i < 2; i++) {\r\n                    if (markerTypeCalculator[coord[i]]) {\r\n                        coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\r\n                    }\r\n                }\r\n                item.coord = coord;\r\n            }\r\n        }\r\n        return item;\r\n    }\r\n    function getAxisInfo$1(item, data, coordSys, seriesModel) {\r\n        var ret = {};\r\n        if (item.valueIndex != null || item.valueDim != null) {\r\n            ret.valueDataDim = item.valueIndex != null\r\n                ? data.getDimension(item.valueIndex) : item.valueDim;\r\n            ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\r\n            ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\r\n            ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\r\n        }\r\n        else {\r\n            ret.baseAxis = seriesModel.getBaseAxis();\r\n            ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\r\n            ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\r\n            ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\r\n        }\r\n        return ret;\r\n    }\r\n    function dataDimToCoordDim(seriesModel, dataDim) {\r\n        var data = seriesModel.getData();\r\n        var dimensions = data.dimensions;\r\n        dataDim = data.getDimension(dataDim);\r\n        for (var i = 0; i < dimensions.length; i++) {\r\n            var dimItem = data.getDimensionInfo(dimensions[i]);\r\n            if (dimItem.name === dataDim) {\r\n                return dimItem.coordDim;\r\n            }\r\n        }\r\n    }\r\n    function dataFilter$1(coordSys, item) {\r\n        return (coordSys && coordSys.containData && item.coord && !hasXOrY(item))\r\n            ? coordSys.containData(item.coord) : true;\r\n    }\r\n    function dimValueGetter(item, dimName, dataIndex, dimIndex) {\r\n        if (dimIndex < 2) {\r\n            return item.coord && item.coord[dimIndex];\r\n        }\r\n        return item.value;\r\n    }\r\n    function numCalculate(data, valueDataDim, type) {\r\n        if (type === 'average') {\r\n            var sum_1 = 0;\r\n            var count_1 = 0;\r\n            data.each(valueDataDim, function (val, idx) {\r\n                if (!isNaN(val)) {\r\n                    sum_1 += val;\r\n                    count_1++;\r\n                }\r\n            });\r\n            return sum_1 / count_1;\r\n        }\r\n        else if (type === 'median') {\r\n            return data.getMedian(valueDataDim);\r\n        }\r\n        else {\r\n            return data.getDataExtent(valueDataDim)[type === 'max' ? 1 : 0];\r\n        }\r\n    }\n\n    var inner$j = makeInner();\r\n    var MarkerView = (function (_super) {\r\n        __extends(MarkerView, _super);\r\n        function MarkerView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkerView.type;\r\n            return _this;\r\n        }\r\n        MarkerView.prototype.init = function () {\r\n            this.markerGroupMap = createHashMap();\r\n        };\r\n        MarkerView.prototype.render = function (markerModel, ecModel, api) {\r\n            var _this = this;\r\n            var markerGroupMap = this.markerGroupMap;\r\n            markerGroupMap.each(function (item) {\r\n                inner$j(item).keep = false;\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\r\n                markerModel && _this.renderSeries(seriesModel, markerModel, ecModel, api);\r\n            });\r\n            markerGroupMap.each(function (item) {\r\n                !inner$j(item).keep && _this.group.remove(item.group);\r\n            });\r\n        };\r\n        MarkerView.prototype.markKeep = function (drawGroup) {\r\n            inner$j(drawGroup).keep = true;\r\n        };\r\n        MarkerView.prototype.blurSeries = function (seriesModelList) {\r\n            var _this = this;\r\n            each(seriesModelList, function (seriesModel) {\r\n                var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\r\n                if (markerModel) {\r\n                    var data = markerModel.getData();\r\n                    data.eachItemGraphicEl(function (el) {\r\n                        if (el) {\r\n                            enterBlur(el);\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n        };\r\n        MarkerView.type = 'marker';\r\n        return MarkerView;\r\n    }(ComponentView));\n\n    function updateMarkerLayout(mpData, seriesModel, api) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        mpData.each(function (idx) {\r\n            var itemModel = mpData.getItemModel(idx);\r\n            var point;\r\n            var xPx = parsePercent$2(itemModel.get('x'), api.getWidth());\r\n            var yPx = parsePercent$2(itemModel.get('y'), api.getHeight());\r\n            if (!isNaN(xPx) && !isNaN(yPx)) {\r\n                point = [xPx, yPx];\r\n            }\r\n            else if (seriesModel.getMarkerPosition) {\r\n                point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\r\n            }\r\n            else if (coordSys) {\r\n                var x = mpData.get(coordSys.dimensions[0], idx);\r\n                var y = mpData.get(coordSys.dimensions[1], idx);\r\n                point = coordSys.dataToPoint([x, y]);\r\n            }\r\n            if (!isNaN(xPx)) {\r\n                point[0] = xPx;\r\n            }\r\n            if (!isNaN(yPx)) {\r\n                point[1] = yPx;\r\n            }\r\n            mpData.setItemLayout(idx, point);\r\n        });\r\n    }\r\n    var MarkPointView = (function (_super) {\r\n        __extends(MarkPointView, _super);\r\n        function MarkPointView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkPointView.type;\r\n            return _this;\r\n        }\r\n        MarkPointView.prototype.updateTransform = function (markPointModel, ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var mpModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markPoint');\r\n                if (mpModel) {\r\n                    updateMarkerLayout(mpModel.getData(), seriesModel, api);\r\n                    this.markerGroupMap.get(seriesModel.id).updateLayout();\r\n                }\r\n            }, this);\r\n        };\r\n        MarkPointView.prototype.renderSeries = function (seriesModel, mpModel, ecModel, api) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesId = seriesModel.id;\r\n            var seriesData = seriesModel.getData();\r\n            var symbolDrawMap = this.markerGroupMap;\r\n            var symbolDraw = symbolDrawMap.get(seriesId)\r\n                || symbolDrawMap.set(seriesId, new SymbolDraw());\r\n            var mpData = createList$1(coordSys, seriesModel, mpModel);\r\n            mpModel.setData(mpData);\r\n            updateMarkerLayout(mpModel.getData(), seriesModel, api);\r\n            mpData.each(function (idx) {\r\n                var itemModel = mpData.getItemModel(idx);\r\n                var symbol = itemModel.getShallow('symbol');\r\n                var symbolSize = itemModel.getShallow('symbolSize');\r\n                var symbolRotate = itemModel.getShallow('symbolRotate');\r\n                if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate)) {\r\n                    var rawIdx = mpModel.getRawValue(idx);\r\n                    var dataParams = mpModel.getDataParams(idx);\r\n                    if (isFunction(symbol)) {\r\n                        symbol = symbol(rawIdx, dataParams);\r\n                    }\r\n                    if (isFunction(symbolSize)) {\r\n                        symbolSize = symbolSize(rawIdx, dataParams);\r\n                    }\r\n                    if (isFunction(symbolRotate)) {\r\n                        symbolRotate = symbolRotate(rawIdx, dataParams);\r\n                    }\r\n                }\r\n                var style = itemModel.getModel('itemStyle').getItemStyle();\r\n                var color = getVisualFromData(seriesData, 'color');\r\n                if (!style.fill) {\r\n                    style.fill = color;\r\n                }\r\n                mpData.setItemVisual(idx, {\r\n                    symbol: symbol,\r\n                    symbolSize: symbolSize,\r\n                    symbolRotate: symbolRotate,\r\n                    style: style\r\n                });\r\n            });\r\n            symbolDraw.updateData(mpData);\r\n            this.group.add(symbolDraw.group);\r\n            mpData.eachItemGraphicEl(function (el) {\r\n                el.traverse(function (child) {\r\n                    getECData(child).dataModel = mpModel;\r\n                });\r\n            });\r\n            this.markKeep(symbolDraw);\r\n            symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\r\n        };\r\n        MarkPointView.type = 'markPoint';\r\n        return MarkPointView;\r\n    }(MarkerView));\r\n    function createList$1(coordSys, seriesModel, mpModel) {\r\n        var coordDimsInfos;\r\n        if (coordSys) {\r\n            coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n                var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};\r\n                return defaults({ name: coordDim }, info);\r\n            });\r\n        }\r\n        else {\r\n            coordDimsInfos = [{\r\n                    name: 'value',\r\n                    type: 'float'\r\n                }];\r\n        }\r\n        var mpData = new List(coordDimsInfos, mpModel);\r\n        var dataOpt = map(mpModel.get('data'), curry(dataTransform, seriesModel));\r\n        if (coordSys) {\r\n            dataOpt = filter(dataOpt, curry(dataFilter$1, coordSys));\r\n        }\r\n        mpData.initData(dataOpt, null, coordSys ? dimValueGetter : function (item) {\r\n            return item.value;\r\n        });\r\n        return mpData;\r\n    }\r\n    ComponentView.registerClass(MarkPointView);\n\n    registerPreprocessor(function (opt) {\r\n        opt.markPoint = opt.markPoint || {};\r\n    });\n\n    var MarkLineModel = (function (_super) {\r\n        __extends(MarkLineModel, _super);\r\n        function MarkLineModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkLineModel.type;\r\n            return _this;\r\n        }\r\n        MarkLineModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n            return new MarkLineModel(markerOpt, masterMarkerModel, ecModel);\r\n        };\r\n        MarkLineModel.type = 'markLine';\r\n        MarkLineModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 5,\r\n            symbol: ['circle', 'arrow'],\r\n            symbolSize: [8, 16],\r\n            precision: 2,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            label: {\r\n                show: true,\r\n                position: 'end',\r\n                distance: 5\r\n            },\r\n            lineStyle: {\r\n                type: 'dashed'\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                },\r\n                lineStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            animationEasing: 'linear'\r\n        };\r\n        return MarkLineModel;\r\n    }(MarkerModel));\r\n    ComponentModel.registerClass(MarkLineModel);\n\n    var inner$k = makeInner();\r\n    var markLineTransform = function (seriesModel, coordSys, mlModel, item) {\r\n        var data = seriesModel.getData();\r\n        var itemArray;\r\n        if (!isArray(item)) {\r\n            var mlType = item.type;\r\n            if (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median'\r\n                || (item.xAxis != null || item.yAxis != null)) {\r\n                var valueAxis = void 0;\r\n                var value = void 0;\r\n                if (item.yAxis != null || item.xAxis != null) {\r\n                    valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\r\n                    value = retrieve(item.yAxis, item.xAxis);\r\n                }\r\n                else {\r\n                    var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel);\r\n                    valueAxis = axisInfo.valueAxis;\r\n                    var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\r\n                    value = numCalculate(data, valueDataDim, mlType);\r\n                }\r\n                var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\r\n                var baseIndex = 1 - valueIndex;\r\n                var mlFrom = clone(item);\r\n                var mlTo = {\r\n                    coord: []\r\n                };\r\n                mlFrom.type = null;\r\n                mlFrom.coord = [];\r\n                mlFrom.coord[baseIndex] = -Infinity;\r\n                mlTo.coord[baseIndex] = Infinity;\r\n                var precision = mlModel.get('precision');\r\n                if (precision >= 0 && typeof value === 'number') {\r\n                    value = +value.toFixed(Math.min(precision, 20));\r\n                }\r\n                mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\r\n                itemArray = [mlFrom, mlTo, {\r\n                        type: mlType,\r\n                        valueIndex: item.valueIndex,\r\n                        value: value\r\n                    }];\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    logError('Invalid markLine data.');\r\n                }\r\n                itemArray = [];\r\n            }\r\n        }\r\n        else {\r\n            itemArray = item;\r\n        }\r\n        var normalizedItem = [\r\n            dataTransform(seriesModel, itemArray[0]),\r\n            dataTransform(seriesModel, itemArray[1]),\r\n            extend({}, itemArray[2])\r\n        ];\r\n        normalizedItem[2].type = normalizedItem[2].type || null;\r\n        merge(normalizedItem[2], normalizedItem[0]);\r\n        merge(normalizedItem[2], normalizedItem[1]);\r\n        return normalizedItem;\r\n    };\r\n    function isInifinity(val) {\r\n        return !isNaN(val) && !isFinite(val);\r\n    }\r\n    function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\r\n        var otherDimIndex = 1 - dimIndex;\r\n        var dimName = coordSys.dimensions[dimIndex];\r\n        return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex])\r\n            && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\r\n    }\r\n    function markLineFilter(coordSys, item) {\r\n        if (coordSys.type === 'cartesian2d') {\r\n            var fromCoord = item[0].coord;\r\n            var toCoord = item[1].coord;\r\n            if (fromCoord && toCoord\r\n                && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys)\r\n                    || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\r\n                return true;\r\n            }\r\n        }\r\n        return dataFilter$1(coordSys, item[0])\r\n            && dataFilter$1(coordSys, item[1]);\r\n    }\r\n    function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        var itemModel = data.getItemModel(idx);\r\n        var point;\r\n        var xPx = parsePercent$2(itemModel.get('x'), api.getWidth());\r\n        var yPx = parsePercent$2(itemModel.get('y'), api.getHeight());\r\n        if (!isNaN(xPx) && !isNaN(yPx)) {\r\n            point = [xPx, yPx];\r\n        }\r\n        else {\r\n            if (seriesModel.getMarkerPosition) {\r\n                point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\r\n            }\r\n            else {\r\n                var dims = coordSys.dimensions;\r\n                var x = data.get(dims[0], idx);\r\n                var y = data.get(dims[1], idx);\r\n                point = coordSys.dataToPoint([x, y]);\r\n            }\r\n            if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n                var xAxis = coordSys.getAxis('x');\r\n                var yAxis = coordSys.getAxis('y');\r\n                var dims = coordSys.dimensions;\r\n                if (isInifinity(data.get(dims[0], idx))) {\r\n                    point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\r\n                }\r\n                else if (isInifinity(data.get(dims[1], idx))) {\r\n                    point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\r\n                }\r\n            }\r\n            if (!isNaN(xPx)) {\r\n                point[0] = xPx;\r\n            }\r\n            if (!isNaN(yPx)) {\r\n                point[1] = yPx;\r\n            }\r\n        }\r\n        data.setItemLayout(idx, point);\r\n    }\r\n    var MarkLineView = (function (_super) {\r\n        __extends(MarkLineView, _super);\r\n        function MarkLineView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkLineView.type;\r\n            return _this;\r\n        }\r\n        MarkLineView.prototype.updateTransform = function (markLineModel, ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var mlModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markLine');\r\n                if (mlModel) {\r\n                    var mlData_1 = mlModel.getData();\r\n                    var fromData_1 = inner$k(mlModel).from;\r\n                    var toData_1 = inner$k(mlModel).to;\r\n                    fromData_1.each(function (idx) {\r\n                        updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api);\r\n                        updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api);\r\n                    });\r\n                    mlData_1.each(function (idx) {\r\n                        mlData_1.setItemLayout(idx, [\r\n                            fromData_1.getItemLayout(idx),\r\n                            toData_1.getItemLayout(idx)\r\n                        ]);\r\n                    });\r\n                    this.markerGroupMap.get(seriesModel.id).updateLayout();\r\n                }\r\n            }, this);\r\n        };\r\n        MarkLineView.prototype.renderSeries = function (seriesModel, mlModel, ecModel, api) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesId = seriesModel.id;\r\n            var seriesData = seriesModel.getData();\r\n            var lineDrawMap = this.markerGroupMap;\r\n            var lineDraw = lineDrawMap.get(seriesId)\r\n                || lineDrawMap.set(seriesId, new LineDraw());\r\n            this.group.add(lineDraw.group);\r\n            var mlData = createList$2(coordSys, seriesModel, mlModel);\r\n            var fromData = mlData.from;\r\n            var toData = mlData.to;\r\n            var lineData = mlData.line;\r\n            inner$k(mlModel).from = fromData;\r\n            inner$k(mlModel).to = toData;\r\n            mlModel.setData(lineData);\r\n            var symbolType = mlModel.get('symbol');\r\n            var symbolSize = mlModel.get('symbolSize');\r\n            if (!isArray(symbolType)) {\r\n                symbolType = [symbolType, symbolType];\r\n            }\r\n            if (!isArray(symbolSize)) {\r\n                symbolSize = [symbolSize, symbolSize];\r\n            }\r\n            mlData.from.each(function (idx) {\r\n                updateDataVisualAndLayout(fromData, idx, true);\r\n                updateDataVisualAndLayout(toData, idx, false);\r\n            });\r\n            lineData.each(function (idx) {\r\n                var lineStyle = lineData.getItemModel(idx)\r\n                    .getModel('lineStyle').getLineStyle();\r\n                lineData.setItemLayout(idx, [\r\n                    fromData.getItemLayout(idx),\r\n                    toData.getItemLayout(idx)\r\n                ]);\r\n                if (lineStyle.stroke == null) {\r\n                    lineStyle.stroke = fromData.getItemVisual(idx, 'style').fill;\r\n                }\r\n                lineData.setItemVisual(idx, {\r\n                    fromSymbolRotate: fromData.getItemVisual(idx, 'symbolRotate'),\r\n                    fromSymbolSize: fromData.getItemVisual(idx, 'symbolSize'),\r\n                    fromSymbol: fromData.getItemVisual(idx, 'symbol'),\r\n                    toSymbolRotate: toData.getItemVisual(idx, 'symbolRotate'),\r\n                    toSymbolSize: toData.getItemVisual(idx, 'symbolSize'),\r\n                    toSymbol: toData.getItemVisual(idx, 'symbol'),\r\n                    style: lineStyle\r\n                });\r\n            });\r\n            lineDraw.updateData(lineData);\r\n            mlData.line.eachItemGraphicEl(function (el, idx) {\r\n                el.traverse(function (child) {\r\n                    getECData(child).dataModel = mlModel;\r\n                });\r\n            });\r\n            function updateDataVisualAndLayout(data, idx, isFrom) {\r\n                var itemModel = data.getItemModel(idx);\r\n                updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\r\n                var style = itemModel.getModel('itemStyle').getItemStyle();\r\n                if (style.fill == null) {\r\n                    style.fill = getVisualFromData(seriesData, 'color');\r\n                }\r\n                data.setItemVisual(idx, {\r\n                    symbolRotate: itemModel.get('symbolRotate'),\r\n                    symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\r\n                    symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\r\n                    style: style\r\n                });\r\n            }\r\n            this.markKeep(lineDraw);\r\n            lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\r\n        };\r\n        MarkLineView.type = 'markLine';\r\n        return MarkLineView;\r\n    }(MarkerView));\r\n    function createList$2(coordSys, seriesModel, mlModel) {\r\n        var coordDimsInfos;\r\n        if (coordSys) {\r\n            coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n                var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};\r\n                return defaults({ name: coordDim }, info);\r\n            });\r\n        }\r\n        else {\r\n            coordDimsInfos = [{\r\n                    name: 'value',\r\n                    type: 'float'\r\n                }];\r\n        }\r\n        var fromData = new List(coordDimsInfos, mlModel);\r\n        var toData = new List(coordDimsInfos, mlModel);\r\n        var lineData = new List([], mlModel);\r\n        var optData = map(mlModel.get('data'), curry(markLineTransform, seriesModel, coordSys, mlModel));\r\n        if (coordSys) {\r\n            optData = filter(optData, curry(markLineFilter, coordSys));\r\n        }\r\n        var dimValueGetter$1 = coordSys ? dimValueGetter : function (item) {\r\n            return item.value;\r\n        };\r\n        fromData.initData(map(optData, function (item) {\r\n            return item[0];\r\n        }), null, dimValueGetter$1);\r\n        toData.initData(map(optData, function (item) {\r\n            return item[1];\r\n        }), null, dimValueGetter$1);\r\n        lineData.initData(map(optData, function (item) {\r\n            return item[2];\r\n        }));\r\n        lineData.hasItemOption = true;\r\n        return {\r\n            from: fromData,\r\n            to: toData,\r\n            line: lineData\r\n        };\r\n    }\r\n    ComponentView.registerClass(MarkLineView);\n\n    registerPreprocessor(function (opt) {\r\n        opt.markLine = opt.markLine || {};\r\n    });\n\n    var MarkAreaModel = (function (_super) {\r\n        __extends(MarkAreaModel, _super);\r\n        function MarkAreaModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkAreaModel.type;\r\n            return _this;\r\n        }\r\n        MarkAreaModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n            return new MarkAreaModel(markerOpt, masterMarkerModel, ecModel);\r\n        };\r\n        MarkAreaModel.type = 'markArea';\r\n        MarkAreaModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 1,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            animation: false,\r\n            label: {\r\n                show: true,\r\n                position: 'top'\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 0\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true,\r\n                    position: 'top'\r\n                }\r\n            }\r\n        };\r\n        return MarkAreaModel;\r\n    }(MarkerModel));\r\n    ComponentModel.registerClass(MarkAreaModel);\n\n    var inner$l = makeInner();\r\n    var markAreaTransform = function (seriesModel, coordSys, maModel, item) {\r\n        var lt = dataTransform(seriesModel, item[0]);\r\n        var rb = dataTransform(seriesModel, item[1]);\r\n        var ltCoord = lt.coord;\r\n        var rbCoord = rb.coord;\r\n        ltCoord[0] = retrieve(ltCoord[0], -Infinity);\r\n        ltCoord[1] = retrieve(ltCoord[1], -Infinity);\r\n        rbCoord[0] = retrieve(rbCoord[0], Infinity);\r\n        rbCoord[1] = retrieve(rbCoord[1], Infinity);\r\n        var result = mergeAll([{}, lt, rb]);\r\n        result.coord = [\r\n            lt.coord, rb.coord\r\n        ];\r\n        result.x0 = lt.x;\r\n        result.y0 = lt.y;\r\n        result.x1 = rb.x;\r\n        result.y1 = rb.y;\r\n        return result;\r\n    };\r\n    function isInifinity$1(val) {\r\n        return !isNaN(val) && !isFinite(val);\r\n    }\r\n    function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\r\n        var otherDimIndex = 1 - dimIndex;\r\n        return isInifinity$1(fromCoord[otherDimIndex]) && isInifinity$1(toCoord[otherDimIndex]);\r\n    }\r\n    function markAreaFilter(coordSys, item) {\r\n        var fromCoord = item.coord[0];\r\n        var toCoord = item.coord[1];\r\n        if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n            if (fromCoord && toCoord\r\n                && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord)\r\n                    || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))) {\r\n                return true;\r\n            }\r\n        }\r\n        return dataFilter$1(coordSys, {\r\n            coord: fromCoord,\r\n            x: item.x0,\r\n            y: item.y0\r\n        })\r\n            || dataFilter$1(coordSys, {\r\n                coord: toCoord,\r\n                x: item.x1,\r\n                y: item.y1\r\n            });\r\n    }\r\n    function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        var itemModel = data.getItemModel(idx);\r\n        var point;\r\n        var xPx = parsePercent$2(itemModel.get(dims[0]), api.getWidth());\r\n        var yPx = parsePercent$2(itemModel.get(dims[1]), api.getHeight());\r\n        if (!isNaN(xPx) && !isNaN(yPx)) {\r\n            point = [xPx, yPx];\r\n        }\r\n        else {\r\n            if (seriesModel.getMarkerPosition) {\r\n                point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\r\n            }\r\n            else {\r\n                var x = data.get(dims[0], idx);\r\n                var y = data.get(dims[1], idx);\r\n                var pt = [x, y];\r\n                coordSys.clampData && coordSys.clampData(pt, pt);\r\n                point = coordSys.dataToPoint(pt, true);\r\n            }\r\n            if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n                var xAxis = coordSys.getAxis('x');\r\n                var yAxis = coordSys.getAxis('y');\r\n                var x = data.get(dims[0], idx);\r\n                var y = data.get(dims[1], idx);\r\n                if (isInifinity$1(x)) {\r\n                    point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\r\n                }\r\n                else if (isInifinity$1(y)) {\r\n                    point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\r\n                }\r\n            }\r\n            if (!isNaN(xPx)) {\r\n                point[0] = xPx;\r\n            }\r\n            if (!isNaN(yPx)) {\r\n                point[1] = yPx;\r\n            }\r\n        }\r\n        return point;\r\n    }\r\n    var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\r\n    var MarkAreaView = (function (_super) {\r\n        __extends(MarkAreaView, _super);\r\n        function MarkAreaView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkAreaView.type;\r\n            return _this;\r\n        }\r\n        MarkAreaView.prototype.updateTransform = function (markAreaModel, ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var maModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markArea');\r\n                if (maModel) {\r\n                    var areaData_1 = maModel.getData();\r\n                    areaData_1.each(function (idx) {\r\n                        var points = map(dimPermutations, function (dim) {\r\n                            return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api);\r\n                        });\r\n                        areaData_1.setItemLayout(idx, points);\r\n                        var el = areaData_1.getItemGraphicEl(idx);\r\n                        el.setShape('points', points);\r\n                    });\r\n                }\r\n            }, this);\r\n        };\r\n        MarkAreaView.prototype.renderSeries = function (seriesModel, maModel, ecModel, api) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesId = seriesModel.id;\r\n            var seriesData = seriesModel.getData();\r\n            var areaGroupMap = this.markerGroupMap;\r\n            var polygonGroup = areaGroupMap.get(seriesId)\r\n                || areaGroupMap.set(seriesId, { group: new Group() });\r\n            this.group.add(polygonGroup.group);\r\n            this.markKeep(polygonGroup);\r\n            var areaData = createList$3(coordSys, seriesModel, maModel);\r\n            maModel.setData(areaData);\r\n            areaData.each(function (idx) {\r\n                var points = map(dimPermutations, function (dim) {\r\n                    return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\r\n                });\r\n                var allClipped = true;\r\n                each(dimPermutations, function (dim) {\r\n                    if (!allClipped) {\r\n                        return;\r\n                    }\r\n                    var xValue = areaData.get(dim[0], idx);\r\n                    var yValue = areaData.get(dim[1], idx);\r\n                    if ((isInifinity$1(xValue) || coordSys.getAxis('x').containData(xValue))\r\n                        && (isInifinity$1(yValue) || coordSys.getAxis('y').containData(yValue))) {\r\n                        allClipped = false;\r\n                    }\r\n                });\r\n                areaData.setItemLayout(idx, {\r\n                    points: points,\r\n                    allClipped: allClipped\r\n                });\r\n                var style = areaData.getItemModel(idx).getModel('itemStyle').getItemStyle();\r\n                var color$1 = getVisualFromData(seriesData, 'color');\r\n                if (!style.fill) {\r\n                    style.fill = color$1;\r\n                    if (typeof style.fill === 'string') {\r\n                        style.fill = modifyAlpha(style.fill, 0.4);\r\n                    }\r\n                }\r\n                if (!style.stroke) {\r\n                    style.stroke = color$1;\r\n                }\r\n                areaData.setItemVisual(idx, 'style', style);\r\n            });\r\n            areaData.diff(inner$l(polygonGroup).data)\r\n                .add(function (idx) {\r\n                var layout = areaData.getItemLayout(idx);\r\n                if (!layout.allClipped) {\r\n                    var polygon = new Polygon({\r\n                        shape: {\r\n                            points: layout.points\r\n                        }\r\n                    });\r\n                    areaData.setItemGraphicEl(idx, polygon);\r\n                    polygonGroup.group.add(polygon);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var polygon = inner$l(polygonGroup).data.getItemGraphicEl(oldIdx);\r\n                var layout = areaData.getItemLayout(newIdx);\r\n                if (!layout.allClipped) {\r\n                    if (polygon) {\r\n                        updateProps(polygon, {\r\n                            shape: {\r\n                                points: layout.points\r\n                            }\r\n                        }, maModel, newIdx);\r\n                    }\r\n                    else {\r\n                        polygon = new Polygon({\r\n                            shape: {\r\n                                points: layout.points\r\n                            }\r\n                        });\r\n                    }\r\n                    areaData.setItemGraphicEl(newIdx, polygon);\r\n                    polygonGroup.group.add(polygon);\r\n                }\r\n                else if (polygon) {\r\n                    polygonGroup.group.remove(polygon);\r\n                }\r\n            })\r\n                .remove(function (idx) {\r\n                var polygon = inner$l(polygonGroup).data.getItemGraphicEl(idx);\r\n                polygonGroup.group.remove(polygon);\r\n            })\r\n                .execute();\r\n            areaData.eachItemGraphicEl(function (polygon, idx) {\r\n                var itemModel = areaData.getItemModel(idx);\r\n                var style = areaData.getItemVisual(idx, 'style');\r\n                polygon.useStyle(areaData.getItemVisual(idx, 'style'));\r\n                setLabelStyle(polygon, getLabelStatesModels(itemModel), {\r\n                    labelFetcher: maModel,\r\n                    labelDataIndex: idx,\r\n                    defaultText: areaData.getName(idx) || '',\r\n                    inheritColor: typeof style.fill === 'string'\r\n                        ? modifyAlpha(style.fill, 1) : '#000'\r\n                });\r\n                setStatesStylesFromModel(polygon, itemModel);\r\n                enableHoverEmphasis(polygon);\r\n                getECData(polygon).dataModel = maModel;\r\n            });\r\n            inner$l(polygonGroup).data = areaData;\r\n            polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\r\n        };\r\n        MarkAreaView.type = 'markArea';\r\n        return MarkAreaView;\r\n    }(MarkerView));\r\n    function createList$3(coordSys, seriesModel, maModel) {\r\n        var coordDimsInfos;\r\n        var areaData;\r\n        var dims = ['x0', 'y0', 'x1', 'y1'];\r\n        if (coordSys) {\r\n            coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n                var data = seriesModel.getData();\r\n                var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {};\r\n                return defaults({\r\n                    name: coordDim\r\n                }, info);\r\n            });\r\n            areaData = new List(map(dims, function (dim, idx) {\r\n                return {\r\n                    name: dim,\r\n                    type: coordDimsInfos[idx % 2].type\r\n                };\r\n            }), maModel);\r\n        }\r\n        else {\r\n            coordDimsInfos = [{\r\n                    name: 'value',\r\n                    type: 'float'\r\n                }];\r\n            areaData = new List(coordDimsInfos, maModel);\r\n        }\r\n        var optData = map(maModel.get('data'), curry(markAreaTransform, seriesModel, coordSys, maModel));\r\n        if (coordSys) {\r\n            optData = filter(optData, curry(markAreaFilter, coordSys));\r\n        }\r\n        var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\r\n            return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\r\n        } : function (item) {\r\n            return item.value;\r\n        };\r\n        areaData.initData(optData, null, dimValueGetter);\r\n        areaData.hasItemOption = true;\r\n        return areaData;\r\n    }\r\n    ComponentView.registerClass(MarkAreaView);\n\n    registerPreprocessor(function (opt) {\r\n        opt.markArea = opt.markArea || {};\r\n    });\n\n    var getDefaultSelectorOptions = function (ecModel, type) {\r\n        if (type === 'all') {\r\n            return {\r\n                type: 'all',\r\n                title: ecModel.getLocale(['legend', 'selector', 'all'])\r\n            };\r\n        }\r\n        else if (type === 'inverse') {\r\n            return {\r\n                type: 'inverse',\r\n                title: ecModel.getLocale(['legend', 'selector', 'inverse'])\r\n            };\r\n        }\r\n    };\r\n    var LegendModel = (function (_super) {\r\n        __extends(LegendModel, _super);\r\n        function LegendModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LegendModel.type;\r\n            _this.layoutMode = {\r\n                type: 'box',\r\n                ignoreSize: true\r\n            };\r\n            return _this;\r\n        }\r\n        LegendModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            option.selected = option.selected || {};\r\n            this._updateSelector(option);\r\n        };\r\n        LegendModel.prototype.mergeOption = function (option, ecModel) {\r\n            _super.prototype.mergeOption.call(this, option, ecModel);\r\n            this._updateSelector(option);\r\n        };\r\n        LegendModel.prototype._updateSelector = function (option) {\r\n            var selector = option.selector;\r\n            var ecModel = this.ecModel;\r\n            if (selector === true) {\r\n                selector = option.selector = ['all', 'inverse'];\r\n            }\r\n            if (isArray(selector)) {\r\n                each(selector, function (item, index) {\r\n                    isString(item) && (item = { type: item });\r\n                    selector[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type));\r\n                });\r\n            }\r\n        };\r\n        LegendModel.prototype.optionUpdated = function () {\r\n            this._updateData(this.ecModel);\r\n            var legendData = this._data;\r\n            if (legendData[0] && this.get('selectedMode') === 'single') {\r\n                var hasSelected = false;\r\n                for (var i = 0; i < legendData.length; i++) {\r\n                    var name_1 = legendData[i].get('name');\r\n                    if (this.isSelected(name_1)) {\r\n                        this.select(name_1);\r\n                        hasSelected = true;\r\n                        break;\r\n                    }\r\n                }\r\n                !hasSelected && this.select(legendData[0].get('name'));\r\n            }\r\n        };\r\n        LegendModel.prototype._updateData = function (ecModel) {\r\n            var potentialData = [];\r\n            var availableNames = [];\r\n            ecModel.eachRawSeries(function (seriesModel) {\r\n                var seriesName = seriesModel.name;\r\n                availableNames.push(seriesName);\r\n                var isPotential;\r\n                if (seriesModel.legendVisualProvider) {\r\n                    var provider = seriesModel.legendVisualProvider;\r\n                    var names = provider.getAllNames();\r\n                    if (!ecModel.isSeriesFiltered(seriesModel)) {\r\n                        availableNames = availableNames.concat(names);\r\n                    }\r\n                    if (names.length) {\r\n                        potentialData = potentialData.concat(names);\r\n                    }\r\n                    else {\r\n                        isPotential = true;\r\n                    }\r\n                }\r\n                else {\r\n                    isPotential = true;\r\n                }\r\n                if (isPotential && isNameSpecified(seriesModel)) {\r\n                    potentialData.push(seriesModel.name);\r\n                }\r\n            });\r\n            this._availableNames = availableNames;\r\n            var rawData = this.get('data') || potentialData;\r\n            var legendData = map(rawData, function (dataItem) {\r\n                if (typeof dataItem === 'string' || typeof dataItem === 'number') {\r\n                    dataItem = {\r\n                        name: dataItem\r\n                    };\r\n                }\r\n                return new Model(dataItem, this, this.ecModel);\r\n            }, this);\r\n            this._data = legendData;\r\n        };\r\n        LegendModel.prototype.getData = function () {\r\n            return this._data;\r\n        };\r\n        LegendModel.prototype.select = function (name) {\r\n            var selected = this.option.selected;\r\n            var selectedMode = this.get('selectedMode');\r\n            if (selectedMode === 'single') {\r\n                var data = this._data;\r\n                each(data, function (dataItem) {\r\n                    selected[dataItem.get('name')] = false;\r\n                });\r\n            }\r\n            selected[name] = true;\r\n        };\r\n        LegendModel.prototype.unSelect = function (name) {\r\n            if (this.get('selectedMode') !== 'single') {\r\n                this.option.selected[name] = false;\r\n            }\r\n        };\r\n        LegendModel.prototype.toggleSelected = function (name) {\r\n            var selected = this.option.selected;\r\n            if (!selected.hasOwnProperty(name)) {\r\n                selected[name] = true;\r\n            }\r\n            this[selected[name] ? 'unSelect' : 'select'](name);\r\n        };\r\n        LegendModel.prototype.allSelect = function () {\r\n            var data = this._data;\r\n            var selected = this.option.selected;\r\n            each(data, function (dataItem) {\r\n                selected[dataItem.get('name', true)] = true;\r\n            });\r\n        };\r\n        LegendModel.prototype.inverseSelect = function () {\r\n            var data = this._data;\r\n            var selected = this.option.selected;\r\n            each(data, function (dataItem) {\r\n                var name = dataItem.get('name', true);\r\n                if (!selected.hasOwnProperty(name)) {\r\n                    selected[name] = true;\r\n                }\r\n                selected[name] = !selected[name];\r\n            });\r\n        };\r\n        LegendModel.prototype.isSelected = function (name) {\r\n            var selected = this.option.selected;\r\n            return !(selected.hasOwnProperty(name) && !selected[name])\r\n                && indexOf(this._availableNames, name) >= 0;\r\n        };\r\n        LegendModel.prototype.getOrient = function () {\r\n            return this.get('orient') === 'vertical'\r\n                ? { index: 1, name: 'vertical' }\r\n                : { index: 0, name: 'horizontal' };\r\n        };\r\n        LegendModel.type = 'legend.plain';\r\n        LegendModel.dependencies = ['series'];\r\n        LegendModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 4,\r\n            show: true,\r\n            orient: 'horizontal',\r\n            left: 'center',\r\n            top: 0,\r\n            align: 'auto',\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderColor: '#ccc',\r\n            borderRadius: 0,\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            itemGap: 10,\r\n            itemWidth: 25,\r\n            itemHeight: 14,\r\n            inactiveColor: '#ccc',\r\n            inactiveBorderColor: '#ccc',\r\n            itemStyle: {\r\n                borderWidth: 0\r\n            },\r\n            textStyle: {\r\n                color: '#333'\r\n            },\r\n            selectedMode: true,\r\n            selector: false,\r\n            selectorLabel: {\r\n                show: true,\r\n                borderRadius: 10,\r\n                padding: [3, 5, 3, 5],\r\n                fontSize: 12,\r\n                fontFamily: ' sans-serif',\r\n                color: '#666',\r\n                borderWidth: 1,\r\n                borderColor: '#666'\r\n            },\r\n            emphasis: {\r\n                selectorLabel: {\r\n                    show: true,\r\n                    color: '#eee',\r\n                    backgroundColor: '#666'\r\n                }\r\n            },\r\n            selectorPosition: 'auto',\r\n            selectorItemGap: 7,\r\n            selectorButtonGap: 10,\r\n            tooltip: {\r\n                show: false\r\n            }\r\n        };\r\n        return LegendModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(LegendModel);\n\n    function legendSelectActionHandler(methodName, payload, ecModel) {\r\n        var selectedMap = {};\r\n        var isToggleSelect = methodName === 'toggleSelected';\r\n        var isSelected;\r\n        ecModel.eachComponent('legend', function (legendModel) {\r\n            if (isToggleSelect && isSelected != null) {\r\n                legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\r\n            }\r\n            else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\r\n                legendModel[methodName]();\r\n            }\r\n            else {\r\n                legendModel[methodName](payload.name);\r\n                isSelected = legendModel.isSelected(payload.name);\r\n            }\r\n            var legendData = legendModel.getData();\r\n            each(legendData, function (model) {\r\n                var name = model.get('name');\r\n                if (name === '\\n' || name === '') {\r\n                    return;\r\n                }\r\n                var isItemSelected = legendModel.isSelected(name);\r\n                if (selectedMap.hasOwnProperty(name)) {\r\n                    selectedMap[name] = selectedMap[name] && isItemSelected;\r\n                }\r\n                else {\r\n                    selectedMap[name] = isItemSelected;\r\n                }\r\n            });\r\n        });\r\n        return (methodName === 'allSelect' || methodName === 'inverseSelect')\r\n            ? {\r\n                selected: selectedMap\r\n            }\r\n            : {\r\n                name: payload.name,\r\n                selected: selectedMap\r\n            };\r\n    }\r\n    registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\r\n    registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\r\n    registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\r\n    registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\r\n    registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n\n    var curry$1 = curry;\r\n    var each$e = each;\r\n    var Group$2 = Group;\r\n    var LegendView = (function (_super) {\r\n        __extends(LegendView, _super);\r\n        function LegendView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LegendView.type;\r\n            _this.newlineDisabled = false;\r\n            return _this;\r\n        }\r\n        LegendView.prototype.init = function () {\r\n            this.group.add(this._contentGroup = new Group$2());\r\n            this.group.add(this._selectorGroup = new Group$2());\r\n            this._isFirstRender = true;\r\n        };\r\n        LegendView.prototype.getContentGroup = function () {\r\n            return this._contentGroup;\r\n        };\r\n        LegendView.prototype.getSelectorGroup = function () {\r\n            return this._selectorGroup;\r\n        };\r\n        LegendView.prototype.render = function (legendModel, ecModel, api) {\r\n            var isFirstRender = this._isFirstRender;\r\n            this._isFirstRender = false;\r\n            this.resetInner();\r\n            if (!legendModel.get('show', true)) {\r\n                return;\r\n            }\r\n            var itemAlign = legendModel.get('align');\r\n            var orient = legendModel.get('orient');\r\n            if (!itemAlign || itemAlign === 'auto') {\r\n                itemAlign = (legendModel.get('left') === 'right'\r\n                    && orient === 'vertical') ? 'right' : 'left';\r\n            }\r\n            var selector = legendModel.get('selector', true);\r\n            var selectorPosition = legendModel.get('selectorPosition', true);\r\n            if (selector && (!selectorPosition || selectorPosition === 'auto')) {\r\n                selectorPosition = orient === 'horizontal' ? 'end' : 'start';\r\n            }\r\n            this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\r\n            var positionInfo = legendModel.getBoxLayoutParams();\r\n            var viewportSize = { width: api.getWidth(), height: api.getHeight() };\r\n            var padding = legendModel.get('padding');\r\n            var maxSize = getLayoutRect(positionInfo, viewportSize, padding);\r\n            var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition);\r\n            var layoutRect = getLayoutRect(defaults({\r\n                width: mainRect.width,\r\n                height: mainRect.height\r\n            }, positionInfo), viewportSize, padding);\r\n            this.group.x = layoutRect.x - mainRect.x;\r\n            this.group.y = layoutRect.y - mainRect.y;\r\n            this.group.markRedraw();\r\n            this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\r\n        };\r\n        LegendView.prototype.resetInner = function () {\r\n            this.getContentGroup().removeAll();\r\n            this._backgroundEl && this.group.remove(this._backgroundEl);\r\n            this.getSelectorGroup().removeAll();\r\n        };\r\n        LegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\r\n            var contentGroup = this.getContentGroup();\r\n            var legendDrawnMap = createHashMap();\r\n            var selectMode = legendModel.get('selectedMode');\r\n            var excludeSeriesId = [];\r\n            ecModel.eachRawSeries(function (seriesModel) {\r\n                !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\r\n            });\r\n            each$e(legendModel.getData(), function (itemModel, dataIndex) {\r\n                var name = itemModel.get('name');\r\n                if (!this.newlineDisabled && (name === '' || name === '\\n')) {\r\n                    var g = new Group$2();\r\n                    g.newline = true;\r\n                    contentGroup.add(g);\r\n                    return;\r\n                }\r\n                var seriesModel = ecModel.getSeriesByName(name)[0];\r\n                if (legendDrawnMap.get(name)) {\r\n                    return;\r\n                }\r\n                if (seriesModel) {\r\n                    var data = seriesModel.getData();\r\n                    var style = data.getVisual('style');\r\n                    var color = style[data.getVisual('drawType')] || style.fill;\r\n                    var borderColor = style.stroke;\r\n                    var decal = style.decal;\r\n                    var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\r\n                    var symbolType = data.getVisual('symbol');\r\n                    var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, decal, selectMode);\r\n                    itemGroup.on('click', curry$1(dispatchSelectAction, name, null, api, excludeSeriesId))\r\n                        .on('mouseover', curry$1(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId))\r\n                        .on('mouseout', curry$1(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\r\n                    legendDrawnMap.set(name, true);\r\n                }\r\n                else {\r\n                    ecModel.eachRawSeries(function (seriesModel) {\r\n                        if (legendDrawnMap.get(name)) {\r\n                            return;\r\n                        }\r\n                        if (seriesModel.legendVisualProvider) {\r\n                            var provider = seriesModel.legendVisualProvider;\r\n                            if (!provider.containName(name)) {\r\n                                return;\r\n                            }\r\n                            var idx = provider.indexOfName(name);\r\n                            var style = provider.getItemVisual(idx, 'style');\r\n                            var borderColor = style.stroke;\r\n                            var decal = style.decal;\r\n                            var color = style.fill;\r\n                            var colorArr = parse(style.fill);\r\n                            if (colorArr && colorArr[3] === 0) {\r\n                                colorArr[3] = 0.2;\r\n                                color = stringify(colorArr, 'rgba');\r\n                            }\r\n                            var legendSymbolType = 'roundRect';\r\n                            var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, decal, selectMode);\r\n                            itemGroup.on('click', curry$1(dispatchSelectAction, null, name, api, excludeSeriesId))\r\n                                .on('mouseover', curry$1(dispatchHighlightAction, null, name, api, excludeSeriesId))\r\n                                .on('mouseout', curry$1(dispatchDownplayAction, null, name, api, excludeSeriesId));\r\n                            legendDrawnMap.set(name, true);\r\n                        }\r\n                    }, this);\r\n                }\r\n                if (__DEV__) {\r\n                    if (!legendDrawnMap.get(name)) {\r\n                        console.warn(name + ' series not exists. Legend data should be same with series name or data name.');\r\n                    }\r\n                }\r\n            }, this);\r\n            if (selector) {\r\n                this._createSelector(selector, legendModel, api, orient, selectorPosition);\r\n            }\r\n        };\r\n        LegendView.prototype._createSelector = function (selector, legendModel, api, orient, selectorPosition) {\r\n            var selectorGroup = this.getSelectorGroup();\r\n            each$e(selector, function createSelectorButton(selectorItem) {\r\n                var type = selectorItem.type;\r\n                var labelText = new ZRText({\r\n                    style: {\r\n                        x: 0,\r\n                        y: 0,\r\n                        align: 'center',\r\n                        verticalAlign: 'middle'\r\n                    },\r\n                    onclick: function () {\r\n                        api.dispatchAction({\r\n                            type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\r\n                        });\r\n                    }\r\n                });\r\n                selectorGroup.add(labelText);\r\n                var labelModel = legendModel.getModel('selectorLabel');\r\n                var emphasisLabelModel = legendModel.getModel(['emphasis', 'selectorLabel']);\r\n                setLabelStyle(labelText, { normal: labelModel, emphasis: emphasisLabelModel }, {\r\n                    defaultText: selectorItem.title\r\n                });\r\n                enableHoverEmphasis(labelText);\r\n            });\r\n        };\r\n        LegendView.prototype._createItem = function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, decal, selectMode) {\r\n            var itemWidth = legendModel.get('itemWidth');\r\n            var itemHeight = legendModel.get('itemHeight');\r\n            var inactiveColor = legendModel.get('inactiveColor');\r\n            var inactiveBorderColor = legendModel.get('inactiveBorderColor');\r\n            var symbolKeepAspect = legendModel.get('symbolKeepAspect');\r\n            var legendModelItemStyle = legendModel.getModel('itemStyle');\r\n            var isSelected = legendModel.isSelected(name);\r\n            var itemGroup = new Group$2();\r\n            var textStyleModel = itemModel.getModel('textStyle');\r\n            var itemIcon = itemModel.get('icon');\r\n            var tooltipModel = itemModel.getModel('tooltip');\r\n            var legendGlobalTooltipModel = tooltipModel.parentModel;\r\n            legendSymbolType = itemIcon || legendSymbolType;\r\n            var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, symbolKeepAspect == null ? true : symbolKeepAspect);\r\n            itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected));\r\n            if (!itemIcon && symbolType\r\n                && ((symbolType !== legendSymbolType) || symbolType === 'none')) {\r\n                var size = itemHeight * 0.8;\r\n                if (symbolType === 'none') {\r\n                    symbolType = 'circle';\r\n                }\r\n                var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, symbolKeepAspect == null ? true : symbolKeepAspect);\r\n                itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected));\r\n            }\r\n            var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\r\n            var textAlign = itemAlign;\r\n            var formatter = legendModel.get('formatter');\r\n            var content = name;\r\n            if (typeof formatter === 'string' && formatter) {\r\n                content = formatter.replace('{name}', name != null ? name : '');\r\n            }\r\n            else if (typeof formatter === 'function') {\r\n                content = formatter(name);\r\n            }\r\n            itemGroup.add(new ZRText({\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: content,\r\n                    x: textX,\r\n                    y: itemHeight / 2,\r\n                    fill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\r\n                    align: textAlign,\r\n                    verticalAlign: 'middle'\r\n                })\r\n            }));\r\n            var hitRect = new Rect({\r\n                shape: itemGroup.getBoundingRect(),\r\n                invisible: true\r\n            });\r\n            if (tooltipModel.get('show')) {\r\n                var formatterParams = {\r\n                    componentType: 'legend',\r\n                    legendIndex: legendModel.componentIndex,\r\n                    name: name,\r\n                    $vars: ['name']\r\n                };\r\n                hitRect.tooltip = extend({\r\n                    content: name,\r\n                    formatter: legendGlobalTooltipModel.get('formatter', true)\r\n                        || function (params) {\r\n                            return params.name;\r\n                        },\r\n                    formatterParams: formatterParams\r\n                }, tooltipModel.option);\r\n            }\r\n            itemGroup.add(hitRect);\r\n            itemGroup.eachChild(function (child) {\r\n                child.silent = true;\r\n            });\r\n            hitRect.silent = !selectMode;\r\n            this.getContentGroup().add(itemGroup);\r\n            enableHoverEmphasis(itemGroup);\r\n            itemGroup.__legendDataIndex = dataIndex;\r\n            return itemGroup;\r\n        };\r\n        LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\r\n            var contentGroup = this.getContentGroup();\r\n            var selectorGroup = this.getSelectorGroup();\r\n            box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\r\n            var contentRect = contentGroup.getBoundingRect();\r\n            var contentPos = [-contentRect.x, -contentRect.y];\r\n            selectorGroup.markRedraw();\r\n            contentGroup.markRedraw();\r\n            if (selector) {\r\n                box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\r\n                var selectorRect = selectorGroup.getBoundingRect();\r\n                var selectorPos = [-selectorRect.x, -selectorRect.y];\r\n                var selectorButtonGap = legendModel.get('selectorButtonGap', true);\r\n                var orientIdx = legendModel.getOrient().index;\r\n                var wh = orientIdx === 0 ? 'width' : 'height';\r\n                var hw = orientIdx === 0 ? 'height' : 'width';\r\n                var yx = orientIdx === 0 ? 'y' : 'x';\r\n                if (selectorPosition === 'end') {\r\n                    selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\r\n                }\r\n                else {\r\n                    contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\r\n                }\r\n                selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\r\n                selectorGroup.x = selectorPos[0];\r\n                selectorGroup.y = selectorPos[1];\r\n                contentGroup.x = contentPos[0];\r\n                contentGroup.y = contentPos[1];\r\n                var mainRect = { x: 0, y: 0 };\r\n                mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\r\n                mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\r\n                mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\r\n                return mainRect;\r\n            }\r\n            else {\r\n                contentGroup.x = contentPos[0];\r\n                contentGroup.y = contentPos[1];\r\n                return this.group.getBoundingRect();\r\n            }\r\n        };\r\n        LegendView.prototype.remove = function () {\r\n            this.getContentGroup().removeAll();\r\n            this._isFirstRender = true;\r\n        };\r\n        LegendView.type = 'legend.plain';\r\n        return LegendView;\r\n    }(ComponentView));\r\n    function setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected) {\r\n        var itemStyle;\r\n        if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\r\n            itemStyle = legendModelItemStyle.getItemStyle();\r\n            symbol.style.stroke = borderColor;\r\n            symbol.style.decal = decal;\r\n            if (!isSelected) {\r\n                itemStyle.stroke = inactiveBorderColor;\r\n            }\r\n        }\r\n        else {\r\n            itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\r\n        }\r\n        symbol.setStyle(itemStyle);\r\n        return symbol;\r\n    }\r\n    function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\r\n        dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\r\n        api.dispatchAction({\r\n            type: 'legendToggleSelect',\r\n            name: seriesName != null ? seriesName : dataName\r\n        });\r\n        dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\r\n    }\r\n    function isUseHoverLayer(api) {\r\n        var list = api.getZr().storage.getDisplayList();\r\n        var emphasisState;\r\n        var i = 0;\r\n        var len = list.length;\r\n        while (i < len && !(emphasisState = list[i].states.emphasis)) {\r\n            i++;\r\n        }\r\n        return emphasisState && emphasisState.hoverLayer;\r\n    }\r\n    function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\r\n        if (!isUseHoverLayer(api)) {\r\n            api.dispatchAction({\r\n                type: 'highlight',\r\n                seriesName: seriesName,\r\n                name: dataName,\r\n                excludeSeriesId: excludeSeriesId\r\n            });\r\n        }\r\n    }\r\n    function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\r\n        if (!isUseHoverLayer(api)) {\r\n            api.dispatchAction({\r\n                type: 'downplay',\r\n                seriesName: seriesName,\r\n                name: dataName,\r\n                excludeSeriesId: excludeSeriesId\r\n            });\r\n        }\r\n    }\r\n    ComponentView.registerClass(LegendView);\n\n    function legendFilter(ecModel) {\r\n        var legendModels = ecModel.findComponents({\r\n            mainType: 'legend'\r\n        });\r\n        if (legendModels && legendModels.length) {\r\n            ecModel.filterSeries(function (series) {\r\n                for (var i = 0; i < legendModels.length; i++) {\r\n                    if (!legendModels[i].isSelected(series.name)) {\r\n                        return false;\r\n                    }\r\n                }\r\n                return true;\r\n            });\r\n        }\r\n    }\n\n    registerProcessor(PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\r\n    ComponentModel.registerSubTypeDefaulter('legend', function () {\r\n        return 'plain';\r\n    });\n\n    var ScrollableLegendModel = (function (_super) {\r\n        __extends(ScrollableLegendModel, _super);\r\n        function ScrollableLegendModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScrollableLegendModel.type;\r\n            return _this;\r\n        }\r\n        ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) {\r\n            this.option.scrollDataIndex = scrollDataIndex;\r\n        };\r\n        ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) {\r\n            var inputPositionParams = getLayoutParams(option);\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            mergeAndNormalizeLayoutParams$1(this, option, inputPositionParams);\r\n        };\r\n        ScrollableLegendModel.prototype.mergeOption = function (option, ecModel) {\r\n            _super.prototype.mergeOption.call(this, option, ecModel);\r\n            mergeAndNormalizeLayoutParams$1(this, this.option, option);\r\n        };\r\n        ScrollableLegendModel.type = 'legend.scroll';\r\n        ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {\r\n            scrollDataIndex: 0,\r\n            pageButtonItemGap: 5,\r\n            pageButtonGap: null,\r\n            pageButtonPosition: 'end',\r\n            pageFormatter: '{current}/{total}',\r\n            pageIcons: {\r\n                horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\r\n                vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\r\n            },\r\n            pageIconColor: '#2f4554',\r\n            pageIconInactiveColor: '#aaa',\r\n            pageIconSize: 15,\r\n            pageTextStyle: {\r\n                color: '#333'\r\n            },\r\n            animationDurationUpdate: 800\r\n        });\r\n        return ScrollableLegendModel;\r\n    }(LegendModel));\r\n    function mergeAndNormalizeLayoutParams$1(legendModel, target, raw) {\r\n        var orient = legendModel.getOrient();\r\n        var ignoreSize = [1, 1];\r\n        ignoreSize[orient.index] = 0;\r\n        mergeLayoutParam(target, raw, {\r\n            type: 'box', ignoreSize: !!ignoreSize\r\n        });\r\n    }\r\n    ComponentModel.registerClass(ScrollableLegendModel);\n\n    var Group$3 = Group;\r\n    var WH$1 = ['width', 'height'];\r\n    var XY$1 = ['x', 'y'];\r\n    var ScrollableLegendView = (function (_super) {\r\n        __extends(ScrollableLegendView, _super);\r\n        function ScrollableLegendView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScrollableLegendView.type;\r\n            _this.newlineDisabled = true;\r\n            _this._currentIndex = 0;\r\n            return _this;\r\n        }\r\n        ScrollableLegendView.prototype.init = function () {\r\n            _super.prototype.init.call(this);\r\n            this.group.add(this._containerGroup = new Group$3());\r\n            this._containerGroup.add(this.getContentGroup());\r\n            this.group.add(this._controllerGroup = new Group$3());\r\n        };\r\n        ScrollableLegendView.prototype.resetInner = function () {\r\n            _super.prototype.resetInner.call(this);\r\n            this._controllerGroup.removeAll();\r\n            this._containerGroup.removeClipPath();\r\n            this._containerGroup.__rectSize = null;\r\n        };\r\n        ScrollableLegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\r\n            var self = this;\r\n            _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\r\n            var controllerGroup = this._controllerGroup;\r\n            var pageIconSize = legendModel.get('pageIconSize', true);\r\n            var pageIconSizeArr = isArray(pageIconSize)\r\n                ? pageIconSize : [pageIconSize, pageIconSize];\r\n            createPageButton('pagePrev', 0);\r\n            var pageTextStyleModel = legendModel.getModel('pageTextStyle');\r\n            controllerGroup.add(new ZRText({\r\n                name: 'pageText',\r\n                style: {\r\n                    text: 'xx/xx',\r\n                    fill: pageTextStyleModel.getTextColor(),\r\n                    font: pageTextStyleModel.getFont(),\r\n                    verticalAlign: 'middle',\r\n                    align: 'center'\r\n                },\r\n                silent: true\r\n            }));\r\n            createPageButton('pageNext', 1);\r\n            function createPageButton(name, iconIdx) {\r\n                var pageDataIndexName = (name + 'DataIndex');\r\n                var icon = createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\r\n                    onclick: bind(self._pageGo, self, pageDataIndexName, legendModel, api)\r\n                }, {\r\n                    x: -pageIconSizeArr[0] / 2,\r\n                    y: -pageIconSizeArr[1] / 2,\r\n                    width: pageIconSizeArr[0],\r\n                    height: pageIconSizeArr[1]\r\n                });\r\n                icon.name = name;\r\n                controllerGroup.add(icon);\r\n            }\r\n        };\r\n        ScrollableLegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\r\n            var selectorGroup = this.getSelectorGroup();\r\n            var orientIdx = legendModel.getOrient().index;\r\n            var wh = WH$1[orientIdx];\r\n            var xy = XY$1[orientIdx];\r\n            var hw = WH$1[1 - orientIdx];\r\n            var yx = XY$1[1 - orientIdx];\r\n            selector && box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\r\n            var selectorButtonGap = legendModel.get('selectorButtonGap', true);\r\n            var selectorRect = selectorGroup.getBoundingRect();\r\n            var selectorPos = [-selectorRect.x, -selectorRect.y];\r\n            var processMaxSize = clone(maxSize);\r\n            selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\r\n            var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy);\r\n            if (selector) {\r\n                if (selectorPosition === 'end') {\r\n                    selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\r\n                }\r\n                else {\r\n                    var offset = selectorRect[wh] + selectorButtonGap;\r\n                    selectorPos[orientIdx] -= offset;\r\n                    mainRect[xy] -= offset;\r\n                }\r\n                mainRect[wh] += selectorRect[wh] + selectorButtonGap;\r\n                selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\r\n                mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\r\n                mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\r\n                selectorGroup.x = selectorPos[0];\r\n                selectorGroup.y = selectorPos[1];\r\n                selectorGroup.markRedraw();\r\n            }\r\n            return mainRect;\r\n        };\r\n        ScrollableLegendView.prototype._layoutContentAndController = function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) {\r\n            var contentGroup = this.getContentGroup();\r\n            var containerGroup = this._containerGroup;\r\n            var controllerGroup = this._controllerGroup;\r\n            box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\r\n            box('horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\r\n            var contentRect = contentGroup.getBoundingRect();\r\n            var controllerRect = controllerGroup.getBoundingRect();\r\n            var showController = this._showController = contentRect[wh] > maxSize[wh];\r\n            var contentPos = [-contentRect.x, -contentRect.y];\r\n            if (!isFirstRender) {\r\n                contentPos[orientIdx] = contentGroup[xy];\r\n            }\r\n            var containerPos = [0, 0];\r\n            var controllerPos = [-controllerRect.x, -controllerRect.y];\r\n            var pageButtonGap = retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true));\r\n            if (showController) {\r\n                var pageButtonPosition = legendModel.get('pageButtonPosition', true);\r\n                if (pageButtonPosition === 'end') {\r\n                    controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\r\n                }\r\n                else {\r\n                    containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\r\n                }\r\n            }\r\n            controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\r\n            contentGroup.setPosition(contentPos);\r\n            containerGroup.setPosition(containerPos);\r\n            controllerGroup.setPosition(controllerPos);\r\n            var mainRect = { x: 0, y: 0 };\r\n            mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\r\n            mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]);\r\n            mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\r\n            containerGroup.__rectSize = maxSize[wh];\r\n            if (showController) {\r\n                var clipShape = { x: 0, y: 0 };\r\n                clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\r\n                clipShape[hw] = mainRect[hw];\r\n                containerGroup.setClipPath(new Rect({ shape: clipShape }));\r\n                containerGroup.__rectSize = clipShape[wh];\r\n            }\r\n            else {\r\n                controllerGroup.eachChild(function (child) {\r\n                    child.attr({\r\n                        invisible: true,\r\n                        silent: true\r\n                    });\r\n                });\r\n            }\r\n            var pageInfo = this._getPageInfo(legendModel);\r\n            pageInfo.pageIndex != null && updateProps(contentGroup, { x: pageInfo.contentPosition[0], y: pageInfo.contentPosition[1] }, showController ? legendModel : null);\r\n            this._updatePageInfoView(legendModel, pageInfo);\r\n            return mainRect;\r\n        };\r\n        ScrollableLegendView.prototype._pageGo = function (to, legendModel, api) {\r\n            var scrollDataIndex = this._getPageInfo(legendModel)[to];\r\n            scrollDataIndex != null && api.dispatchAction({\r\n                type: 'legendScroll',\r\n                scrollDataIndex: scrollDataIndex,\r\n                legendId: legendModel.id\r\n            });\r\n        };\r\n        ScrollableLegendView.prototype._updatePageInfoView = function (legendModel, pageInfo) {\r\n            var controllerGroup = this._controllerGroup;\r\n            each(['pagePrev', 'pageNext'], function (name) {\r\n                var key = (name + 'DataIndex');\r\n                var canJump = pageInfo[key] != null;\r\n                var icon = controllerGroup.childOfName(name);\r\n                if (icon) {\r\n                    icon.setStyle('fill', canJump\r\n                        ? legendModel.get('pageIconColor', true)\r\n                        : legendModel.get('pageIconInactiveColor', true));\r\n                    icon.cursor = canJump ? 'pointer' : 'default';\r\n                }\r\n            });\r\n            var pageText = controllerGroup.childOfName('pageText');\r\n            var pageFormatter = legendModel.get('pageFormatter');\r\n            var pageIndex = pageInfo.pageIndex;\r\n            var current = pageIndex != null ? pageIndex + 1 : 0;\r\n            var total = pageInfo.pageCount;\r\n            pageText && pageFormatter && pageText.setStyle('text', isString(pageFormatter)\r\n                ? pageFormatter.replace('{current}', current == null ? '' : current + '')\r\n                    .replace('{total}', total == null ? '' : total + '')\r\n                : pageFormatter({ current: current, total: total }));\r\n        };\r\n        ScrollableLegendView.prototype._getPageInfo = function (legendModel) {\r\n            var scrollDataIndex = legendModel.get('scrollDataIndex', true);\r\n            var contentGroup = this.getContentGroup();\r\n            var containerRectSize = this._containerGroup.__rectSize;\r\n            var orientIdx = legendModel.getOrient().index;\r\n            var wh = WH$1[orientIdx];\r\n            var xy = XY$1[orientIdx];\r\n            var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\r\n            var children = contentGroup.children();\r\n            var targetItem = children[targetItemIndex];\r\n            var itemCount = children.length;\r\n            var pCount = !itemCount ? 0 : 1;\r\n            var result = {\r\n                contentPosition: [contentGroup.x, contentGroup.y],\r\n                pageCount: pCount,\r\n                pageIndex: pCount - 1,\r\n                pagePrevDataIndex: null,\r\n                pageNextDataIndex: null\r\n            };\r\n            if (!targetItem) {\r\n                return result;\r\n            }\r\n            var targetItemInfo = getItemInfo(targetItem);\r\n            result.contentPosition[orientIdx] = -targetItemInfo.s;\r\n            for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\r\n                currItemInfo = getItemInfo(children[i]);\r\n                if ((!currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize)\r\n                    || (currItemInfo && !intersect(currItemInfo, winStartItemInfo.s))) {\r\n                    if (winEndItemInfo.i > winStartItemInfo.i) {\r\n                        winStartItemInfo = winEndItemInfo;\r\n                    }\r\n                    else {\r\n                        winStartItemInfo = currItemInfo;\r\n                    }\r\n                    if (winStartItemInfo) {\r\n                        if (result.pageNextDataIndex == null) {\r\n                            result.pageNextDataIndex = winStartItemInfo.i;\r\n                        }\r\n                        ++result.pageCount;\r\n                    }\r\n                }\r\n                winEndItemInfo = currItemInfo;\r\n            }\r\n            for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\r\n                currItemInfo = getItemInfo(children[i]);\r\n                if ((!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s))\r\n                    && winStartItemInfo.i < winEndItemInfo.i) {\r\n                    winEndItemInfo = winStartItemInfo;\r\n                    if (result.pagePrevDataIndex == null) {\r\n                        result.pagePrevDataIndex = winStartItemInfo.i;\r\n                    }\r\n                    ++result.pageCount;\r\n                    ++result.pageIndex;\r\n                }\r\n                winStartItemInfo = currItemInfo;\r\n            }\r\n            return result;\r\n            function getItemInfo(el) {\r\n                if (el) {\r\n                    var itemRect = el.getBoundingRect();\r\n                    var start = itemRect[xy] + el[xy];\r\n                    return {\r\n                        s: start,\r\n                        e: start + itemRect[wh],\r\n                        i: el.__legendDataIndex\r\n                    };\r\n                }\r\n            }\r\n            function intersect(itemInfo, winStart) {\r\n                return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\r\n            }\r\n        };\r\n        ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) {\r\n            if (!this._showController) {\r\n                return 0;\r\n            }\r\n            var index;\r\n            var contentGroup = this.getContentGroup();\r\n            var defaultIndex;\r\n            contentGroup.eachChild(function (child, idx) {\r\n                var legendDataIdx = child.__legendDataIndex;\r\n                if (defaultIndex == null && legendDataIdx != null) {\r\n                    defaultIndex = idx;\r\n                }\r\n                if (legendDataIdx === targetDataIndex) {\r\n                    index = idx;\r\n                }\r\n            });\r\n            return index != null ? index : defaultIndex;\r\n        };\r\n        ScrollableLegendView.type = 'legend.scroll';\r\n        return ScrollableLegendView;\r\n    }(LegendView));\r\n    ComponentView.registerClass(ScrollableLegendView);\n\n    registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\r\n        var scrollDataIndex = payload.scrollDataIndex;\r\n        scrollDataIndex != null && ecModel.eachComponent({ mainType: 'legend', subType: 'scroll', query: payload }, function (legendModel) {\r\n            legendModel.setScrollDataIndex(scrollDataIndex);\r\n        });\r\n    });\n\n    var SliderZoomModel = (function (_super) {\r\n        __extends(SliderZoomModel, _super);\r\n        function SliderZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SliderZoomModel.type;\r\n            return _this;\r\n        }\r\n        SliderZoomModel.type = 'dataZoom.slider';\r\n        SliderZoomModel.layoutMode = 'box';\r\n        SliderZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\r\n            show: true,\r\n            right: 'ph',\r\n            top: 'ph',\r\n            width: 'ph',\r\n            height: 'ph',\r\n            left: null,\r\n            bottom: null,\r\n            borderColor: '#d2dbee',\r\n            borderRadius: 3,\r\n            backgroundColor: 'rgba(47,69,84,0)',\r\n            dataBackground: {\r\n                lineStyle: {\r\n                    color: '#d2dbee',\r\n                    width: 0.5\r\n                },\r\n                areaStyle: {\r\n                    color: '#d2dbee',\r\n                    opacity: 0.2\r\n                }\r\n            },\r\n            selectedDataBackground: {\r\n                lineStyle: {\r\n                    color: '#8fb0f7',\r\n                    width: 0.5\r\n                },\r\n                areaStyle: {\r\n                    color: '#8fb0f7',\r\n                    opacity: 0.2\r\n                }\r\n            },\r\n            fillerColor: 'rgba(135,175,274,0.2)',\r\n            handleIcon: 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z',\r\n            handleSize: '100%',\r\n            handleStyle: {\r\n                color: '#fff',\r\n                borderColor: '#ACB8D1'\r\n            },\r\n            moveHandleSize: 7,\r\n            moveHandleIcon: 'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z',\r\n            moveHandleStyle: {\r\n                color: '#D2DBEE',\r\n                opacity: 0.7\r\n            },\r\n            showDetail: true,\r\n            showDataShadow: 'auto',\r\n            realtime: true,\r\n            zoomLock: false,\r\n            textStyle: {\r\n                color: '#6E7079'\r\n            },\r\n            brushSelect: true,\r\n            brushStyle: {\r\n                color: 'rgba(135,175,274,0.15)'\r\n            },\r\n            emphasis: {\r\n                handleStyle: {\r\n                    borderColor: '#8FB0F7'\r\n                },\r\n                moveHandleStyle: {\r\n                    color: '#8FB0F7'\r\n                }\r\n            }\r\n        });\r\n        return SliderZoomModel;\r\n    }(DataZoomModel));\r\n    ComponentModel.registerClass(SliderZoomModel);\n\n    var Rect$2 = Rect;\r\n    var DEFAULT_LOCATION_EDGE_GAP = 7;\r\n    var DEFAULT_FRAME_BORDER_WIDTH = 1;\r\n    var DEFAULT_FILLER_SIZE = 30;\r\n    var DEFAULT_MOVE_HANDLE_SIZE = 7;\r\n    var HORIZONTAL = 'horizontal';\r\n    var VERTICAL = 'vertical';\r\n    var LABEL_GAP = 5;\r\n    var SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\r\n    var REALTIME_ANIMATION_CONFIG = {\r\n        easing: 'cubicOut',\r\n        duration: 100\r\n    };\r\n    var SliderZoomView = (function (_super) {\r\n        __extends(SliderZoomView, _super);\r\n        function SliderZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SliderZoomView.type;\r\n            _this._displayables = {};\r\n            return _this;\r\n        }\r\n        SliderZoomView.prototype.init = function (ecModel, api) {\r\n            this.api = api;\r\n            this._onBrush = bind(this._onBrush, this);\r\n            this._onBrushEnd = bind(this._onBrushEnd, this);\r\n        };\r\n        SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\r\n            _super.prototype.render.apply(this, arguments);\r\n            createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\r\n            this._orient = dataZoomModel.getOrient();\r\n            if (dataZoomModel.get('show') === false) {\r\n                this.group.removeAll();\r\n                return;\r\n            }\r\n            if (dataZoomModel.noTarget()) {\r\n                this._clear();\r\n                this.group.removeAll();\r\n                return;\r\n            }\r\n            if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\r\n                this._buildView();\r\n            }\r\n            this._updateView();\r\n        };\r\n        SliderZoomView.prototype.dispose = function () {\r\n            this._clear();\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        SliderZoomView.prototype._clear = function () {\r\n            clear(this, '_dispatchZoomAction');\r\n            var zr = this.api.getZr();\r\n            zr.off('mousemove', this._onBrush);\r\n            zr.off('mouseup', this._onBrushEnd);\r\n        };\r\n        SliderZoomView.prototype._buildView = function () {\r\n            var thisGroup = this.group;\r\n            thisGroup.removeAll();\r\n            this._brushing = false;\r\n            this._displayables.brushRect = null;\r\n            this._resetLocation();\r\n            this._resetInterval();\r\n            var barGroup = this._displayables.sliderGroup = new Group();\r\n            this._renderBackground();\r\n            this._renderHandle();\r\n            this._renderDataShadow();\r\n            thisGroup.add(barGroup);\r\n            this._positionGroup();\r\n        };\r\n        SliderZoomView.prototype._resetLocation = function () {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var api = this.api;\r\n            var showMoveHandle = dataZoomModel.get('brushSelect');\r\n            var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;\r\n            var coordRect = this._findCoordRect();\r\n            var ecSize = { width: api.getWidth(), height: api.getHeight() };\r\n            var positionInfo = this._orient === HORIZONTAL\r\n                ? {\r\n                    right: ecSize.width - coordRect.x - coordRect.width,\r\n                    top: (ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize),\r\n                    width: coordRect.width,\r\n                    height: DEFAULT_FILLER_SIZE\r\n                }\r\n                : {\r\n                    right: DEFAULT_LOCATION_EDGE_GAP,\r\n                    top: coordRect.y,\r\n                    width: DEFAULT_FILLER_SIZE,\r\n                    height: coordRect.height\r\n                };\r\n            var layoutParams = getLayoutParams(dataZoomModel.option);\r\n            each(['right', 'top', 'width', 'height'], function (name) {\r\n                if (layoutParams[name] === 'ph') {\r\n                    layoutParams[name] = positionInfo[name];\r\n                }\r\n            });\r\n            var layoutRect = getLayoutRect(layoutParams, ecSize);\r\n            this._location = { x: layoutRect.x, y: layoutRect.y };\r\n            this._size = [layoutRect.width, layoutRect.height];\r\n            this._orient === VERTICAL && this._size.reverse();\r\n        };\r\n        SliderZoomView.prototype._positionGroup = function () {\r\n            var thisGroup = this.group;\r\n            var location = this._location;\r\n            var orient = this._orient;\r\n            var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\r\n            var inverse = targetAxisModel && targetAxisModel.get('inverse');\r\n            var sliderGroup = this._displayables.sliderGroup;\r\n            var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;\r\n            sliderGroup.attr((orient === HORIZONTAL && !inverse)\r\n                ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: 1 }\r\n                : (orient === HORIZONTAL && inverse)\r\n                    ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: -1 }\r\n                    : (orient === VERTICAL && !inverse)\r\n                        ? { scaleY: otherAxisInverse ? -1 : 1, scaleX: 1, rotation: Math.PI / 2 }\r\n                        : { scaleY: otherAxisInverse ? -1 : 1, scaleX: -1, rotation: Math.PI / 2 });\r\n            var rect = thisGroup.getBoundingRect([sliderGroup]);\r\n            thisGroup.x = location.x - rect.x;\r\n            thisGroup.y = location.y - rect.y;\r\n            thisGroup.markRedraw();\r\n        };\r\n        SliderZoomView.prototype._getViewExtent = function () {\r\n            return [0, this._size[0]];\r\n        };\r\n        SliderZoomView.prototype._renderBackground = function () {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var size = this._size;\r\n            var barGroup = this._displayables.sliderGroup;\r\n            var brushSelect = dataZoomModel.get('brushSelect');\r\n            barGroup.add(new Rect$2({\r\n                silent: true,\r\n                shape: {\r\n                    x: 0, y: 0, width: size[0], height: size[1]\r\n                },\r\n                style: {\r\n                    fill: dataZoomModel.get('backgroundColor')\r\n                },\r\n                z2: -40\r\n            }));\r\n            var clickPanel = new Rect$2({\r\n                shape: {\r\n                    x: 0, y: 0, width: size[0], height: size[1]\r\n                },\r\n                style: {\r\n                    fill: 'transparent'\r\n                },\r\n                z2: 0,\r\n                onclick: bind(this._onClickPanel, this)\r\n            });\r\n            var zr = this.api.getZr();\r\n            if (brushSelect) {\r\n                clickPanel.on('mousedown', this._onBrushStart, this);\r\n                clickPanel.cursor = 'crosshair';\r\n                zr.on('mousemove', this._onBrush);\r\n                zr.on('mouseup', this._onBrushEnd);\r\n            }\r\n            else {\r\n                zr.off('mousemove', this._onBrush);\r\n                zr.off('mouseup', this._onBrushEnd);\r\n            }\r\n            barGroup.add(clickPanel);\r\n        };\r\n        SliderZoomView.prototype._renderDataShadow = function () {\r\n            var info = this._dataShadowInfo = this._prepareDataShadowInfo();\r\n            this._displayables.dataShadowSegs = [];\r\n            if (!info) {\r\n                return;\r\n            }\r\n            var size = this._size;\r\n            var seriesModel = info.series;\r\n            var data = seriesModel.getRawData();\r\n            var otherDim = seriesModel.getShadowDim\r\n                ? seriesModel.getShadowDim()\r\n                : info.otherDim;\r\n            if (otherDim == null) {\r\n                return;\r\n            }\r\n            var otherDataExtent = data.getDataExtent(otherDim);\r\n            var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\r\n            otherDataExtent = [\r\n                otherDataExtent[0] - otherOffset,\r\n                otherDataExtent[1] + otherOffset\r\n            ];\r\n            var otherShadowExtent = [0, size[1]];\r\n            var thisShadowExtent = [0, size[0]];\r\n            var areaPoints = [[size[0], 0], [0, 0]];\r\n            var linePoints = [];\r\n            var step = thisShadowExtent[1] / (data.count() - 1);\r\n            var thisCoord = 0;\r\n            var stride = Math.round(data.count() / size[0]);\r\n            var lastIsEmpty;\r\n            data.each([otherDim], function (value, index) {\r\n                if (stride > 0 && (index % stride)) {\r\n                    thisCoord += step;\r\n                    return;\r\n                }\r\n                var isEmpty = value == null || isNaN(value) || value === '';\r\n                var otherCoord = isEmpty\r\n                    ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true);\r\n                if (isEmpty && !lastIsEmpty && index) {\r\n                    areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\r\n                    linePoints.push([linePoints[linePoints.length - 1][0], 0]);\r\n                }\r\n                else if (!isEmpty && lastIsEmpty) {\r\n                    areaPoints.push([thisCoord, 0]);\r\n                    linePoints.push([thisCoord, 0]);\r\n                }\r\n                areaPoints.push([thisCoord, otherCoord]);\r\n                linePoints.push([thisCoord, otherCoord]);\r\n                thisCoord += step;\r\n                lastIsEmpty = isEmpty;\r\n            });\r\n            var dataZoomModel = this.dataZoomModel;\r\n            function createDataShadowGroup(isSelectedArea) {\r\n                var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\r\n                var group = new Group();\r\n                var polygon = new Polygon({\r\n                    shape: { points: areaPoints },\r\n                    segmentIgnoreThreshold: 1,\r\n                    style: model.getModel('areaStyle').getAreaStyle(),\r\n                    silent: true,\r\n                    z2: -20\r\n                });\r\n                var polyline = new Polyline({\r\n                    shape: { points: linePoints },\r\n                    segmentIgnoreThreshold: 1,\r\n                    style: model.getModel('lineStyle').getLineStyle(),\r\n                    silent: true,\r\n                    z2: -19\r\n                });\r\n                group.add(polygon);\r\n                group.add(polyline);\r\n                return group;\r\n            }\r\n            for (var i = 0; i < 3; i++) {\r\n                var group = createDataShadowGroup(i === 1);\r\n                this._displayables.sliderGroup.add(group);\r\n                this._displayables.dataShadowSegs.push(group);\r\n            }\r\n        };\r\n        SliderZoomView.prototype._prepareDataShadowInfo = function () {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var showDataShadow = dataZoomModel.get('showDataShadow');\r\n            if (showDataShadow === false) {\r\n                return;\r\n            }\r\n            var result;\r\n            var ecModel = this.ecModel;\r\n            dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                var seriesModels = dataZoomModel\r\n                    .getAxisProxy(axisDim, axisIndex)\r\n                    .getTargetSeriesModels();\r\n                each(seriesModels, function (seriesModel) {\r\n                    if (result) {\r\n                        return;\r\n                    }\r\n                    if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\r\n                        return;\r\n                    }\r\n                    var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\r\n                    var otherDim = getOtherDim(axisDim);\r\n                    var otherAxisInverse;\r\n                    var coordSys = seriesModel.coordinateSystem;\r\n                    if (otherDim != null && coordSys.getOtherAxis) {\r\n                        otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\r\n                    }\r\n                    otherDim = seriesModel.getData().mapDimension(otherDim);\r\n                    result = {\r\n                        thisAxis: thisAxis,\r\n                        series: seriesModel,\r\n                        thisDim: axisDim,\r\n                        otherDim: otherDim,\r\n                        otherAxisInverse: otherAxisInverse\r\n                    };\r\n                }, this);\r\n            }, this);\r\n            return result;\r\n        };\r\n        SliderZoomView.prototype._renderHandle = function () {\r\n            var thisGroup = this.group;\r\n            var displayables = this._displayables;\r\n            var handles = displayables.handles = [null, null];\r\n            var handleLabels = displayables.handleLabels = [null, null];\r\n            var sliderGroup = this._displayables.sliderGroup;\r\n            var size = this._size;\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var api = this.api;\r\n            var borderRadius = dataZoomModel.get('borderRadius') || 0;\r\n            var brushSelect = dataZoomModel.get('brushSelect');\r\n            var filler = displayables.filler = new Rect$2({\r\n                silent: brushSelect,\r\n                style: {\r\n                    fill: dataZoomModel.get('fillerColor')\r\n                },\r\n                textConfig: {\r\n                    position: 'inside'\r\n                }\r\n            });\r\n            sliderGroup.add(filler);\r\n            sliderGroup.add(new Rect$2({\r\n                silent: true,\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    width: size[0],\r\n                    height: size[1],\r\n                    r: borderRadius\r\n                },\r\n                style: {\r\n                    stroke: dataZoomModel.get('dataBackgroundColor')\r\n                        || dataZoomModel.get('borderColor'),\r\n                    lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\r\n                    fill: 'rgba(0,0,0,0)'\r\n                }\r\n            }));\r\n            each([0, 1], function (handleIndex) {\r\n                var iconStr = dataZoomModel.get('handleIcon');\r\n                if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0) {\r\n                    iconStr = 'path://' + iconStr;\r\n                    if (__DEV__) {\r\n                        deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\r\n                    }\r\n                }\r\n                var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\r\n                path.attr({\r\n                    cursor: getCursor(this._orient),\r\n                    draggable: true,\r\n                    drift: bind(this._onDragMove, this, handleIndex),\r\n                    ondragend: bind(this._onDragEnd, this),\r\n                    onmouseover: bind(this._showDataInfo, this, true),\r\n                    onmouseout: bind(this._showDataInfo, this, false),\r\n                    z2: 5\r\n                });\r\n                var bRect = path.getBoundingRect();\r\n                var handleSize = dataZoomModel.get('handleSize');\r\n                this._handleHeight = parsePercent$2(handleSize, this._size[1]);\r\n                this._handleWidth = bRect.width / bRect.height * this._handleHeight;\r\n                path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\r\n                path.style.strokeNoScale = true;\r\n                path.rectHover = true;\r\n                path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\r\n                enableHoverEmphasis(path);\r\n                var handleColor = dataZoomModel.get('handleColor');\r\n                if (handleColor != null) {\r\n                    path.style.fill = handleColor;\r\n                }\r\n                sliderGroup.add(handles[handleIndex] = path);\r\n                var textStyleModel = dataZoomModel.getModel('textStyle');\r\n                thisGroup.add(handleLabels[handleIndex] = new ZRText({\r\n                    silent: true,\r\n                    invisible: true,\r\n                    style: {\r\n                        x: 0, y: 0, text: '',\r\n                        verticalAlign: 'middle',\r\n                        align: 'center',\r\n                        fill: textStyleModel.getTextColor(),\r\n                        font: textStyleModel.getFont()\r\n                    },\r\n                    z2: 10\r\n                }));\r\n            }, this);\r\n            var actualMoveZone = filler;\r\n            if (brushSelect) {\r\n                var moveHandleHeight = parsePercent$2(dataZoomModel.get('moveHandleSize'), size[1]);\r\n                var moveHandle_1 = displayables.moveHandle = new Rect({\r\n                    style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\r\n                    silent: true,\r\n                    shape: {\r\n                        r: [0, 0, 2, 2],\r\n                        y: size[1] - 0.5,\r\n                        height: moveHandleHeight\r\n                    }\r\n                });\r\n                var iconSize = moveHandleHeight * 0.8;\r\n                var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\r\n                moveHandleIcon.silent = true;\r\n                moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\r\n                moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\r\n                var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\r\n                actualMoveZone = displayables.moveZone = new Rect({\r\n                    invisible: true,\r\n                    shape: {\r\n                        y: size[1] - moveZoneExpandSize,\r\n                        height: moveHandleHeight + moveZoneExpandSize\r\n                    }\r\n                });\r\n                actualMoveZone.on('mouseover', function () {\r\n                    api.enterEmphasis(moveHandle_1);\r\n                })\r\n                    .on('mouseout', function () {\r\n                    api.leaveEmphasis(moveHandle_1);\r\n                });\r\n                sliderGroup.add(moveHandle_1);\r\n                sliderGroup.add(moveHandleIcon);\r\n                sliderGroup.add(actualMoveZone);\r\n            }\r\n            actualMoveZone.attr({\r\n                draggable: true,\r\n                cursor: getCursor(this._orient),\r\n                drift: bind(this._onDragMove, this, 'all'),\r\n                ondragstart: bind(this._showDataInfo, this, true),\r\n                ondragend: bind(this._onDragEnd, this),\r\n                onmouseover: bind(this._showDataInfo, this, true),\r\n                onmouseout: bind(this._showDataInfo, this, false)\r\n            });\r\n        };\r\n        SliderZoomView.prototype._resetInterval = function () {\r\n            var range = this._range = this.dataZoomModel.getPercentRange();\r\n            var viewExtent = this._getViewExtent();\r\n            this._handleEnds = [\r\n                linearMap(range[0], [0, 100], viewExtent, true),\r\n                linearMap(range[1], [0, 100], viewExtent, true)\r\n            ];\r\n        };\r\n        SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var handleEnds = this._handleEnds;\r\n            var viewExtend = this._getViewExtent();\r\n            var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\r\n            var percentExtent = [0, 100];\r\n            sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null\r\n                ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null\r\n                ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\r\n            var lastRange = this._range;\r\n            var range = this._range = asc([\r\n                linearMap(handleEnds[0], viewExtend, percentExtent, true),\r\n                linearMap(handleEnds[1], viewExtend, percentExtent, true)\r\n            ]);\r\n            return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\r\n        };\r\n        SliderZoomView.prototype._updateView = function (nonRealtime) {\r\n            var displaybles = this._displayables;\r\n            var handleEnds = this._handleEnds;\r\n            var handleInterval = asc(handleEnds.slice());\r\n            var size = this._size;\r\n            each([0, 1], function (handleIndex) {\r\n                var handle = displaybles.handles[handleIndex];\r\n                var handleHeight = this._handleHeight;\r\n                handle.attr({\r\n                    scaleX: handleHeight / 2,\r\n                    scaleY: handleHeight / 2,\r\n                    x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\r\n                    y: size[1] / 2 - handleHeight / 2\r\n                });\r\n            }, this);\r\n            displaybles.filler.setShape({\r\n                x: handleInterval[0],\r\n                y: 0,\r\n                width: handleInterval[1] - handleInterval[0],\r\n                height: size[1]\r\n            });\r\n            var viewExtent = {\r\n                x: handleInterval[0],\r\n                width: handleInterval[1] - handleInterval[0]\r\n            };\r\n            if (displaybles.moveHandle) {\r\n                displaybles.moveHandle.setShape(viewExtent);\r\n                displaybles.moveZone.setShape(viewExtent);\r\n                displaybles.moveZone.getBoundingRect();\r\n                displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\r\n            }\r\n            var dataShadowSegs = displaybles.dataShadowSegs;\r\n            var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\r\n            for (var i = 0; i < dataShadowSegs.length; i++) {\r\n                var segGroup = dataShadowSegs[i];\r\n                var clipPath = segGroup.getClipPath();\r\n                if (!clipPath) {\r\n                    clipPath = new Rect();\r\n                    segGroup.setClipPath(clipPath);\r\n                }\r\n                clipPath.setShape({\r\n                    x: segIntervals[i],\r\n                    y: 0,\r\n                    width: segIntervals[i + 1] - segIntervals[i],\r\n                    height: size[1]\r\n                });\r\n            }\r\n            this._updateDataInfo(nonRealtime);\r\n        };\r\n        SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var displaybles = this._displayables;\r\n            var handleLabels = displaybles.handleLabels;\r\n            var orient = this._orient;\r\n            var labelTexts = ['', ''];\r\n            if (dataZoomModel.get('showDetail')) {\r\n                var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\r\n                if (axisProxy) {\r\n                    var axis = axisProxy.getAxisModel().axis;\r\n                    var range = this._range;\r\n                    var dataInterval = nonRealtime\r\n                        ? axisProxy.calculateDataWindow({\r\n                            start: range[0], end: range[1]\r\n                        }).valueWindow\r\n                        : axisProxy.getDataValueWindow();\r\n                    labelTexts = [\r\n                        this._formatLabel(dataInterval[0], axis),\r\n                        this._formatLabel(dataInterval[1], axis)\r\n                    ];\r\n                }\r\n            }\r\n            var orderedHandleEnds = asc(this._handleEnds.slice());\r\n            setLabel.call(this, 0);\r\n            setLabel.call(this, 1);\r\n            function setLabel(handleIndex) {\r\n                var barTransform = getTransform(displaybles.handles[handleIndex].parent, this.group);\r\n                var direction = transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\r\n                var offset = this._handleWidth / 2 + LABEL_GAP;\r\n                var textPoint = applyTransform$1([\r\n                    orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset),\r\n                    this._size[1] / 2\r\n                ], barTransform);\r\n                handleLabels[handleIndex].setStyle({\r\n                    x: textPoint[0],\r\n                    y: textPoint[1],\r\n                    verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\r\n                    align: orient === HORIZONTAL ? direction : 'center',\r\n                    text: labelTexts[handleIndex]\r\n                });\r\n            }\r\n        };\r\n        SliderZoomView.prototype._formatLabel = function (value, axis) {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var labelFormatter = dataZoomModel.get('labelFormatter');\r\n            var labelPrecision = dataZoomModel.get('labelPrecision');\r\n            if (labelPrecision == null || labelPrecision === 'auto') {\r\n                labelPrecision = axis.getPixelPrecision();\r\n            }\r\n            var valueStr = (value == null || isNaN(value))\r\n                ? ''\r\n                : (axis.type === 'category' || axis.type === 'time')\r\n                    ? axis.scale.getLabel({\r\n                        value: Math.round(value)\r\n                    })\r\n                    : value.toFixed(Math.min(labelPrecision, 20));\r\n            return isFunction(labelFormatter)\r\n                ? labelFormatter(value, valueStr)\r\n                : isString(labelFormatter)\r\n                    ? labelFormatter.replace('{value}', valueStr)\r\n                    : valueStr;\r\n        };\r\n        SliderZoomView.prototype._showDataInfo = function (showOrHide) {\r\n            showOrHide = this._dragging || showOrHide;\r\n            var displayables = this._displayables;\r\n            var handleLabels = displayables.handleLabels;\r\n            handleLabels[0].attr('invisible', !showOrHide);\r\n            handleLabels[1].attr('invisible', !showOrHide);\r\n            displayables.moveHandle\r\n                && this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\r\n        };\r\n        SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\r\n            this._dragging = true;\r\n            stop(event.event);\r\n            var barTransform = this._displayables.sliderGroup.getLocalTransform();\r\n            var vertex = applyTransform$1([dx, dy], barTransform, true);\r\n            var changed = this._updateInterval(handleIndex, vertex[0]);\r\n            var realtime = this.dataZoomModel.get('realtime');\r\n            this._updateView(!realtime);\r\n            changed && realtime && this._dispatchZoomAction(true);\r\n        };\r\n        SliderZoomView.prototype._onDragEnd = function () {\r\n            this._dragging = false;\r\n            this._showDataInfo(false);\r\n            var realtime = this.dataZoomModel.get('realtime');\r\n            !realtime && this._dispatchZoomAction(false);\r\n        };\r\n        SliderZoomView.prototype._onClickPanel = function (e) {\r\n            var size = this._size;\r\n            var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\r\n            if (localPoint[0] < 0 || localPoint[0] > size[0]\r\n                || localPoint[1] < 0 || localPoint[1] > size[1]) {\r\n                return;\r\n            }\r\n            var handleEnds = this._handleEnds;\r\n            var center = (handleEnds[0] + handleEnds[1]) / 2;\r\n            var changed = this._updateInterval('all', localPoint[0] - center);\r\n            this._updateView();\r\n            changed && this._dispatchZoomAction(false);\r\n        };\r\n        SliderZoomView.prototype._onBrushStart = function (e) {\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            this._brushStart = new Point(x, y);\r\n            this._brushing = true;\r\n            this._brushStartTime = +new Date();\r\n        };\r\n        SliderZoomView.prototype._onBrushEnd = function (e) {\r\n            if (!this._brushing) {\r\n                return;\r\n            }\r\n            var brushRect = this._displayables.brushRect;\r\n            this._brushing = false;\r\n            if (!brushRect) {\r\n                return;\r\n            }\r\n            brushRect.attr('ignore', true);\r\n            var brushShape = brushRect.shape;\r\n            var brushEndTime = +new Date();\r\n            if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\r\n                return;\r\n            }\r\n            var viewExtend = this._getViewExtent();\r\n            var percentExtent = [0, 100];\r\n            this._range = asc([\r\n                linearMap(brushShape.x, viewExtend, percentExtent, true),\r\n                linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)\r\n            ]);\r\n            this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\r\n            this._updateView();\r\n            this._dispatchZoomAction(false);\r\n        };\r\n        SliderZoomView.prototype._onBrush = function (e) {\r\n            if (this._brushing) {\r\n                stop(e.event);\r\n                this._updateBrushRect(e.offsetX, e.offsetY);\r\n            }\r\n        };\r\n        SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\r\n            var displayables = this._displayables;\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var brushRect = displayables.brushRect;\r\n            if (!brushRect) {\r\n                brushRect = displayables.brushRect = new Rect$2({\r\n                    silent: true,\r\n                    style: dataZoomModel.getModel('brushStyle').getItemStyle()\r\n                });\r\n                displayables.sliderGroup.add(brushRect);\r\n            }\r\n            brushRect.attr('ignore', false);\r\n            var brushStart = this._brushStart;\r\n            var sliderGroup = this._displayables.sliderGroup;\r\n            var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\r\n            var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\r\n            var size = this._size;\r\n            endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\r\n            brushRect.setShape({\r\n                x: startPoint[0], y: 0,\r\n                width: endPoint[0] - startPoint[0], height: size[1]\r\n            });\r\n        };\r\n        SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\r\n            var range = this._range;\r\n            this.api.dispatchAction({\r\n                type: 'dataZoom',\r\n                from: this.uid,\r\n                dataZoomId: this.dataZoomModel.id,\r\n                animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\r\n                start: range[0],\r\n                end: range[1]\r\n            });\r\n        };\r\n        SliderZoomView.prototype._findCoordRect = function () {\r\n            var rect;\r\n            var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\r\n            if (!rect && coordSysInfoList.length) {\r\n                var coordSys = coordSysInfoList[0].model.coordinateSystem;\r\n                rect = coordSys.getRect && coordSys.getRect();\r\n            }\r\n            if (!rect) {\r\n                var width = this.api.getWidth();\r\n                var height = this.api.getHeight();\r\n                rect = {\r\n                    x: width * 0.2,\r\n                    y: height * 0.2,\r\n                    width: width * 0.6,\r\n                    height: height * 0.6\r\n                };\r\n            }\r\n            return rect;\r\n        };\r\n        SliderZoomView.type = 'dataZoom.slider';\r\n        return SliderZoomView;\r\n    }(DataZoomView));\r\n    function getOtherDim(thisDim) {\r\n        var map = { x: 'y', y: 'x', radius: 'angle', angle: 'radius' };\r\n        return map[thisDim];\r\n    }\r\n    function getCursor(orient) {\r\n        return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n    }\r\n    ComponentView.registerClass(SliderZoomView);\n\n    var InsideZoomModel = (function (_super) {\r\n        __extends(InsideZoomModel, _super);\r\n        function InsideZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = InsideZoomModel.type;\r\n            return _this;\r\n        }\r\n        InsideZoomModel.type = 'dataZoom.inside';\r\n        InsideZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\r\n            disabled: false,\r\n            zoomLock: false,\r\n            zoomOnMouseWheel: true,\r\n            moveOnMouseMove: true,\r\n            moveOnMouseWheel: false,\r\n            preventDefaultMouseMove: true\r\n        });\r\n        return InsideZoomModel;\r\n    }(DataZoomModel));\r\n    ComponentModel.registerClass(InsideZoomModel);\n\n    var inner$m = makeInner();\r\n    registerProcessor(PRIORITY.PROCESSOR.FILTER, function (ecModel, api) {\r\n        var apiInner = inner$m(api);\r\n        var coordSysRecordMap = apiInner.coordSysRecordMap\r\n            || (apiInner.coordSysRecordMap = createHashMap());\r\n        coordSysRecordMap.each(function (coordSysRecord) {\r\n            coordSysRecord.dataZoomInfoMap = null;\r\n        });\r\n        ecModel.eachComponent({ mainType: 'dataZoom', subType: 'inside' }, function (dataZoomModel) {\r\n            var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel);\r\n            each(dzReferCoordSysWrap.infoList, function (dzCoordSysInfo) {\r\n                var coordSysUid = dzCoordSysInfo.model.uid;\r\n                var coordSysRecord = coordSysRecordMap.get(coordSysUid)\r\n                    || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model));\r\n                var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap\r\n                    || (coordSysRecord.dataZoomInfoMap = createHashMap());\r\n                dataZoomInfoMap.set(dataZoomModel.uid, {\r\n                    dzReferCoordSysInfo: dzCoordSysInfo,\r\n                    model: dataZoomModel,\r\n                    getRange: null\r\n                });\r\n            });\r\n        });\r\n        coordSysRecordMap.each(function (coordSysRecord) {\r\n            var controller = coordSysRecord.controller;\r\n            var firstDzInfo;\r\n            var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\r\n            if (dataZoomInfoMap) {\r\n                var firstDzKey = dataZoomInfoMap.keys()[0];\r\n                if (firstDzKey != null) {\r\n                    firstDzInfo = dataZoomInfoMap.get(firstDzKey);\r\n                }\r\n            }\r\n            if (!firstDzInfo) {\r\n                disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\r\n                return;\r\n            }\r\n            var controllerParams = mergeControllerParams(dataZoomInfoMap);\r\n            controller.enable(controllerParams.controlType, controllerParams.opt);\r\n            controller.setPointerChecker(coordSysRecord.containsPoint);\r\n            createOrUpdate(coordSysRecord, 'dispatchAction', firstDzInfo.model.get('throttle', true), 'fixRate');\r\n        });\r\n    });\r\n    function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {\r\n        inner$m(api).coordSysRecordMap.each(function (coordSysRecord) {\r\n            var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid);\r\n            if (dzInfo) {\r\n                dzInfo.getRange = getRange;\r\n            }\r\n        });\r\n    }\r\n    function disposeCoordSysRecordIfNeeded(api, dataZoomModel) {\r\n        var coordSysRecordMap = inner$m(api).coordSysRecordMap;\r\n        var coordSysKeyArr = coordSysRecordMap.keys();\r\n        for (var i = 0; i < coordSysKeyArr.length; i++) {\r\n            var coordSysKey = coordSysKeyArr[i];\r\n            var coordSysRecord = coordSysRecordMap.get(coordSysKey);\r\n            var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\r\n            if (dataZoomInfoMap) {\r\n                var dzUid = dataZoomModel.uid;\r\n                var dzInfo = dataZoomInfoMap.get(dzUid);\r\n                if (dzInfo) {\r\n                    dataZoomInfoMap.removeKey(dzUid);\r\n                    if (!dataZoomInfoMap.keys().length) {\r\n                        disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {\r\n        if (coordSysRecord) {\r\n            coordSysRecordMap.removeKey(coordSysRecord.model.uid);\r\n            var controller = coordSysRecord.controller;\r\n            controller && controller.dispose();\r\n        }\r\n    }\r\n    function createCoordSysRecord(api, coordSysModel) {\r\n        var coordSysRecord = {\r\n            model: coordSysModel,\r\n            containsPoint: curry(containsPoint, coordSysModel),\r\n            dispatchAction: curry(dispatchAction$1, api),\r\n            dataZoomInfoMap: null,\r\n            controller: null\r\n        };\r\n        var controller = coordSysRecord.controller = new RoamController(api.getZr());\r\n        each(['pan', 'zoom', 'scrollMove'], function (eventName) {\r\n            controller.on(eventName, function (event) {\r\n                var batch = [];\r\n                coordSysRecord.dataZoomInfoMap.each(function (dzInfo) {\r\n                    if (!event.isAvailableBehavior(dzInfo.model.option)) {\r\n                        return;\r\n                    }\r\n                    var method = (dzInfo.getRange || {})[eventName];\r\n                    var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event);\r\n                    !dzInfo.model.get('disabled', true) && range && batch.push({\r\n                        dataZoomId: dzInfo.model.id,\r\n                        start: range[0],\r\n                        end: range[1]\r\n                    });\r\n                });\r\n                batch.length && coordSysRecord.dispatchAction(batch);\r\n            });\r\n        });\r\n        return coordSysRecord;\r\n    }\r\n    function dispatchAction$1(api, batch) {\r\n        api.dispatchAction({\r\n            type: 'dataZoom',\r\n            animation: {\r\n                easing: 'cubicOut',\r\n                duration: 100\r\n            },\r\n            batch: batch\r\n        });\r\n    }\r\n    function containsPoint(coordSysModel, e, x, y) {\r\n        return coordSysModel.coordinateSystem.containPoint([x, y]);\r\n    }\r\n    function mergeControllerParams(dataZoomInfoMap) {\r\n        var controlType;\r\n        var prefix = 'type_';\r\n        var typePriority = {\r\n            'type_true': 2,\r\n            'type_move': 1,\r\n            'type_false': 0,\r\n            'type_undefined': -1\r\n        };\r\n        var preventDefaultMouseMove = true;\r\n        dataZoomInfoMap.each(function (dataZoomInfo) {\r\n            var dataZoomModel = dataZoomInfo.model;\r\n            var oneType = dataZoomModel.get('disabled', true)\r\n                ? false\r\n                : dataZoomModel.get('zoomLock', true)\r\n                    ? 'move'\r\n                    : true;\r\n            if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\r\n                controlType = oneType;\r\n            }\r\n            preventDefaultMouseMove = preventDefaultMouseMove\r\n                && dataZoomModel.get('preventDefaultMouseMove', true);\r\n        });\r\n        return {\r\n            controlType: controlType,\r\n            opt: {\r\n                zoomOnMouseWheel: true,\r\n                moveOnMouseMove: true,\r\n                moveOnMouseWheel: true,\r\n                preventDefaultMouseMove: !!preventDefaultMouseMove\r\n            }\r\n        };\r\n    }\n\n    var InsideZoomView = (function (_super) {\r\n        __extends(InsideZoomView, _super);\r\n        function InsideZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataZoom.inside';\r\n            return _this;\r\n        }\r\n        InsideZoomView.prototype.render = function (dataZoomModel, ecModel, api) {\r\n            _super.prototype.render.apply(this, arguments);\r\n            if (dataZoomModel.noTarget()) {\r\n                this._clear();\r\n                return;\r\n            }\r\n            this.range = dataZoomModel.getPercentRange();\r\n            setViewInfoToCoordSysRecord(api, dataZoomModel, {\r\n                pan: bind(getRangeHandlers.pan, this),\r\n                zoom: bind(getRangeHandlers.zoom, this),\r\n                scrollMove: bind(getRangeHandlers.scrollMove, this)\r\n            });\r\n        };\r\n        InsideZoomView.prototype.dispose = function () {\r\n            this._clear();\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        InsideZoomView.prototype._clear = function () {\r\n            disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel);\r\n            this.range = null;\r\n        };\r\n        InsideZoomView.type = 'dataZoom.inside';\r\n        return InsideZoomView;\r\n    }(DataZoomView));\r\n    var getRangeHandlers = {\r\n        zoom: function (coordSysInfo, coordSysMainType, controller, e) {\r\n            var lastRange = this.range;\r\n            var range = lastRange.slice();\r\n            var axisModel = coordSysInfo.axisModels[0];\r\n            if (!axisModel) {\r\n                return;\r\n            }\r\n            var directionInfo = getDirectionInfo[coordSysMainType](null, [e.originX, e.originY], axisModel, controller, coordSysInfo);\r\n            var percentPoint = (directionInfo.signal > 0\r\n                ? (directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel)\r\n                : (directionInfo.pixel - directionInfo.pixelStart)) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\r\n            var scale = Math.max(1 / e.scale, 0);\r\n            range[0] = (range[0] - percentPoint) * scale + percentPoint;\r\n            range[1] = (range[1] - percentPoint) * scale + percentPoint;\r\n            var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\r\n            sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\r\n            this.range = range;\r\n            if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\r\n                return range;\r\n            }\r\n        },\r\n        pan: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\r\n            var directionInfo = getDirectionInfo[coordSysMainType]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordSysInfo);\r\n            return directionInfo.signal\r\n                * (range[1] - range[0])\r\n                * directionInfo.pixel / directionInfo.pixelLength;\r\n        }),\r\n        scrollMove: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\r\n            var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordSysInfo);\r\n            return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\r\n        })\r\n    };\r\n    function makeMover(getPercentDelta) {\r\n        return function (coordSysInfo, coordSysMainType, controller, e) {\r\n            var lastRange = this.range;\r\n            var range = lastRange.slice();\r\n            var axisModel = coordSysInfo.axisModels[0];\r\n            if (!axisModel) {\r\n                return;\r\n            }\r\n            var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e);\r\n            sliderMove(percentDelta, range, [0, 100], 'all');\r\n            this.range = range;\r\n            if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\r\n                return range;\r\n            }\r\n        };\r\n    }\r\n    var getDirectionInfo = {\r\n        grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n            var axis = axisModel.axis;\r\n            var ret = {};\r\n            var rect = coordSysInfo.model.coordinateSystem.getRect();\r\n            oldPoint = oldPoint || [0, 0];\r\n            if (axis.dim === 'x') {\r\n                ret.pixel = newPoint[0] - oldPoint[0];\r\n                ret.pixelLength = rect.width;\r\n                ret.pixelStart = rect.x;\r\n                ret.signal = axis.inverse ? 1 : -1;\r\n            }\r\n            else {\r\n                ret.pixel = newPoint[1] - oldPoint[1];\r\n                ret.pixelLength = rect.height;\r\n                ret.pixelStart = rect.y;\r\n                ret.signal = axis.inverse ? -1 : 1;\r\n            }\r\n            return ret;\r\n        },\r\n        polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n            var axis = axisModel.axis;\r\n            var ret = {};\r\n            var polar = coordSysInfo.model.coordinateSystem;\r\n            var radiusExtent = polar.getRadiusAxis().getExtent();\r\n            var angleExtent = polar.getAngleAxis().getExtent();\r\n            oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\r\n            newPoint = polar.pointToCoord(newPoint);\r\n            if (axisModel.mainType === 'radiusAxis') {\r\n                ret.pixel = newPoint[0] - oldPoint[0];\r\n                ret.pixelLength = radiusExtent[1] - radiusExtent[0];\r\n                ret.pixelStart = radiusExtent[0];\r\n                ret.signal = axis.inverse ? 1 : -1;\r\n            }\r\n            else {\r\n                ret.pixel = newPoint[1] - oldPoint[1];\r\n                ret.pixelLength = angleExtent[1] - angleExtent[0];\r\n                ret.pixelStart = angleExtent[0];\r\n                ret.signal = axis.inverse ? -1 : 1;\r\n            }\r\n            return ret;\r\n        },\r\n        singleAxis: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n            var axis = axisModel.axis;\r\n            var rect = coordSysInfo.model.coordinateSystem.getRect();\r\n            var ret = {};\r\n            oldPoint = oldPoint || [0, 0];\r\n            if (axis.orient === 'horizontal') {\r\n                ret.pixel = newPoint[0] - oldPoint[0];\r\n                ret.pixelLength = rect.width;\r\n                ret.pixelStart = rect.x;\r\n                ret.signal = axis.inverse ? 1 : -1;\r\n            }\r\n            else {\r\n                ret.pixel = newPoint[1] - oldPoint[1];\r\n                ret.pixelLength = rect.height;\r\n                ret.pixelStart = rect.y;\r\n                ret.signal = axis.inverse ? -1 : 1;\r\n            }\r\n            return ret;\r\n        }\r\n    };\r\n    ComponentView.registerClass(InsideZoomView);\n\n    var each$f = each;\r\n    function visualMapPreprocessor(option) {\r\n        var visualMap = option && option.visualMap;\r\n        if (!isArray(visualMap)) {\r\n            visualMap = visualMap ? [visualMap] : [];\r\n        }\r\n        each$f(visualMap, function (opt) {\r\n            if (!opt) {\r\n                return;\r\n            }\r\n            if (has$1(opt, 'splitList') && !has$1(opt, 'pieces')) {\r\n                opt.pieces = opt.splitList;\r\n                delete opt.splitList;\r\n            }\r\n            var pieces = opt.pieces;\r\n            if (pieces && isArray(pieces)) {\r\n                each$f(pieces, function (piece) {\r\n                    if (isObject(piece)) {\r\n                        if (has$1(piece, 'start') && !has$1(piece, 'min')) {\r\n                            piece.min = piece.start;\r\n                        }\r\n                        if (has$1(piece, 'end') && !has$1(piece, 'max')) {\r\n                            piece.max = piece.end;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\r\n    function has$1(obj, name) {\r\n        return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\r\n    }\n\n    ComponentModel.registerSubTypeDefaulter('visualMap', function (option) {\r\n        return (!option.categories\r\n            && (!(option.pieces\r\n                ? option.pieces.length > 0\r\n                : option.splitNumber > 0)\r\n                || option.calculable))\r\n            ? 'continuous' : 'piecewise';\r\n    });\n\n    var VISUAL_PRIORITY = PRIORITY.VISUAL.COMPONENT;\r\n    registerVisual(VISUAL_PRIORITY, {\r\n        createOnAllSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var resetDefines = [];\r\n            ecModel.eachComponent('visualMap', function (visualMapModel) {\r\n                var pipelineContext = seriesModel.pipelineContext;\r\n                if (!visualMapModel.isTargetSeries(seriesModel)\r\n                    || (pipelineContext && pipelineContext.large)) {\r\n                    return;\r\n                }\r\n                resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\r\n            });\r\n            return resetDefines;\r\n        }\r\n    });\r\n    registerVisual(VISUAL_PRIORITY, {\r\n        createOnAllSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            var visualMetaList = [];\r\n            ecModel.eachComponent('visualMap', function (visualMapModel) {\r\n                if (visualMapModel.isTargetSeries(seriesModel)) {\r\n                    var visualMeta = visualMapModel.getVisualMeta(bind(getColorVisual, null, seriesModel, visualMapModel)) || {\r\n                        stops: [],\r\n                        outerColors: []\r\n                    };\r\n                    var concreteDim = visualMapModel.getDataDimension(data);\r\n                    var dimInfo = data.getDimensionInfo(concreteDim);\r\n                    if (dimInfo != null) {\r\n                        visualMeta.dimension = dimInfo.index;\r\n                        visualMetaList.push(visualMeta);\r\n                    }\r\n                }\r\n            });\r\n            seriesModel.getData().setVisual('visualMeta', visualMetaList);\r\n        }\r\n    });\r\n    function getColorVisual(seriesModel, visualMapModel, value, valueState) {\r\n        var mappings = visualMapModel.targetVisuals[valueState];\r\n        var visualTypes = VisualMapping.prepareVisualTypes(mappings);\r\n        var resultVisual = {\r\n            color: getVisualFromData(seriesModel.getData(), 'color')\r\n        };\r\n        for (var i = 0, len = visualTypes.length; i < len; i++) {\r\n            var type = visualTypes[i];\r\n            var mapping = mappings[(type === 'opacity' ? '__alphaForOpacity' : type)];\r\n            mapping && mapping.applyVisual(value, getVisual, setVisual);\r\n        }\r\n        return resultVisual.color;\r\n        function getVisual(key) {\r\n            return resultVisual[key];\r\n        }\r\n        function setVisual(key, value) {\r\n            resultVisual[key] = value;\r\n        }\r\n    }\n\n    var visualDefault = {\r\n        get: function (visualType, key, isCategory) {\r\n            var value = clone((defaultOption$2[visualType] || {})[key]);\r\n            return isCategory\r\n                ? (isArray(value) ? value[value.length - 1] : value)\r\n                : value;\r\n        }\r\n    };\r\n    var defaultOption$2 = {\r\n        color: {\r\n            active: ['#006edd', '#e0ffff'],\r\n            inactive: ['rgba(0,0,0,0)']\r\n        },\r\n        colorHue: {\r\n            active: [0, 360],\r\n            inactive: [0, 0]\r\n        },\r\n        colorSaturation: {\r\n            active: [0.3, 1],\r\n            inactive: [0, 0]\r\n        },\r\n        colorLightness: {\r\n            active: [0.9, 0.5],\r\n            inactive: [0, 0]\r\n        },\r\n        colorAlpha: {\r\n            active: [0.3, 1],\r\n            inactive: [0, 0]\r\n        },\r\n        opacity: {\r\n            active: [0.3, 1],\r\n            inactive: [0, 0]\r\n        },\r\n        symbol: {\r\n            active: ['circle', 'roundRect', 'diamond'],\r\n            inactive: ['none']\r\n        },\r\n        symbolSize: {\r\n            active: [10, 50],\r\n            inactive: [0, 0]\r\n        }\r\n    };\n\n    var mapVisual$1 = VisualMapping.mapVisual;\r\n    var eachVisual = VisualMapping.eachVisual;\r\n    var isArray$1 = isArray;\r\n    var each$g = each;\r\n    var asc$2 = asc;\r\n    var linearMap$1 = linearMap;\r\n    var VisualMapModel = (function (_super) {\r\n        __extends(VisualMapModel, _super);\r\n        function VisualMapModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = VisualMapModel.type;\r\n            _this.stateList = ['inRange', 'outOfRange'];\r\n            _this.replacableOptionKeys = [\r\n                'inRange', 'outOfRange', 'target', 'controller', 'color'\r\n            ];\r\n            _this.layoutMode = {\r\n                type: 'box', ignoreSize: true\r\n            };\r\n            _this.dataBound = [-Infinity, Infinity];\r\n            _this.targetVisuals = {};\r\n            _this.controllerVisuals = {};\r\n            return _this;\r\n        }\r\n        VisualMapModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n        };\r\n        VisualMapModel.prototype.optionUpdated = function (newOption, isInit) {\r\n            var thisOption = this.option;\r\n            if (!env.canvasSupported) {\r\n                thisOption.realtime = false;\r\n            }\r\n            !isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\r\n            this.textStyleModel = this.getModel('textStyle');\r\n            this.resetItemSize();\r\n            this.completeVisualOption();\r\n        };\r\n        VisualMapModel.prototype.resetVisual = function (supplementVisualOption) {\r\n            var stateList = this.stateList;\r\n            supplementVisualOption = bind(supplementVisualOption, this);\r\n            this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption);\r\n            this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption);\r\n        };\r\n        VisualMapModel.prototype.getTargetSeriesIndices = function () {\r\n            var optionSeriesIndex = this.option.seriesIndex;\r\n            var seriesIndices = [];\r\n            if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\r\n                this.ecModel.eachSeries(function (seriesModel, index) {\r\n                    seriesIndices.push(index);\r\n                });\r\n            }\r\n            else {\r\n                seriesIndices = normalizeToArray(optionSeriesIndex);\r\n            }\r\n            return seriesIndices;\r\n        };\r\n        VisualMapModel.prototype.eachTargetSeries = function (callback, context) {\r\n            each(this.getTargetSeriesIndices(), function (seriesIndex) {\r\n                var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex);\r\n                if (seriesModel) {\r\n                    callback.call(context, seriesModel);\r\n                }\r\n            }, this);\r\n        };\r\n        VisualMapModel.prototype.isTargetSeries = function (seriesModel) {\r\n            var is = false;\r\n            this.eachTargetSeries(function (model) {\r\n                model === seriesModel && (is = true);\r\n            });\r\n            return is;\r\n        };\r\n        VisualMapModel.prototype.formatValueText = function (value, isCategory, edgeSymbols) {\r\n            var option = this.option;\r\n            var precision = option.precision;\r\n            var dataBound = this.dataBound;\r\n            var formatter = option.formatter;\r\n            var isMinMax;\r\n            edgeSymbols = edgeSymbols || ['<', '>'];\r\n            if (isArray(value)) {\r\n                value = value.slice();\r\n                isMinMax = true;\r\n            }\r\n            var textValue = isCategory\r\n                ? value\r\n                : (isMinMax\r\n                    ? [toFixed(value[0]), toFixed(value[1])]\r\n                    : toFixed(value));\r\n            if (isString(formatter)) {\r\n                return formatter\r\n                    .replace('{value}', isMinMax ? textValue[0] : textValue)\r\n                    .replace('{value2}', isMinMax ? textValue[1] : textValue);\r\n            }\r\n            else if (isFunction(formatter)) {\r\n                return isMinMax\r\n                    ? formatter(value[0], value[1])\r\n                    : formatter(value);\r\n            }\r\n            if (isMinMax) {\r\n                if (value[0] === dataBound[0]) {\r\n                    return edgeSymbols[0] + ' ' + textValue[1];\r\n                }\r\n                else if (value[1] === dataBound[1]) {\r\n                    return edgeSymbols[1] + ' ' + textValue[0];\r\n                }\r\n                else {\r\n                    return textValue[0] + ' - ' + textValue[1];\r\n                }\r\n            }\r\n            else {\r\n                return textValue;\r\n            }\r\n            function toFixed(val) {\r\n                return val === dataBound[0]\r\n                    ? 'min'\r\n                    : val === dataBound[1]\r\n                        ? 'max'\r\n                        : (+val).toFixed(Math.min(precision, 20));\r\n            }\r\n        };\r\n        VisualMapModel.prototype.resetExtent = function () {\r\n            var thisOption = this.option;\r\n            var extent = asc$2([thisOption.min, thisOption.max]);\r\n            this._dataExtent = extent;\r\n        };\r\n        VisualMapModel.prototype.getDataDimension = function (list) {\r\n            var optDim = this.option.dimension;\r\n            var listDimensions = list.dimensions;\r\n            if (optDim == null && !listDimensions.length) {\r\n                return;\r\n            }\r\n            if (optDim != null) {\r\n                return list.getDimension(optDim);\r\n            }\r\n            var dimNames = list.dimensions;\r\n            for (var i = dimNames.length - 1; i >= 0; i--) {\r\n                var dimName = dimNames[i];\r\n                var dimInfo = list.getDimensionInfo(dimName);\r\n                if (!dimInfo.isCalculationCoord) {\r\n                    return dimName;\r\n                }\r\n            }\r\n        };\r\n        VisualMapModel.prototype.getExtent = function () {\r\n            return this._dataExtent.slice();\r\n        };\r\n        VisualMapModel.prototype.completeVisualOption = function () {\r\n            var ecModel = this.ecModel;\r\n            var thisOption = this.option;\r\n            var base = {\r\n                inRange: thisOption.inRange,\r\n                outOfRange: thisOption.outOfRange\r\n            };\r\n            var target = thisOption.target || (thisOption.target = {});\r\n            var controller = thisOption.controller || (thisOption.controller = {});\r\n            merge(target, base);\r\n            merge(controller, base);\r\n            var isCategory = this.isCategory();\r\n            completeSingle.call(this, target);\r\n            completeSingle.call(this, controller);\r\n            completeInactive.call(this, target, 'inRange', 'outOfRange');\r\n            completeController.call(this, controller);\r\n            function completeSingle(base) {\r\n                if (isArray$1(thisOption.color)\r\n                    && !base.inRange) {\r\n                    base.inRange = { color: thisOption.color.slice().reverse() };\r\n                }\r\n                base.inRange = base.inRange || { color: ecModel.get('gradientColor') };\r\n            }\r\n            function completeInactive(base, stateExist, stateAbsent) {\r\n                var optExist = base[stateExist];\r\n                var optAbsent = base[stateAbsent];\r\n                if (optExist && !optAbsent) {\r\n                    optAbsent = base[stateAbsent] = {};\r\n                    each$g(optExist, function (visualData, visualType) {\r\n                        if (!VisualMapping.isValidType(visualType)) {\r\n                            return;\r\n                        }\r\n                        var defa = visualDefault.get(visualType, 'inactive', isCategory);\r\n                        if (defa != null) {\r\n                            optAbsent[visualType] = defa;\r\n                            if (visualType === 'color'\r\n                                && !optAbsent.hasOwnProperty('opacity')\r\n                                && !optAbsent.hasOwnProperty('colorAlpha')) {\r\n                                optAbsent.opacity = [0, 0];\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function completeController(controller) {\r\n                var symbolExists = (controller.inRange || {}).symbol\r\n                    || (controller.outOfRange || {}).symbol;\r\n                var symbolSizeExists = (controller.inRange || {}).symbolSize\r\n                    || (controller.outOfRange || {}).symbolSize;\r\n                var inactiveColor = this.get('inactiveColor');\r\n                each$g(this.stateList, function (state) {\r\n                    var itemSize = this.itemSize;\r\n                    var visuals = controller[state];\r\n                    if (!visuals) {\r\n                        visuals = controller[state] = {\r\n                            color: isCategory ? inactiveColor : [inactiveColor]\r\n                        };\r\n                    }\r\n                    if (visuals.symbol == null) {\r\n                        visuals.symbol = symbolExists\r\n                            && clone(symbolExists)\r\n                            || (isCategory ? 'roundRect' : ['roundRect']);\r\n                    }\r\n                    if (visuals.symbolSize == null) {\r\n                        visuals.symbolSize = symbolSizeExists\r\n                            && clone(symbolSizeExists)\r\n                            || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\r\n                    }\r\n                    visuals.symbol = mapVisual$1(visuals.symbol, function (symbol) {\r\n                        return (symbol === 'none' || symbol === 'square') ? 'roundRect' : symbol;\r\n                    });\r\n                    var symbolSize = visuals.symbolSize;\r\n                    if (symbolSize != null) {\r\n                        var max_1 = -Infinity;\r\n                        eachVisual(symbolSize, function (value) {\r\n                            value > max_1 && (max_1 = value);\r\n                        });\r\n                        visuals.symbolSize = mapVisual$1(symbolSize, function (value) {\r\n                            return linearMap$1(value, [0, max_1], [0, itemSize[0]], true);\r\n                        });\r\n                    }\r\n                }, this);\r\n            }\r\n        };\r\n        VisualMapModel.prototype.resetItemSize = function () {\r\n            this.itemSize = [\r\n                parseFloat(this.get('itemWidth')),\r\n                parseFloat(this.get('itemHeight'))\r\n            ];\r\n        };\r\n        VisualMapModel.prototype.isCategory = function () {\r\n            return !!this.option.categories;\r\n        };\r\n        VisualMapModel.prototype.setSelected = function (selected) { };\r\n        VisualMapModel.prototype.getSelected = function () {\r\n            return null;\r\n        };\r\n        VisualMapModel.prototype.getValueState = function (value) {\r\n            return null;\r\n        };\r\n        VisualMapModel.prototype.getVisualMeta = function (getColorVisual) {\r\n            return null;\r\n        };\r\n        VisualMapModel.type = 'visualMap';\r\n        VisualMapModel.dependencies = ['series'];\r\n        VisualMapModel.defaultOption = {\r\n            show: true,\r\n            zlevel: 0,\r\n            z: 4,\r\n            seriesIndex: 'all',\r\n            min: 0,\r\n            max: 200,\r\n            left: 0,\r\n            right: null,\r\n            top: null,\r\n            bottom: 0,\r\n            itemWidth: null,\r\n            itemHeight: null,\r\n            inverse: false,\r\n            orient: 'vertical',\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderColor: '#ccc',\r\n            contentColor: '#5793f3',\r\n            inactiveColor: '#aaa',\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            textGap: 10,\r\n            precision: 0,\r\n            textStyle: {\r\n                color: '#333'\r\n            }\r\n        };\r\n        return VisualMapModel;\r\n    }(ComponentModel));\n\n    var DEFAULT_BAR_BOUND = [20, 140];\r\n    var ContinuousModel = (function (_super) {\r\n        __extends(ContinuousModel, _super);\r\n        function ContinuousModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ContinuousModel.type;\r\n            return _this;\r\n        }\r\n        ContinuousModel.prototype.optionUpdated = function (newOption, isInit) {\r\n            _super.prototype.optionUpdated.apply(this, arguments);\r\n            this.resetExtent();\r\n            this.resetVisual(function (mappingOption) {\r\n                mappingOption.mappingMethod = 'linear';\r\n                mappingOption.dataExtent = this.getExtent();\r\n            });\r\n            this._resetRange();\r\n        };\r\n        ContinuousModel.prototype.resetItemSize = function () {\r\n            _super.prototype.resetItemSize.apply(this, arguments);\r\n            var itemSize = this.itemSize;\r\n            (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\r\n            (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\r\n        };\r\n        ContinuousModel.prototype._resetRange = function () {\r\n            var dataExtent = this.getExtent();\r\n            var range = this.option.range;\r\n            if (!range || range.auto) {\r\n                dataExtent.auto = 1;\r\n                this.option.range = dataExtent;\r\n            }\r\n            else if (isArray(range)) {\r\n                if (range[0] > range[1]) {\r\n                    range.reverse();\r\n                }\r\n                range[0] = Math.max(range[0], dataExtent[0]);\r\n                range[1] = Math.min(range[1], dataExtent[1]);\r\n            }\r\n        };\r\n        ContinuousModel.prototype.completeVisualOption = function () {\r\n            _super.prototype.completeVisualOption.apply(this, arguments);\r\n            each(this.stateList, function (state) {\r\n                var symbolSize = this.option.controller[state].symbolSize;\r\n                if (symbolSize && symbolSize[0] !== symbolSize[1]) {\r\n                    symbolSize[0] = symbolSize[1] / 3;\r\n                }\r\n            }, this);\r\n        };\r\n        ContinuousModel.prototype.setSelected = function (selected) {\r\n            this.option.range = selected.slice();\r\n            this._resetRange();\r\n        };\r\n        ContinuousModel.prototype.getSelected = function () {\r\n            var dataExtent = this.getExtent();\r\n            var dataInterval = asc((this.get('range') || []).slice());\r\n            dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\r\n            dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\r\n            dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\r\n            dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\r\n            return dataInterval;\r\n        };\r\n        ContinuousModel.prototype.getValueState = function (value) {\r\n            var range = this.option.range;\r\n            var dataExtent = this.getExtent();\r\n            return ((range[0] <= dataExtent[0] || range[0] <= value)\r\n                && (range[1] >= dataExtent[1] || value <= range[1])) ? 'inRange' : 'outOfRange';\r\n        };\r\n        ContinuousModel.prototype.findTargetDataIndices = function (range) {\r\n            var result = [];\r\n            this.eachTargetSeries(function (seriesModel) {\r\n                var dataIndices = [];\r\n                var data = seriesModel.getData();\r\n                data.each(this.getDataDimension(data), function (value, dataIndex) {\r\n                    range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\r\n                }, this);\r\n                result.push({\r\n                    seriesId: seriesModel.id,\r\n                    dataIndex: dataIndices\r\n                });\r\n            }, this);\r\n            return result;\r\n        };\r\n        ContinuousModel.prototype.getVisualMeta = function (getColorVisual) {\r\n            var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\r\n            var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\r\n            var stops = [];\r\n            function setStop(value, valueState) {\r\n                stops.push({\r\n                    value: value,\r\n                    color: getColorVisual(value, valueState)\r\n                });\r\n            }\r\n            var iIdx = 0;\r\n            var oIdx = 0;\r\n            var iLen = iVals.length;\r\n            var oLen = oVals.length;\r\n            for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\r\n                if (oVals[oIdx] < iVals[iIdx]) {\r\n                    setStop(oVals[oIdx], 'outOfRange');\r\n                }\r\n            }\r\n            for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\r\n                first && stops.length && setStop(iVals[iIdx], 'outOfRange');\r\n                setStop(iVals[iIdx], 'inRange');\r\n            }\r\n            for (var first = 1; oIdx < oLen; oIdx++) {\r\n                if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\r\n                    if (first) {\r\n                        stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\r\n                        first = 0;\r\n                    }\r\n                    setStop(oVals[oIdx], 'outOfRange');\r\n                }\r\n            }\r\n            var stopsLen = stops.length;\r\n            return {\r\n                stops: stops,\r\n                outerColors: [\r\n                    stopsLen ? stops[0].color : 'transparent',\r\n                    stopsLen ? stops[stopsLen - 1].color : 'transparent'\r\n                ]\r\n            };\r\n        };\r\n        ContinuousModel.type = 'visualMap.continuous';\r\n        ContinuousModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {\r\n            align: 'auto',\r\n            calculable: false,\r\n            hoverLink: true,\r\n            realtime: true,\r\n            handleIcon: 'path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z',\r\n            handleSize: '120%',\r\n            handleStyle: {\r\n                borderColor: '#fff',\r\n                borderWidth: 1\r\n            },\r\n            indicatorIcon: 'circle',\r\n            indicatorSize: '50%',\r\n            indicatorStyle: {\r\n                borderColor: '#fff',\r\n                borderWidth: 2,\r\n                shadowBlur: 2,\r\n                shadowOffsetX: 1,\r\n                shadowOffsetY: 1,\r\n                shadowColor: 'rgba(0,0,0,0.2)'\r\n            }\r\n        });\r\n        return ContinuousModel;\r\n    }(VisualMapModel));\r\n    function getColorStopValues(visualMapModel, valueState, dataExtent) {\r\n        if (dataExtent[0] === dataExtent[1]) {\r\n            return dataExtent.slice();\r\n        }\r\n        var count = 200;\r\n        var step = (dataExtent[1] - dataExtent[0]) / count;\r\n        var value = dataExtent[0];\r\n        var stopValues = [];\r\n        for (var i = 0; i <= count && value < dataExtent[1]; i++) {\r\n            stopValues.push(value);\r\n            value += step;\r\n        }\r\n        stopValues.push(dataExtent[1]);\r\n        return stopValues;\r\n    }\r\n    ComponentModel.registerClass(ContinuousModel);\n\n    var VisualMapView = (function (_super) {\r\n        __extends(VisualMapView, _super);\r\n        function VisualMapView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = VisualMapView.type;\r\n            _this.autoPositionValues = { left: 1, right: 1, top: 1, bottom: 1 };\r\n            return _this;\r\n        }\r\n        VisualMapView.prototype.init = function (ecModel, api) {\r\n            this.ecModel = ecModel;\r\n            this.api = api;\r\n        };\r\n        VisualMapView.prototype.render = function (visualMapModel, ecModel, api, payload) {\r\n            this.visualMapModel = visualMapModel;\r\n            if (visualMapModel.get('show') === false) {\r\n                this.group.removeAll();\r\n                return;\r\n            }\r\n            this.doRender(visualMapModel, ecModel, api, payload);\r\n        };\r\n        VisualMapView.prototype.renderBackground = function (group) {\r\n            var visualMapModel = this.visualMapModel;\r\n            var padding = normalizeCssArray$1(visualMapModel.get('padding') || 0);\r\n            var rect = group.getBoundingRect();\r\n            group.add(new Rect({\r\n                z2: -1,\r\n                silent: true,\r\n                shape: {\r\n                    x: rect.x - padding[3],\r\n                    y: rect.y - padding[0],\r\n                    width: rect.width + padding[3] + padding[1],\r\n                    height: rect.height + padding[0] + padding[2]\r\n                },\r\n                style: {\r\n                    fill: visualMapModel.get('backgroundColor'),\r\n                    stroke: visualMapModel.get('borderColor'),\r\n                    lineWidth: visualMapModel.get('borderWidth')\r\n                }\r\n            }));\r\n        };\r\n        VisualMapView.prototype.getControllerVisual = function (targetValue, visualCluster, opts) {\r\n            opts = opts || {};\r\n            var forceState = opts.forceState;\r\n            var visualMapModel = this.visualMapModel;\r\n            var visualObj = {};\r\n            if (visualCluster === 'symbol') {\r\n                visualObj.symbol = visualMapModel.get('itemSymbol');\r\n            }\r\n            if (visualCluster === 'color') {\r\n                var defaultColor = visualMapModel.get('contentColor');\r\n                visualObj.color = defaultColor;\r\n            }\r\n            function getter(key) {\r\n                return visualObj[key];\r\n            }\r\n            function setter(key, value) {\r\n                visualObj[key] = value;\r\n            }\r\n            var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\r\n            var visualTypes = VisualMapping.prepareVisualTypes(mappings);\r\n            each(visualTypes, function (type) {\r\n                var visualMapping = mappings[type];\r\n                if (opts.convertOpacityToAlpha && type === 'opacity') {\r\n                    type = 'colorAlpha';\r\n                    visualMapping = mappings.__alphaForOpacity;\r\n                }\r\n                if (VisualMapping.dependsOn(type, visualCluster)) {\r\n                    visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\r\n                }\r\n            });\r\n            return visualObj[visualCluster];\r\n        };\r\n        VisualMapView.prototype.positionGroup = function (group) {\r\n            var model = this.visualMapModel;\r\n            var api = this.api;\r\n            positionElement(group, model.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() });\r\n        };\r\n        VisualMapView.prototype.doRender = function (visualMapModel, ecModel, api, payload) { };\r\n        VisualMapView.type = 'visualMap';\r\n        return VisualMapView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(VisualMapView);\n\n    var paramsSet = [\r\n        ['left', 'right', 'width'],\r\n        ['top', 'bottom', 'height']\r\n    ];\r\n    function getItemAlign(visualMapModel, api, itemSize) {\r\n        var modelOption = visualMapModel.option;\r\n        var itemAlign = modelOption.align;\r\n        if (itemAlign != null && itemAlign !== 'auto') {\r\n            return itemAlign;\r\n        }\r\n        var ecSize = { width: api.getWidth(), height: api.getHeight() };\r\n        var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\r\n        var reals = paramsSet[realIndex];\r\n        var fakeValue = [0, null, 10];\r\n        var layoutInput = {};\r\n        for (var i = 0; i < 3; i++) {\r\n            layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\r\n            layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\r\n        }\r\n        var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\r\n        var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\r\n        return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5\r\n            < ecSize[rParam[1]] * 0.5 ? 0 : 1];\r\n    }\r\n    function makeHighDownBatch(batch, visualMapModel) {\r\n        each(batch || [], function (batchItem) {\r\n            if (batchItem.dataIndex != null) {\r\n                batchItem.dataIndexInside = batchItem.dataIndex;\r\n                batchItem.dataIndex = null;\r\n            }\r\n            batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\r\n        });\r\n        return batch;\r\n    }\n\n    var linearMap$2 = linearMap;\r\n    var each$h = each;\r\n    var mathMin$a = Math.min;\r\n    var mathMax$a = Math.max;\r\n    var HOVER_LINK_SIZE = 12;\r\n    var HOVER_LINK_OUT = 6;\r\n    var ContinuousView = (function (_super) {\r\n        __extends(ContinuousView, _super);\r\n        function ContinuousView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ContinuousView.type;\r\n            _this._shapes = {};\r\n            _this._dataInterval = [];\r\n            _this._handleEnds = [];\r\n            _this._hoverLinkDataIndices = [];\r\n            return _this;\r\n        }\r\n        ContinuousView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {\r\n            this._api = api;\r\n            if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\r\n                this._buildView();\r\n            }\r\n        };\r\n        ContinuousView.prototype._buildView = function () {\r\n            this.group.removeAll();\r\n            var visualMapModel = this.visualMapModel;\r\n            var thisGroup = this.group;\r\n            this._orient = visualMapModel.get('orient');\r\n            this._useHandle = visualMapModel.get('calculable');\r\n            this._resetInterval();\r\n            this._renderBar(thisGroup);\r\n            var dataRangeText = visualMapModel.get('text');\r\n            this._renderEndsText(thisGroup, dataRangeText, 0);\r\n            this._renderEndsText(thisGroup, dataRangeText, 1);\r\n            this._updateView(true);\r\n            this.renderBackground(thisGroup);\r\n            this._updateView();\r\n            this._enableHoverLinkToSeries();\r\n            this._enableHoverLinkFromSeries();\r\n            this.positionGroup(thisGroup);\r\n        };\r\n        ContinuousView.prototype._renderEndsText = function (group, dataRangeText, endsIndex) {\r\n            if (!dataRangeText) {\r\n                return;\r\n            }\r\n            var text = dataRangeText[1 - endsIndex];\r\n            text = text != null ? text + '' : '';\r\n            var visualMapModel = this.visualMapModel;\r\n            var textGap = visualMapModel.get('textGap');\r\n            var itemSize = visualMapModel.itemSize;\r\n            var barGroup = this._shapes.mainGroup;\r\n            var position = this._applyTransform([\r\n                itemSize[0] / 2,\r\n                endsIndex === 0 ? -textGap : itemSize[1] + textGap\r\n            ], barGroup);\r\n            var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\r\n            var orient = this._orient;\r\n            var textStyleModel = this.visualMapModel.textStyleModel;\r\n            this.group.add(new ZRText({\r\n                style: {\r\n                    x: position[0],\r\n                    y: position[1],\r\n                    verticalAlign: orient === 'horizontal' ? 'middle' : align,\r\n                    align: orient === 'horizontal' ? align : 'center',\r\n                    text: text,\r\n                    font: textStyleModel.getFont(),\r\n                    fill: textStyleModel.getTextColor()\r\n                }\r\n            }));\r\n        };\r\n        ContinuousView.prototype._renderBar = function (targetGroup) {\r\n            var visualMapModel = this.visualMapModel;\r\n            var shapes = this._shapes;\r\n            var itemSize = visualMapModel.itemSize;\r\n            var orient = this._orient;\r\n            var useHandle = this._useHandle;\r\n            var itemAlign = getItemAlign(visualMapModel, this.api, itemSize);\r\n            var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);\r\n            var gradientBarGroup = new Group();\r\n            mainGroup.add(gradientBarGroup);\r\n            gradientBarGroup.add(shapes.outOfRange = createPolygon());\r\n            gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor$1(this._orient) : null, bind(this._dragHandle, this, 'all', false), bind(this._dragHandle, this, 'all', true)));\r\n            gradientBarGroup.setClipPath(new Rect({\r\n                shape: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    width: itemSize[0],\r\n                    height: itemSize[1],\r\n                    r: 3\r\n                }\r\n            }));\r\n            var textRect = visualMapModel.textStyleModel.getTextRect('国');\r\n            var textSize = mathMax$a(textRect.width, textRect.height);\r\n            if (useHandle) {\r\n                shapes.handleThumbs = [];\r\n                shapes.handleLabels = [];\r\n                shapes.handleLabelPoints = [];\r\n                this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);\r\n                this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);\r\n            }\r\n            this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);\r\n            targetGroup.add(mainGroup);\r\n        };\r\n        ContinuousView.prototype._createHandle = function (visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {\r\n            var onDrift = bind(this._dragHandle, this, handleIndex, false);\r\n            var onDragEnd = bind(this._dragHandle, this, handleIndex, true);\r\n            var handleSize = parsePercent(visualMapModel.get('handleSize'), itemSize[0]);\r\n            var handleThumb = createSymbol(visualMapModel.get('handleIcon'), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);\r\n            var cursor = getCursor$1(this._orient);\r\n            handleThumb.attr({\r\n                cursor: cursor,\r\n                draggable: true,\r\n                drift: onDrift,\r\n                ondragend: onDragEnd,\r\n                onmousemove: function (e) {\r\n                    stop(e.event);\r\n                }\r\n            });\r\n            handleThumb.x = itemSize[0] / 2;\r\n            handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle());\r\n            handleThumb.setStyle({\r\n                strokeNoScale: true,\r\n                strokeFirst: true\r\n            });\r\n            handleThumb.style.lineWidth *= 2;\r\n            handleThumb.ensureState('emphasis').style = visualMapModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\r\n            setAsHighDownDispatcher(handleThumb, true);\r\n            mainGroup.add(handleThumb);\r\n            var textStyleModel = this.visualMapModel.textStyleModel;\r\n            var handleLabel = new ZRText({\r\n                cursor: cursor,\r\n                draggable: true,\r\n                drift: onDrift,\r\n                onmousemove: function (e) {\r\n                    stop(e.event);\r\n                },\r\n                ondragend: onDragEnd,\r\n                style: {\r\n                    x: 0, y: 0, text: '',\r\n                    font: textStyleModel.getFont(),\r\n                    fill: textStyleModel.getTextColor()\r\n                }\r\n            });\r\n            handleLabel.ensureState('blur').style = {\r\n                opacity: 0.1\r\n            };\r\n            handleLabel.stateTransition = { duration: 200 };\r\n            this.group.add(handleLabel);\r\n            var handleLabelPoint = [handleSize, 0];\r\n            var shapes = this._shapes;\r\n            shapes.handleThumbs[handleIndex] = handleThumb;\r\n            shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\r\n            shapes.handleLabels[handleIndex] = handleLabel;\r\n        };\r\n        ContinuousView.prototype._createIndicator = function (visualMapModel, mainGroup, itemSize, textSize, orient) {\r\n            var scale = parsePercent(visualMapModel.get('indicatorSize'), itemSize[0]);\r\n            var indicator = createSymbol(visualMapModel.get('indicatorIcon'), -scale / 2, -scale / 2, scale, scale, null, true);\r\n            indicator.attr({\r\n                cursor: 'move',\r\n                invisible: true,\r\n                silent: true,\r\n                x: itemSize[0] / 2\r\n            });\r\n            var indicatorStyle = visualMapModel.getModel('indicatorStyle').getItemStyle();\r\n            if (indicator instanceof ZRImage) {\r\n                var pathStyle = indicator.style;\r\n                indicator.useStyle(extend({\r\n                    image: pathStyle.image,\r\n                    x: pathStyle.x, y: pathStyle.y,\r\n                    width: pathStyle.width, height: pathStyle.height\r\n                }, indicatorStyle));\r\n            }\r\n            else {\r\n                indicator.useStyle(indicatorStyle);\r\n            }\r\n            mainGroup.add(indicator);\r\n            var textStyleModel = this.visualMapModel.textStyleModel;\r\n            var indicatorLabel = new ZRText({\r\n                silent: true,\r\n                invisible: true,\r\n                style: {\r\n                    x: 0, y: 0, text: '',\r\n                    font: textStyleModel.getFont(),\r\n                    fill: textStyleModel.getTextColor()\r\n                }\r\n            });\r\n            this.group.add(indicatorLabel);\r\n            var indicatorLabelPoint = [\r\n                (orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2,\r\n                0\r\n            ];\r\n            var shapes = this._shapes;\r\n            shapes.indicator = indicator;\r\n            shapes.indicatorLabel = indicatorLabel;\r\n            shapes.indicatorLabelPoint = indicatorLabelPoint;\r\n            this._firstShowIndicator = true;\r\n        };\r\n        ContinuousView.prototype._dragHandle = function (handleIndex, isEnd, dx, dy) {\r\n            if (!this._useHandle) {\r\n                return;\r\n            }\r\n            this._dragging = !isEnd;\r\n            if (!isEnd) {\r\n                var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);\r\n                this._updateInterval(handleIndex, vertex[1]);\r\n                this._hideIndicator();\r\n                this._updateView();\r\n            }\r\n            if (isEnd === !this.visualMapModel.get('realtime')) {\r\n                this.api.dispatchAction({\r\n                    type: 'selectDataRange',\r\n                    from: this.uid,\r\n                    visualMapId: this.visualMapModel.id,\r\n                    selected: this._dataInterval.slice()\r\n                });\r\n            }\r\n            if (isEnd) {\r\n                !this._hovering && this._clearHoverLinkToSeries();\r\n            }\r\n            else if (useHoverLinkOnHandle(this.visualMapModel)) {\r\n                this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\r\n            }\r\n        };\r\n        ContinuousView.prototype._resetInterval = function () {\r\n            var visualMapModel = this.visualMapModel;\r\n            var dataInterval = this._dataInterval = visualMapModel.getSelected();\r\n            var dataExtent = visualMapModel.getExtent();\r\n            var sizeExtent = [0, visualMapModel.itemSize[1]];\r\n            this._handleEnds = [\r\n                linearMap$2(dataInterval[0], dataExtent, sizeExtent, true),\r\n                linearMap$2(dataInterval[1], dataExtent, sizeExtent, true)\r\n            ];\r\n        };\r\n        ContinuousView.prototype._updateInterval = function (handleIndex, delta) {\r\n            delta = delta || 0;\r\n            var visualMapModel = this.visualMapModel;\r\n            var handleEnds = this._handleEnds;\r\n            var sizeExtent = [0, visualMapModel.itemSize[1]];\r\n            sliderMove(delta, handleEnds, sizeExtent, handleIndex, 0);\r\n            var dataExtent = visualMapModel.getExtent();\r\n            this._dataInterval = [\r\n                linearMap$2(handleEnds[0], sizeExtent, dataExtent, true),\r\n                linearMap$2(handleEnds[1], sizeExtent, dataExtent, true)\r\n            ];\r\n        };\r\n        ContinuousView.prototype._updateView = function (forSketch) {\r\n            var visualMapModel = this.visualMapModel;\r\n            var dataExtent = visualMapModel.getExtent();\r\n            var shapes = this._shapes;\r\n            var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\r\n            var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\r\n            var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\r\n            var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\r\n            shapes.inRange\r\n                .setStyle({\r\n                fill: visualInRange.barColor\r\n            })\r\n                .setShape('points', visualInRange.barPoints);\r\n            shapes.outOfRange\r\n                .setStyle({\r\n                fill: visualOutOfRange.barColor\r\n            })\r\n                .setShape('points', visualOutOfRange.barPoints);\r\n            this._updateHandle(inRangeHandleEnds, visualInRange);\r\n        };\r\n        ContinuousView.prototype._createBarVisual = function (dataInterval, dataExtent, handleEnds, forceState) {\r\n            var opts = {\r\n                forceState: forceState,\r\n                convertOpacityToAlpha: true\r\n            };\r\n            var colorStops = this._makeColorGradient(dataInterval, opts);\r\n            var symbolSizes = [\r\n                this.getControllerVisual(dataInterval[0], 'symbolSize', opts),\r\n                this.getControllerVisual(dataInterval[1], 'symbolSize', opts)\r\n            ];\r\n            var barPoints = this._createBarPoints(handleEnds, symbolSizes);\r\n            return {\r\n                barColor: new LinearGradient(0, 0, 0, 1, colorStops),\r\n                barPoints: barPoints,\r\n                handlesColor: [\r\n                    colorStops[0].color,\r\n                    colorStops[colorStops.length - 1].color\r\n                ]\r\n            };\r\n        };\r\n        ContinuousView.prototype._makeColorGradient = function (dataInterval, opts) {\r\n            var sampleNumber = 100;\r\n            var colorStops = [];\r\n            var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\r\n            colorStops.push({\r\n                color: this.getControllerVisual(dataInterval[0], 'color', opts),\r\n                offset: 0\r\n            });\r\n            for (var i = 1; i < sampleNumber; i++) {\r\n                var currValue = dataInterval[0] + step * i;\r\n                if (currValue > dataInterval[1]) {\r\n                    break;\r\n                }\r\n                colorStops.push({\r\n                    color: this.getControllerVisual(currValue, 'color', opts),\r\n                    offset: i / sampleNumber\r\n                });\r\n            }\r\n            colorStops.push({\r\n                color: this.getControllerVisual(dataInterval[1], 'color', opts),\r\n                offset: 1\r\n            });\r\n            return colorStops;\r\n        };\r\n        ContinuousView.prototype._createBarPoints = function (handleEnds, symbolSizes) {\r\n            var itemSize = this.visualMapModel.itemSize;\r\n            return [\r\n                [itemSize[0] - symbolSizes[0], handleEnds[0]],\r\n                [itemSize[0], handleEnds[0]],\r\n                [itemSize[0], handleEnds[1]],\r\n                [itemSize[0] - symbolSizes[1], handleEnds[1]]\r\n            ];\r\n        };\r\n        ContinuousView.prototype._createBarGroup = function (itemAlign) {\r\n            var orient = this._orient;\r\n            var inverse = this.visualMapModel.get('inverse');\r\n            return new Group((orient === 'horizontal' && !inverse)\r\n                ? { scaleX: itemAlign === 'bottom' ? 1 : -1, rotation: Math.PI / 2 }\r\n                : (orient === 'horizontal' && inverse)\r\n                    ? { scaleX: itemAlign === 'bottom' ? -1 : 1, rotation: -Math.PI / 2 }\r\n                    : (orient === 'vertical' && !inverse)\r\n                        ? { scaleX: itemAlign === 'left' ? 1 : -1, scaleY: -1 }\r\n                        : { scaleX: itemAlign === 'left' ? 1 : -1 });\r\n        };\r\n        ContinuousView.prototype._updateHandle = function (handleEnds, visualInRange) {\r\n            if (!this._useHandle) {\r\n                return;\r\n            }\r\n            var shapes = this._shapes;\r\n            var visualMapModel = this.visualMapModel;\r\n            var handleThumbs = shapes.handleThumbs;\r\n            var handleLabels = shapes.handleLabels;\r\n            var itemSize = visualMapModel.itemSize;\r\n            var dataExtent = visualMapModel.getExtent();\r\n            each$h([0, 1], function (handleIndex) {\r\n                var handleThumb = handleThumbs[handleIndex];\r\n                handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\r\n                handleThumb.y = handleEnds[handleIndex];\r\n                var val = linearMap$2(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);\r\n                var symbolSize = this.getControllerVisual(val, 'symbolSize');\r\n                handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];\r\n                handleThumb.x = itemSize[0] - symbolSize / 2;\r\n                var textPoint = applyTransform$1(shapes.handleLabelPoints[handleIndex], getTransform(handleThumb, this.group));\r\n                handleLabels[handleIndex].setStyle({\r\n                    x: textPoint[0],\r\n                    y: textPoint[1],\r\n                    text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\r\n                    verticalAlign: 'middle',\r\n                    align: this._orient === 'vertical' ? this._applyTransform('left', shapes.mainGroup) : 'center'\r\n                });\r\n            }, this);\r\n        };\r\n        ContinuousView.prototype._showIndicator = function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\r\n            var visualMapModel = this.visualMapModel;\r\n            var dataExtent = visualMapModel.getExtent();\r\n            var itemSize = visualMapModel.itemSize;\r\n            var sizeExtent = [0, itemSize[1]];\r\n            var shapes = this._shapes;\r\n            var indicator = shapes.indicator;\r\n            if (!indicator) {\r\n                return;\r\n            }\r\n            indicator.attr('invisible', false);\r\n            var opts = { convertOpacityToAlpha: true };\r\n            var color = this.getControllerVisual(cursorValue, 'color', opts);\r\n            var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize');\r\n            var y = linearMap$2(cursorValue, dataExtent, sizeExtent, true);\r\n            var x = itemSize[0] - symbolSize / 2;\r\n            var oldIndicatorPos = { x: indicator.x, y: indicator.y };\r\n            indicator.y = y;\r\n            indicator.x = x;\r\n            var textPoint = applyTransform$1(shapes.indicatorLabelPoint, getTransform(indicator, this.group));\r\n            var indicatorLabel = shapes.indicatorLabel;\r\n            indicatorLabel.attr('invisible', false);\r\n            var align = this._applyTransform('left', shapes.mainGroup);\r\n            var orient = this._orient;\r\n            var isHorizontal = orient === 'horizontal';\r\n            indicatorLabel.setStyle({\r\n                text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\r\n                verticalAlign: isHorizontal ? align : 'middle',\r\n                align: isHorizontal ? 'center' : align\r\n            });\r\n            var indicatorNewProps = {\r\n                x: x,\r\n                y: y,\r\n                style: {\r\n                    fill: color\r\n                }\r\n            };\r\n            var labelNewProps = {\r\n                style: {\r\n                    x: textPoint[0],\r\n                    y: textPoint[1]\r\n                }\r\n            };\r\n            if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {\r\n                var animationCfg = {\r\n                    duration: 100,\r\n                    easing: 'cubicInOut',\r\n                    additive: true\r\n                };\r\n                indicator.x = oldIndicatorPos.x;\r\n                indicator.y = oldIndicatorPos.y;\r\n                indicator.animateTo(indicatorNewProps, animationCfg);\r\n                indicatorLabel.animateTo(labelNewProps, animationCfg);\r\n            }\r\n            else {\r\n                indicator.attr(indicatorNewProps);\r\n                indicatorLabel.attr(labelNewProps);\r\n            }\r\n            this._firstShowIndicator = false;\r\n            var handleLabels = this._shapes.handleLabels;\r\n            if (handleLabels) {\r\n                for (var i = 0; i < handleLabels.length; i++) {\r\n                    this._api.enterBlur(handleLabels[i]);\r\n                }\r\n            }\r\n        };\r\n        ContinuousView.prototype._enableHoverLinkToSeries = function () {\r\n            var self = this;\r\n            this._shapes.mainGroup\r\n                .on('mousemove', function (e) {\r\n                self._hovering = true;\r\n                if (!self._dragging) {\r\n                    var itemSize = self.visualMapModel.itemSize;\r\n                    var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.mainGroup, true, true);\r\n                    pos[1] = mathMin$a(mathMax$a(0, pos[1]), itemSize[1]);\r\n                    self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\r\n                }\r\n            })\r\n                .on('mouseout', function () {\r\n                self._hovering = false;\r\n                !self._dragging && self._clearHoverLinkToSeries();\r\n            });\r\n        };\r\n        ContinuousView.prototype._enableHoverLinkFromSeries = function () {\r\n            var zr = this.api.getZr();\r\n            if (this.visualMapModel.option.hoverLink) {\r\n                zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\r\n                zr.on('mouseout', this._hideIndicator, this);\r\n            }\r\n            else {\r\n                this._clearHoverLinkFromSeries();\r\n            }\r\n        };\r\n        ContinuousView.prototype._doHoverLinkToSeries = function (cursorPos, hoverOnBar) {\r\n            var visualMapModel = this.visualMapModel;\r\n            var itemSize = visualMapModel.itemSize;\r\n            if (!visualMapModel.option.hoverLink) {\r\n                return;\r\n            }\r\n            var sizeExtent = [0, itemSize[1]];\r\n            var dataExtent = visualMapModel.getExtent();\r\n            cursorPos = mathMin$a(mathMax$a(sizeExtent[0], cursorPos), sizeExtent[1]);\r\n            var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\r\n            var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\r\n            var cursorValue = linearMap$2(cursorPos, sizeExtent, dataExtent, true);\r\n            var valueRange = [\r\n                linearMap$2(hoverRange[0], sizeExtent, dataExtent, true),\r\n                linearMap$2(hoverRange[1], sizeExtent, dataExtent, true)\r\n            ];\r\n            hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\r\n            hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity);\r\n            if (hoverOnBar) {\r\n                if (valueRange[0] === -Infinity) {\r\n                    this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\r\n                }\r\n                else if (valueRange[1] === Infinity) {\r\n                    this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\r\n                }\r\n                else {\r\n                    this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\r\n                }\r\n            }\r\n            var oldBatch = this._hoverLinkDataIndices;\r\n            var newBatch = [];\r\n            if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\r\n                newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\r\n            }\r\n            var resultBatches = compressBatches(oldBatch, newBatch);\r\n            this._dispatchHighDown('downplay', makeHighDownBatch(resultBatches[0], visualMapModel));\r\n            this._dispatchHighDown('highlight', makeHighDownBatch(resultBatches[1], visualMapModel));\r\n        };\r\n        ContinuousView.prototype._hoverLinkFromSeriesMouseOver = function (e) {\r\n            var el = e.target;\r\n            var visualMapModel = this.visualMapModel;\r\n            if (!el || getECData(el).dataIndex == null) {\r\n                return;\r\n            }\r\n            var ecData = getECData(el);\r\n            var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n            if (!visualMapModel.isTargetSeries(dataModel)) {\r\n                return;\r\n            }\r\n            var data = dataModel.getData(ecData.dataType);\r\n            var value = data.get(visualMapModel.getDataDimension(data), ecData.dataIndex);\r\n            if (!isNaN(value)) {\r\n                this._showIndicator(value, value);\r\n            }\r\n        };\r\n        ContinuousView.prototype._hideIndicator = function () {\r\n            var shapes = this._shapes;\r\n            shapes.indicator && shapes.indicator.attr('invisible', true);\r\n            shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\r\n            var handleLabels = this._shapes.handleLabels;\r\n            if (handleLabels) {\r\n                for (var i = 0; i < handleLabels.length; i++) {\r\n                    this._api.leaveBlur(handleLabels[i]);\r\n                }\r\n            }\r\n        };\r\n        ContinuousView.prototype._clearHoverLinkToSeries = function () {\r\n            this._hideIndicator();\r\n            var indices = this._hoverLinkDataIndices;\r\n            this._dispatchHighDown('downplay', makeHighDownBatch(indices, this.visualMapModel));\r\n            indices.length = 0;\r\n        };\r\n        ContinuousView.prototype._clearHoverLinkFromSeries = function () {\r\n            this._hideIndicator();\r\n            var zr = this.api.getZr();\r\n            zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\r\n            zr.off('mouseout', this._hideIndicator);\r\n        };\r\n        ContinuousView.prototype._applyTransform = function (vertex, element, inverse, global) {\r\n            var transform = getTransform(element, global ? null : this.group);\r\n            return isArray(vertex)\r\n                ? applyTransform$1(vertex, transform, inverse)\r\n                : transformDirection(vertex, transform, inverse);\r\n        };\r\n        ContinuousView.prototype._dispatchHighDown = function (type, batch) {\r\n            batch && batch.length && this.api.dispatchAction({\r\n                type: type,\r\n                batch: batch\r\n            });\r\n        };\r\n        ContinuousView.prototype.dispose = function () {\r\n            this._clearHoverLinkFromSeries();\r\n            this._clearHoverLinkToSeries();\r\n        };\r\n        ContinuousView.prototype.remove = function () {\r\n            this._clearHoverLinkFromSeries();\r\n            this._clearHoverLinkToSeries();\r\n        };\r\n        ContinuousView.type = 'visualMap.continuous';\r\n        return ContinuousView;\r\n    }(VisualMapView));\r\n    function createPolygon(points, cursor, onDrift, onDragEnd) {\r\n        return new Polygon({\r\n            shape: { points: points },\r\n            draggable: !!onDrift,\r\n            cursor: cursor,\r\n            drift: onDrift,\r\n            onmousemove: function (e) {\r\n                stop(e.event);\r\n            },\r\n            ondragend: onDragEnd\r\n        });\r\n    }\r\n    function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\r\n        var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\r\n        var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\r\n        if (hoverLinkDataSize) {\r\n            halfHoverLinkSize = linearMap$2(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\r\n        }\r\n        return halfHoverLinkSize;\r\n    }\r\n    function useHoverLinkOnHandle(visualMapModel) {\r\n        var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\r\n        return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\r\n    }\r\n    function getCursor$1(orient) {\r\n        return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n    }\r\n    ComponentView.registerClass(ContinuousView);\n\n    var actionInfo$2 = {\r\n        type: 'selectDataRange',\r\n        event: 'dataRangeSelected',\r\n        update: 'update'\r\n    };\r\n    registerAction(actionInfo$2, function (payload, ecModel) {\r\n        ecModel.eachComponent({ mainType: 'visualMap', query: payload }, function (model) {\r\n            model.setSelected(payload.selected);\r\n        });\r\n    });\n\n    registerPreprocessor(visualMapPreprocessor);\n\n    var PiecewiseModel = (function (_super) {\r\n        __extends(PiecewiseModel, _super);\r\n        function PiecewiseModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = PiecewiseModel.type;\r\n            _this._pieceList = [];\r\n            return _this;\r\n        }\r\n        PiecewiseModel.prototype.optionUpdated = function (newOption, isInit) {\r\n            _super.prototype.optionUpdated.apply(this, arguments);\r\n            this.resetExtent();\r\n            var mode = this._mode = this._determineMode();\r\n            this._pieceList = [];\r\n            resetMethods[this._mode].call(this, this._pieceList);\r\n            this._resetSelected(newOption, isInit);\r\n            var categories = this.option.categories;\r\n            this.resetVisual(function (mappingOption, state) {\r\n                if (mode === 'categories') {\r\n                    mappingOption.mappingMethod = 'category';\r\n                    mappingOption.categories = clone(categories);\r\n                }\r\n                else {\r\n                    mappingOption.dataExtent = this.getExtent();\r\n                    mappingOption.mappingMethod = 'piecewise';\r\n                    mappingOption.pieceList = map(this._pieceList, function (piece) {\r\n                        piece = clone(piece);\r\n                        if (state !== 'inRange') {\r\n                            piece.visual = null;\r\n                        }\r\n                        return piece;\r\n                    });\r\n                }\r\n            });\r\n        };\r\n        PiecewiseModel.prototype.completeVisualOption = function () {\r\n            var option = this.option;\r\n            var visualTypesInPieces = {};\r\n            var visualTypes = VisualMapping.listVisualTypes();\r\n            var isCategory = this.isCategory();\r\n            each(option.pieces, function (piece) {\r\n                each(visualTypes, function (visualType) {\r\n                    if (piece.hasOwnProperty(visualType)) {\r\n                        visualTypesInPieces[visualType] = 1;\r\n                    }\r\n                });\r\n            });\r\n            each(visualTypesInPieces, function (v, visualType) {\r\n                var exists = false;\r\n                each(this.stateList, function (state) {\r\n                    exists = exists || has(option, state, visualType)\r\n                        || has(option.target, state, visualType);\r\n                }, this);\r\n                !exists && each(this.stateList, function (state) {\r\n                    (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\r\n                });\r\n            }, this);\r\n            function has(obj, state, visualType) {\r\n                return obj && obj[state] && obj[state].hasOwnProperty(visualType);\r\n            }\r\n            _super.prototype.completeVisualOption.apply(this, arguments);\r\n        };\r\n        PiecewiseModel.prototype._resetSelected = function (newOption, isInit) {\r\n            var thisOption = this.option;\r\n            var pieceList = this._pieceList;\r\n            var selected = (isInit ? thisOption : newOption).selected || {};\r\n            thisOption.selected = selected;\r\n            each(pieceList, function (piece, index) {\r\n                var key = this.getSelectedMapKey(piece);\r\n                if (!selected.hasOwnProperty(key)) {\r\n                    selected[key] = true;\r\n                }\r\n            }, this);\r\n            if (thisOption.selectedMode === 'single') {\r\n                var hasSel_1 = false;\r\n                each(pieceList, function (piece, index) {\r\n                    var key = this.getSelectedMapKey(piece);\r\n                    if (selected[key]) {\r\n                        hasSel_1\r\n                            ? (selected[key] = false)\r\n                            : (hasSel_1 = true);\r\n                    }\r\n                }, this);\r\n            }\r\n        };\r\n        PiecewiseModel.prototype.getSelectedMapKey = function (piece) {\r\n            return this._mode === 'categories'\r\n                ? piece.value + '' : piece.index + '';\r\n        };\r\n        PiecewiseModel.prototype.getPieceList = function () {\r\n            return this._pieceList;\r\n        };\r\n        PiecewiseModel.prototype._determineMode = function () {\r\n            var option = this.option;\r\n            return option.pieces && option.pieces.length > 0\r\n                ? 'pieces'\r\n                : this.option.categories\r\n                    ? 'categories'\r\n                    : 'splitNumber';\r\n        };\r\n        PiecewiseModel.prototype.setSelected = function (selected) {\r\n            this.option.selected = clone(selected);\r\n        };\r\n        PiecewiseModel.prototype.getValueState = function (value) {\r\n            var index = VisualMapping.findPieceIndex(value, this._pieceList);\r\n            return index != null\r\n                ? (this.option.selected[this.getSelectedMapKey(this._pieceList[index])]\r\n                    ? 'inRange' : 'outOfRange')\r\n                : 'outOfRange';\r\n        };\r\n        PiecewiseModel.prototype.findTargetDataIndices = function (pieceIndex) {\r\n            var result = [];\r\n            var pieceList = this._pieceList;\r\n            this.eachTargetSeries(function (seriesModel) {\r\n                var dataIndices = [];\r\n                var data = seriesModel.getData();\r\n                data.each(this.getDataDimension(data), function (value, dataIndex) {\r\n                    var pIdx = VisualMapping.findPieceIndex(value, pieceList);\r\n                    pIdx === pieceIndex && dataIndices.push(dataIndex);\r\n                }, this);\r\n                result.push({ seriesId: seriesModel.id, dataIndex: dataIndices });\r\n            }, this);\r\n            return result;\r\n        };\r\n        PiecewiseModel.prototype.getRepresentValue = function (piece) {\r\n            var representValue;\r\n            if (this.isCategory()) {\r\n                representValue = piece.value;\r\n            }\r\n            else {\r\n                if (piece.value != null) {\r\n                    representValue = piece.value;\r\n                }\r\n                else {\r\n                    var pieceInterval = piece.interval || [];\r\n                    representValue = (pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity)\r\n                        ? 0\r\n                        : (pieceInterval[0] + pieceInterval[1]) / 2;\r\n                }\r\n            }\r\n            return representValue;\r\n        };\r\n        PiecewiseModel.prototype.getVisualMeta = function (getColorVisual) {\r\n            if (this.isCategory()) {\r\n                return;\r\n            }\r\n            var stops = [];\r\n            var outerColors = ['', ''];\r\n            var visualMapModel = this;\r\n            function setStop(interval, valueState) {\r\n                var representValue = visualMapModel.getRepresentValue({\r\n                    interval: interval\r\n                });\r\n                if (!valueState) {\r\n                    valueState = visualMapModel.getValueState(representValue);\r\n                }\r\n                var color = getColorVisual(representValue, valueState);\r\n                if (interval[0] === -Infinity) {\r\n                    outerColors[0] = color;\r\n                }\r\n                else if (interval[1] === Infinity) {\r\n                    outerColors[1] = color;\r\n                }\r\n                else {\r\n                    stops.push({ value: interval[0], color: color }, { value: interval[1], color: color });\r\n                }\r\n            }\r\n            var pieceList = this._pieceList.slice();\r\n            if (!pieceList.length) {\r\n                pieceList.push({ interval: [-Infinity, Infinity] });\r\n            }\r\n            else {\r\n                var edge = pieceList[0].interval[0];\r\n                edge !== -Infinity && pieceList.unshift({ interval: [-Infinity, edge] });\r\n                edge = pieceList[pieceList.length - 1].interval[1];\r\n                edge !== Infinity && pieceList.push({ interval: [edge, Infinity] });\r\n            }\r\n            var curr = -Infinity;\r\n            each(pieceList, function (piece) {\r\n                var interval = piece.interval;\r\n                if (interval) {\r\n                    interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\r\n                    setStop(interval.slice());\r\n                    curr = interval[1];\r\n                }\r\n            }, this);\r\n            return { stops: stops, outerColors: outerColors };\r\n        };\r\n        PiecewiseModel.type = 'visualMap.piecewise';\r\n        PiecewiseModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {\r\n            selected: null,\r\n            minOpen: false,\r\n            maxOpen: false,\r\n            align: 'auto',\r\n            itemWidth: 20,\r\n            itemHeight: 14,\r\n            itemSymbol: 'roundRect',\r\n            pieces: null,\r\n            categories: null,\r\n            splitNumber: 5,\r\n            selectedMode: 'multiple',\r\n            itemGap: 10,\r\n            hoverLink: true\r\n        });\r\n        return PiecewiseModel;\r\n    }(VisualMapModel));\r\n    var resetMethods = {\r\n        splitNumber: function (outPieceList) {\r\n            var thisOption = this.option;\r\n            var precision = Math.min(thisOption.precision, 20);\r\n            var dataExtent = this.getExtent();\r\n            var splitNumber = thisOption.splitNumber;\r\n            splitNumber = Math.max(parseInt(splitNumber, 10), 1);\r\n            thisOption.splitNumber = splitNumber;\r\n            var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber;\r\n            while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\r\n                precision++;\r\n            }\r\n            thisOption.precision = precision;\r\n            splitStep = +splitStep.toFixed(precision);\r\n            if (thisOption.minOpen) {\r\n                outPieceList.push({\r\n                    interval: [-Infinity, dataExtent[0]],\r\n                    close: [0, 0]\r\n                });\r\n            }\r\n            for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\r\n                var max = index === splitNumber - 1 ? dataExtent[1] : (curr + splitStep);\r\n                outPieceList.push({\r\n                    interval: [curr, max],\r\n                    close: [1, 1]\r\n                });\r\n            }\r\n            if (thisOption.maxOpen) {\r\n                outPieceList.push({\r\n                    interval: [dataExtent[1], Infinity],\r\n                    close: [0, 0]\r\n                });\r\n            }\r\n            reformIntervals(outPieceList);\r\n            each(outPieceList, function (piece, index) {\r\n                piece.index = index;\r\n                piece.text = this.formatValueText(piece.interval);\r\n            }, this);\r\n        },\r\n        categories: function (outPieceList) {\r\n            var thisOption = this.option;\r\n            each(thisOption.categories, function (cate) {\r\n                outPieceList.push({\r\n                    text: this.formatValueText(cate, true),\r\n                    value: cate\r\n                });\r\n            }, this);\r\n            normalizeReverse(thisOption, outPieceList);\r\n        },\r\n        pieces: function (outPieceList) {\r\n            var thisOption = this.option;\r\n            each(thisOption.pieces, function (pieceListItem, index) {\r\n                if (!isObject(pieceListItem)) {\r\n                    pieceListItem = { value: pieceListItem };\r\n                }\r\n                var item = { text: '', index: index };\r\n                if (pieceListItem.label != null) {\r\n                    item.text = pieceListItem.label;\r\n                }\r\n                if (pieceListItem.hasOwnProperty('value')) {\r\n                    var value = item.value = pieceListItem.value;\r\n                    item.interval = [value, value];\r\n                    item.close = [1, 1];\r\n                }\r\n                else {\r\n                    var interval = item.interval = [];\r\n                    var close_1 = item.close = [0, 0];\r\n                    var closeList = [1, 0, 1];\r\n                    var infinityList = [-Infinity, Infinity];\r\n                    var useMinMax = [];\r\n                    for (var lg = 0; lg < 2; lg++) {\r\n                        var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\r\n                        for (var i = 0; i < 3 && interval[lg] == null; i++) {\r\n                            interval[lg] = pieceListItem[names[i]];\r\n                            close_1[lg] = closeList[i];\r\n                            useMinMax[lg] = i === 2;\r\n                        }\r\n                        interval[lg] == null && (interval[lg] = infinityList[lg]);\r\n                    }\r\n                    useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0);\r\n                    useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0);\r\n                    if (__DEV__) {\r\n                        if (interval[0] > interval[1]) {\r\n                            console.warn('Piece ' + index + 'is illegal: ' + interval\r\n                                + ' lower bound should not greater then uppper bound.');\r\n                        }\r\n                    }\r\n                    if (interval[0] === interval[1] && close_1[0] && close_1[1]) {\r\n                        item.value = interval[0];\r\n                    }\r\n                }\r\n                item.visual = VisualMapping.retrieveVisuals(pieceListItem);\r\n                outPieceList.push(item);\r\n            }, this);\r\n            normalizeReverse(thisOption, outPieceList);\r\n            reformIntervals(outPieceList);\r\n            each(outPieceList, function (piece) {\r\n                var close = piece.close;\r\n                var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\r\n                piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\r\n            }, this);\r\n        }\r\n    };\r\n    function normalizeReverse(thisOption, pieceList) {\r\n        var inverse = thisOption.inverse;\r\n        if (thisOption.orient === 'vertical' ? !inverse : inverse) {\r\n            pieceList.reverse();\r\n        }\r\n    }\r\n    ComponentModel.registerClass(PiecewiseModel);\n\n    var PiecewiseVisualMapView = (function (_super) {\r\n        __extends(PiecewiseVisualMapView, _super);\r\n        function PiecewiseVisualMapView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = PiecewiseVisualMapView.type;\r\n            return _this;\r\n        }\r\n        PiecewiseVisualMapView.prototype.doRender = function () {\r\n            var thisGroup = this.group;\r\n            thisGroup.removeAll();\r\n            var visualMapModel = this.visualMapModel;\r\n            var textGap = visualMapModel.get('textGap');\r\n            var textStyleModel = visualMapModel.textStyleModel;\r\n            var textFont = textStyleModel.getFont();\r\n            var textFill = textStyleModel.getTextColor();\r\n            var itemAlign = this._getItemAlign();\r\n            var itemSize = visualMapModel.itemSize;\r\n            var viewData = this._getViewData();\r\n            var endsText = viewData.endsText;\r\n            var showLabel = retrieve(visualMapModel.get('showLabel', true), !endsText);\r\n            endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\r\n            each(viewData.viewPieceList, function (item) {\r\n                var piece = item.piece;\r\n                var itemGroup = new Group();\r\n                itemGroup.onclick = bind(this._onItemClick, this, piece);\r\n                this._enableHoverLink(itemGroup, item.indexInModelPieceList);\r\n                var representValue = visualMapModel.getRepresentValue(piece);\r\n                this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\r\n                if (showLabel) {\r\n                    var visualState = this.visualMapModel.getValueState(representValue);\r\n                    itemGroup.add(new ZRText({\r\n                        style: {\r\n                            x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\r\n                            y: itemSize[1] / 2,\r\n                            text: piece.text,\r\n                            verticalAlign: 'middle',\r\n                            align: itemAlign,\r\n                            font: textFont,\r\n                            fill: textFill,\r\n                            opacity: visualState === 'outOfRange' ? 0.5 : 1\r\n                        }\r\n                    }));\r\n                }\r\n                thisGroup.add(itemGroup);\r\n            }, this);\r\n            endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\r\n            box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\r\n            this.renderBackground(thisGroup);\r\n            this.positionGroup(thisGroup);\r\n        };\r\n        PiecewiseVisualMapView.prototype._enableHoverLink = function (itemGroup, pieceIndex) {\r\n            var _this = this;\r\n            itemGroup\r\n                .on('mouseover', function () { return onHoverLink('highlight'); })\r\n                .on('mouseout', function () { return onHoverLink('downplay'); });\r\n            var onHoverLink = function (method) {\r\n                var visualMapModel = _this.visualMapModel;\r\n                visualMapModel.option.hoverLink && _this.api.dispatchAction({\r\n                    type: method,\r\n                    batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\r\n                });\r\n            };\r\n        };\r\n        PiecewiseVisualMapView.prototype._getItemAlign = function () {\r\n            var visualMapModel = this.visualMapModel;\r\n            var modelOption = visualMapModel.option;\r\n            if (modelOption.orient === 'vertical') {\r\n                return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\r\n            }\r\n            else {\r\n                var align = modelOption.align;\r\n                if (!align || align === 'auto') {\r\n                    align = 'left';\r\n                }\r\n                return align;\r\n            }\r\n        };\r\n        PiecewiseVisualMapView.prototype._renderEndsText = function (group, text, itemSize, showLabel, itemAlign) {\r\n            if (!text) {\r\n                return;\r\n            }\r\n            var itemGroup = new Group();\r\n            var textStyleModel = this.visualMapModel.textStyleModel;\r\n            itemGroup.add(new ZRText({\r\n                style: {\r\n                    x: showLabel ? (itemAlign === 'right' ? itemSize[0] : 0) : itemSize[0] / 2,\r\n                    y: itemSize[1] / 2,\r\n                    verticalAlign: 'middle',\r\n                    align: showLabel ? itemAlign : 'center',\r\n                    text: text,\r\n                    font: textStyleModel.getFont(),\r\n                    fill: textStyleModel.getTextColor()\r\n                }\r\n            }));\r\n            group.add(itemGroup);\r\n        };\r\n        PiecewiseVisualMapView.prototype._getViewData = function () {\r\n            var visualMapModel = this.visualMapModel;\r\n            var viewPieceList = map(visualMapModel.getPieceList(), function (piece, index) {\r\n                return { piece: piece, indexInModelPieceList: index };\r\n            });\r\n            var endsText = visualMapModel.get('text');\r\n            var orient = visualMapModel.get('orient');\r\n            var inverse = visualMapModel.get('inverse');\r\n            if (orient === 'horizontal' ? inverse : !inverse) {\r\n                viewPieceList.reverse();\r\n            }\r\n            else if (endsText) {\r\n                endsText = endsText.slice().reverse();\r\n            }\r\n            return { viewPieceList: viewPieceList, endsText: endsText };\r\n        };\r\n        PiecewiseVisualMapView.prototype._createItemSymbol = function (group, representValue, shapeParam) {\r\n            group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\r\n        };\r\n        PiecewiseVisualMapView.prototype._onItemClick = function (piece) {\r\n            var visualMapModel = this.visualMapModel;\r\n            var option = visualMapModel.option;\r\n            var selected = clone(option.selected);\r\n            var newKey = visualMapModel.getSelectedMapKey(piece);\r\n            if (option.selectedMode === 'single') {\r\n                selected[newKey] = true;\r\n                each(selected, function (o, key) {\r\n                    selected[key] = key === newKey;\r\n                });\r\n            }\r\n            else {\r\n                selected[newKey] = !selected[newKey];\r\n            }\r\n            this.api.dispatchAction({\r\n                type: 'selectDataRange',\r\n                from: this.uid,\r\n                visualMapId: this.visualMapModel.id,\r\n                selected: selected\r\n            });\r\n        };\r\n        PiecewiseVisualMapView.type = 'visualMap.piecewise';\r\n        return PiecewiseVisualMapView;\r\n    }(VisualMapView));\r\n    ComponentView.registerClass(PiecewiseVisualMapView);\n\n    registerPreprocessor(visualMapPreprocessor);\n\n    var DEFAULT_OPTION = {\r\n        label: {\r\n            enabled: true\r\n        },\r\n        decal: {\r\n            show: false\r\n        }\r\n    };\r\n    var inner$n = makeInner();\r\n    var decalPaletteScope = {};\r\n    function ariaVisual(ecModel, api) {\r\n        var ariaModel = ecModel.getModel('aria');\r\n        if (!ariaModel.get('enabled')) {\r\n            return;\r\n        }\r\n        var defaultOption = clone(DEFAULT_OPTION);\r\n        merge(defaultOption.label, ecModel.getLocaleModel().get('aria'), false);\r\n        merge(ariaModel.option, defaultOption, false);\r\n        setDecal();\r\n        setLabel();\r\n        function setDecal() {\r\n            var decalModel = ariaModel.getModel('decal');\r\n            var useDecal = decalModel.get('show');\r\n            if (useDecal) {\r\n                var paletteScopeGroupByType_1 = createHashMap();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    if (!seriesModel.useColorPaletteOnData) {\r\n                        return;\r\n                    }\r\n                    var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);\r\n                    if (!decalScope) {\r\n                        decalScope = {};\r\n                        paletteScopeGroupByType_1.set(seriesModel.type, decalScope);\r\n                    }\r\n                    inner$n(seriesModel).scope = decalScope;\r\n                });\r\n                ecModel.eachRawSeries(function (seriesModel) {\r\n                    if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                        return;\r\n                    }\r\n                    if (typeof seriesModel.enableAriaDecal === 'function') {\r\n                        seriesModel.enableAriaDecal();\r\n                        return;\r\n                    }\r\n                    var data = seriesModel.getData();\r\n                    if (seriesModel.useColorPaletteOnData) {\r\n                        var dataAll_1 = seriesModel.getRawData();\r\n                        var idxMap_1 = {};\r\n                        var decalScope_1 = inner$n(seriesModel).scope;\r\n                        data.each(function (idx) {\r\n                            var rawIdx = data.getRawIndex(idx);\r\n                            idxMap_1[rawIdx] = idx;\r\n                        });\r\n                        var dataCount_1 = dataAll_1.count();\r\n                        dataAll_1.each(function (rawIdx) {\r\n                            var idx = idxMap_1[rawIdx];\r\n                            var name = dataAll_1.getName(rawIdx) || (rawIdx + '');\r\n                            var paletteDecal = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);\r\n                            var specifiedDecal = data.getItemVisual(idx, 'decal');\r\n                            data.setItemVisual(idx, 'decal', mergeDecal(specifiedDecal, paletteDecal));\r\n                        });\r\n                    }\r\n                    else {\r\n                        var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());\r\n                        var specifiedDecal = data.getVisual('decal');\r\n                        data.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal));\r\n                    }\r\n                    function mergeDecal(specifiedDecal, paletteDecal) {\r\n                        var resultDecal = specifiedDecal\r\n                            ? extend(extend({}, paletteDecal), specifiedDecal)\r\n                            : paletteDecal;\r\n                        resultDecal.dirty = true;\r\n                        return resultDecal;\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        function setLabel() {\r\n            var labelLocale = ecModel.getLocaleModel().get('aria');\r\n            var labelModel = ariaModel.getModel('label');\r\n            labelModel.option = defaults(labelModel.option, labelLocale);\r\n            if (!labelModel.get('enabled')) {\r\n                return;\r\n            }\r\n            var dom = api.getZr().dom;\r\n            if (labelModel.get('description')) {\r\n                dom.setAttribute('aria-label', labelModel.get('description'));\r\n                return;\r\n            }\r\n            var seriesCnt = ecModel.getSeriesCount();\r\n            var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10;\r\n            var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10;\r\n            var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\r\n            var ariaLabel;\r\n            if (seriesCnt < 1) {\r\n                return;\r\n            }\r\n            else {\r\n                var title = getTitle();\r\n                if (title) {\r\n                    var withTitle = labelModel.get(['general', 'withTitle']);\r\n                    ariaLabel = replace(withTitle, {\r\n                        title: title\r\n                    });\r\n                }\r\n                else {\r\n                    ariaLabel = labelModel.get(['general', 'withoutTitle']);\r\n                }\r\n                var seriesLabels_1 = [];\r\n                var prefix = seriesCnt > 1\r\n                    ? labelModel.get(['series', 'multiple', 'prefix'])\r\n                    : labelModel.get(['series', 'single', 'prefix']);\r\n                ariaLabel += replace(prefix, { seriesCount: seriesCnt });\r\n                ecModel.eachSeries(function (seriesModel, idx) {\r\n                    if (idx < displaySeriesCnt) {\r\n                        var seriesLabel = void 0;\r\n                        var seriesName = seriesModel.get('name');\r\n                        var withName = seriesName ? 'withName' : 'withoutName';\r\n                        seriesLabel = seriesCnt > 1\r\n                            ? labelModel.get(['series', 'multiple', withName])\r\n                            : labelModel.get(['series', 'single', withName]);\r\n                        seriesLabel = replace(seriesLabel, {\r\n                            seriesId: seriesModel.seriesIndex,\r\n                            seriesName: seriesModel.get('name'),\r\n                            seriesType: getSeriesTypeName(seriesModel.subType)\r\n                        });\r\n                        var data = seriesModel.getData();\r\n                        if (data.count() > maxDataCnt) {\r\n                            var partialLabel = labelModel.get(['data', 'partialData']);\r\n                            seriesLabel += replace(partialLabel, {\r\n                                displayCnt: maxDataCnt\r\n                            });\r\n                        }\r\n                        else {\r\n                            seriesLabel += labelModel.get(['data', 'allData']);\r\n                        }\r\n                        var dataLabels = [];\r\n                        for (var i = 0; i < data.count(); i++) {\r\n                            if (i < maxDataCnt) {\r\n                                var name_1 = data.getName(i);\r\n                                var value = retrieveRawValue(data, i);\r\n                                var dataLabel = labelModel.get(['data', name_1 ? 'withName' : 'withoutName']);\r\n                                dataLabels.push(replace(dataLabel, {\r\n                                    name: name_1,\r\n                                    value: value\r\n                                }));\r\n                            }\r\n                        }\r\n                        var middleSeparator_1 = labelModel.get(['data', 'separator', 'middle']);\r\n                        var endSeparator_1 = labelModel.get(['data', 'separator', 'end']);\r\n                        seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;\r\n                        seriesLabels_1.push(seriesLabel);\r\n                    }\r\n                });\r\n                var separatorModel = labelModel.getModel(['series', 'multiple', 'separator']);\r\n                var middleSeparator = separatorModel.get('middle');\r\n                var endSeparator = separatorModel.get('end');\r\n                ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;\r\n                dom.setAttribute('aria-label', ariaLabel);\r\n            }\r\n        }\r\n        function replace(str, keyValues) {\r\n            if (typeof str !== 'string') {\r\n                return str;\r\n            }\r\n            var result = str;\r\n            each(keyValues, function (value, key) {\r\n                result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\r\n            });\r\n            return result;\r\n        }\r\n        function getTitle() {\r\n            var title = ecModel.get('title');\r\n            if (title && title.length) {\r\n                title = title[0];\r\n            }\r\n            return title && title.text;\r\n        }\r\n        function getSeriesTypeName(type) {\r\n            return ecModel.getLocaleModel().get(['series', 'typeNames'])[type] || '自定义图';\r\n        }\r\n    }\n\n    function ariaPreprocessor(option) {\r\n        if (!option || !option.aria) {\r\n            return;\r\n        }\r\n        var aria = option.aria;\r\n        if (aria.show != null) {\r\n            aria.enabled = aria.show;\r\n        }\r\n        aria.label = aria.label || {};\r\n        each(['description', 'general', 'series', 'data'], function (name) {\r\n            if (aria[name] != null) {\r\n                aria.label[name] = aria[name];\r\n            }\r\n        });\r\n    }\n\n    var PRIORITY_VISUAL_ARIA$1 = PRIORITY.VISUAL.ARIA;\r\n    registerPreprocessor(ariaPreprocessor);\r\n    registerVisual(PRIORITY_VISUAL_ARIA$1, ariaVisual);\n\n    function createElement(name) {\r\n        return document.createElementNS('http://www.w3.org/2000/svg', name);\r\n    }\n\n    var NONE = 'none';\r\n    var mathRound = Math.round;\r\n    var mathSin$4 = Math.sin;\r\n    var mathCos$4 = Math.cos;\r\n    var PI$a = Math.PI;\r\n    var PI2$a = Math.PI * 2;\r\n    var degree = 180 / PI$a;\r\n    var EPSILON$4 = 1e-4;\r\n    function round3(val) {\r\n        return mathRound(val * 1e3) / 1e3;\r\n    }\r\n    function round4(val) {\r\n        return mathRound(val * 1e4) / 1e4;\r\n    }\r\n    function isAroundZero$1(val) {\r\n        return val < EPSILON$4 && val > -EPSILON$4;\r\n    }\r\n    function pathHasFill(style) {\r\n        var fill = style.fill;\r\n        return fill != null && fill !== NONE;\r\n    }\r\n    function pathHasStroke(style) {\r\n        var stroke = style.stroke;\r\n        return stroke != null && stroke !== NONE;\r\n    }\r\n    function setTransform(svgEl, m) {\r\n        if (m) {\r\n            attr(svgEl, 'transform', 'matrix('\r\n                + round3(m[0]) + ','\r\n                + round3(m[1]) + ','\r\n                + round3(m[2]) + ','\r\n                + round3(m[3]) + ','\r\n                + round4(m[4]) + ','\r\n                + round4(m[5])\r\n                + ')');\r\n        }\r\n    }\r\n    function attr(el, key, val) {\r\n        if (!val || val.type !== 'linear' && val.type !== 'radial') {\r\n            el.setAttribute(key, val);\r\n        }\r\n    }\r\n    function attrXLink(el, key, val) {\r\n        el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\r\n    }\r\n    function attrXML(el, key, val) {\r\n        el.setAttributeNS('http://www.w3.org/XML/1998/namespace', key, val);\r\n    }\r\n    function bindStyle(svgEl, style, el) {\r\n        var opacity = style.opacity == null ? 1 : style.opacity;\r\n        if (pathHasFill(style)) {\r\n            var fill = style.fill;\r\n            fill = fill === 'transparent' ? NONE : fill;\r\n            attr(svgEl, 'fill', fill);\r\n            attr(svgEl, 'fill-opacity', (style.fillOpacity != null ? style.fillOpacity * opacity : opacity) + '');\r\n        }\r\n        else {\r\n            attr(svgEl, 'fill', NONE);\r\n        }\r\n        if (pathHasStroke(style)) {\r\n            var stroke = style.stroke;\r\n            stroke = stroke === 'transparent' ? NONE : stroke;\r\n            attr(svgEl, 'stroke', stroke);\r\n            var strokeWidth = style.lineWidth;\r\n            var strokeScale_1 = style.strokeNoScale\r\n                ? el.getLineScale()\r\n                : 1;\r\n            attr(svgEl, 'stroke-width', (strokeScale_1 ? strokeWidth / strokeScale_1 : 0) + '');\r\n            attr(svgEl, 'paint-order', style.strokeFirst ? 'stroke' : 'fill');\r\n            attr(svgEl, 'stroke-opacity', (style.strokeOpacity != null ? style.strokeOpacity * opacity : opacity) + '');\r\n            var lineDash = style.lineDash && strokeWidth > 0 && normalizeLineDash(style.lineDash, strokeWidth);\r\n            if (lineDash) {\r\n                var lineDashOffset = style.lineDashOffset;\r\n                if (strokeScale_1 && strokeScale_1 !== 1) {\r\n                    lineDash = map(lineDash, function (rawVal) {\r\n                        return rawVal / strokeScale_1;\r\n                    });\r\n                    if (lineDashOffset) {\r\n                        lineDashOffset /= strokeScale_1;\r\n                        lineDashOffset = mathRound(lineDashOffset);\r\n                    }\r\n                }\r\n                attr(svgEl, 'stroke-dasharray', lineDash.join(','));\r\n                attr(svgEl, 'stroke-dashoffset', (lineDashOffset || 0) + '');\r\n            }\r\n            else {\r\n                attr(svgEl, 'stroke-dasharray', '');\r\n            }\r\n            style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\r\n            style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\r\n            style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit + '');\r\n        }\r\n        else {\r\n            attr(svgEl, 'stroke', NONE);\r\n        }\r\n    }\r\n    var SVGPathRebuilder = (function () {\r\n        function SVGPathRebuilder() {\r\n        }\r\n        SVGPathRebuilder.prototype.reset = function () {\r\n            this._d = [];\r\n            this._str = '';\r\n        };\r\n        SVGPathRebuilder.prototype.moveTo = function (x, y) {\r\n            this._add('M', x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.lineTo = function (x, y) {\r\n            this._add('L', x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.bezierCurveTo = function (x, y, x2, y2, x3, y3) {\r\n            this._add('C', x, y, x2, y2, x3, y3);\r\n        };\r\n        SVGPathRebuilder.prototype.quadraticCurveTo = function (x, y, x2, y2) {\r\n            this._add('Q', x, y, x2, y2);\r\n        };\r\n        SVGPathRebuilder.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n            this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise);\r\n        };\r\n        SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {\r\n            var firstCmd = this._d.length === 0;\r\n            var dTheta = endAngle - startAngle;\r\n            var clockwise = !anticlockwise;\r\n            var dThetaPositive = Math.abs(dTheta);\r\n            var isCircle = isAroundZero$1(dThetaPositive - PI2$a)\r\n                || (clockwise ? dTheta >= PI2$a : -dTheta >= PI2$a);\r\n            var unifiedTheta = dTheta > 0 ? dTheta % PI2$a : (dTheta % PI2$a + PI2$a);\r\n            var large = false;\r\n            if (isCircle) {\r\n                large = true;\r\n            }\r\n            else if (isAroundZero$1(dThetaPositive)) {\r\n                large = false;\r\n            }\r\n            else {\r\n                large = (unifiedTheta >= PI$a) === !!clockwise;\r\n            }\r\n            var x0 = round4(cx + rx * mathCos$4(startAngle));\r\n            var y0 = round4(cy + ry * mathSin$4(startAngle));\r\n            if (isCircle) {\r\n                if (clockwise) {\r\n                    dTheta = PI2$a - 1e-4;\r\n                }\r\n                else {\r\n                    dTheta = -PI2$a + 1e-4;\r\n                }\r\n                large = true;\r\n                if (firstCmd) {\r\n                    this._d.push('M', x0, y0);\r\n                }\r\n            }\r\n            var x = round4(cx + rx * mathCos$4(startAngle + dTheta));\r\n            var y = round4(cy + ry * mathSin$4(startAngle + dTheta));\r\n            if (isNaN(x0) || isNaN(y0) || isNaN(rx) || isNaN(ry) || isNaN(psi) || isNaN(degree) || isNaN(x) || isNaN(y)) {\r\n                return '';\r\n            }\r\n            this._d.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.rect = function (x, y, w, h) {\r\n            this._add('M', x, y);\r\n            this._add('L', x + w, y);\r\n            this._add('L', x + w, y + h);\r\n            this._add('L', x, y + h);\r\n            this._add('L', x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.closePath = function () {\r\n            if (this._d.length > 0) {\r\n                this._add('Z');\r\n            }\r\n        };\r\n        SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) {\r\n            this._d.push(cmd);\r\n            for (var i = 1; i < arguments.length; i++) {\r\n                var val = arguments[i];\r\n                if (isNaN(val)) {\r\n                    this._invalid = true;\r\n                    return;\r\n                }\r\n                this._d.push(round4(val));\r\n            }\r\n        };\r\n        SVGPathRebuilder.prototype.generateStr = function () {\r\n            this._str = this._invalid ? '' : this._d.join(' ');\r\n            this._d = [];\r\n        };\r\n        SVGPathRebuilder.prototype.getStr = function () {\r\n            return this._str;\r\n        };\r\n        return SVGPathRebuilder;\r\n    }());\r\n    var svgPath = {\r\n        brush: function (el) {\r\n            var style = el.style;\r\n            var svgEl = el.__svgEl;\r\n            if (!svgEl) {\r\n                svgEl = createElement('path');\r\n                el.__svgEl = svgEl;\r\n            }\r\n            if (!el.path) {\r\n                el.createPathProxy();\r\n            }\r\n            var path = el.path;\r\n            if (el.shapeChanged()) {\r\n                path.beginPath();\r\n                el.buildPath(path, el.shape);\r\n                el.pathUpdated();\r\n            }\r\n            var pathVersion = path.getVersion();\r\n            var elExt = el;\r\n            var svgPathBuilder = elExt.__svgPathBuilder;\r\n            if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || el.style.strokePercent < 1) {\r\n                if (!svgPathBuilder) {\r\n                    svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder();\r\n                }\r\n                svgPathBuilder.reset();\r\n                path.rebuildPath(svgPathBuilder, el.style.strokePercent);\r\n                svgPathBuilder.generateStr();\r\n                elExt.__svgPathVersion = pathVersion;\r\n            }\r\n            attr(svgEl, 'd', svgPathBuilder.getStr());\r\n            bindStyle(svgEl, style, el);\r\n            setTransform(svgEl, el.transform);\r\n        }\r\n    };\r\n    var svgImage = {\r\n        brush: function (el) {\r\n            var style = el.style;\r\n            var image = style.image;\r\n            if (image instanceof HTMLImageElement) {\r\n                var src = image.src;\r\n                image = src;\r\n            }\r\n            if (!image) {\r\n                return;\r\n            }\r\n            var x = style.x || 0;\r\n            var y = style.y || 0;\r\n            var dw = style.width;\r\n            var dh = style.height;\r\n            var svgEl = el.__svgEl;\r\n            if (!svgEl) {\r\n                svgEl = createElement('image');\r\n                el.__svgEl = svgEl;\r\n            }\r\n            if (image !== el.__imageSrc) {\r\n                attrXLink(svgEl, 'href', image);\r\n                el.__imageSrc = image;\r\n            }\r\n            attr(svgEl, 'width', dw + '');\r\n            attr(svgEl, 'height', dh + '');\r\n            attr(svgEl, 'x', x + '');\r\n            attr(svgEl, 'y', y + '');\r\n            setTransform(svgEl, el.transform);\r\n        }\r\n    };\r\n    var TEXT_ALIGN_TO_ANCHOR = {\r\n        left: 'start',\r\n        right: 'end',\r\n        center: 'middle',\r\n        middle: 'middle'\r\n    };\r\n    function adjustTextY$1(y, lineHeight, textBaseline) {\r\n        if (textBaseline === 'top') {\r\n            y += lineHeight / 2;\r\n        }\r\n        else if (textBaseline === 'bottom') {\r\n            y -= lineHeight / 2;\r\n        }\r\n        return y;\r\n    }\r\n    var svgText = {\r\n        brush: function (el) {\r\n            var style = el.style;\r\n            var text = style.text;\r\n            text != null && (text += '');\r\n            if (!text || isNaN(style.x) || isNaN(style.y)) {\r\n                return;\r\n            }\r\n            var textSvgEl = el.__svgEl;\r\n            if (!textSvgEl) {\r\n                textSvgEl = createElement('text');\r\n                attrXML(textSvgEl, 'xml:space', 'preserve');\r\n                el.__svgEl = textSvgEl;\r\n            }\r\n            var font = style.font || DEFAULT_FONT;\r\n            var textSvgElStyle = textSvgEl.style;\r\n            textSvgElStyle.font = font;\r\n            textSvgEl.textContent = text;\r\n            bindStyle(textSvgEl, style, el);\r\n            setTransform(textSvgEl, el.transform);\r\n            var x = style.x || 0;\r\n            var y = adjustTextY$1(style.y || 0, getLineHeight(font), style.textBaseline);\r\n            var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign]\r\n                || style.textAlign;\r\n            attr(textSvgEl, 'dominant-baseline', 'central');\r\n            attr(textSvgEl, 'text-anchor', textAlign);\r\n            attr(textSvgEl, 'x', x + '');\r\n            attr(textSvgEl, 'y', y + '');\r\n        }\r\n    };\n\n    function diff(oldArr, newArr, equals) {\r\n        if (!equals) {\r\n            equals = function (a, b) {\r\n                return a === b;\r\n            };\r\n        }\r\n        oldArr = oldArr.slice();\r\n        newArr = newArr.slice();\r\n        var newLen = newArr.length;\r\n        var oldLen = oldArr.length;\r\n        var editLength = 1;\r\n        var maxEditLength = newLen + oldLen;\r\n        var bestPath = [{ newPos: -1, components: [] }];\r\n        var oldPos = extractCommon(bestPath[0], newArr, oldArr, 0, equals);\r\n        if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\r\n            var indices = [];\r\n            for (var i = 0; i < newArr.length; i++) {\r\n                indices.push(i);\r\n            }\r\n            return [{\r\n                    indices: indices,\r\n                    count: newArr.length,\r\n                    added: false,\r\n                    removed: false\r\n                }];\r\n        }\r\n        function execEditLength() {\r\n            for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\r\n                var basePath;\r\n                var addPath = bestPath[diagonalPath - 1];\r\n                var removePath = bestPath[diagonalPath + 1];\r\n                var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\r\n                if (addPath) {\r\n                    bestPath[diagonalPath - 1] = undefined;\r\n                }\r\n                var canAdd = addPath && addPath.newPos + 1 < newLen;\r\n                var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\r\n                if (!canAdd && !canRemove) {\r\n                    bestPath[diagonalPath] = undefined;\r\n                    continue;\r\n                }\r\n                if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {\r\n                    basePath = clonePath(removePath);\r\n                    pushComponent(basePath.components, false, true);\r\n                }\r\n                else {\r\n                    basePath = addPath;\r\n                    basePath.newPos++;\r\n                    pushComponent(basePath.components, true, false);\r\n                }\r\n                oldPos = extractCommon(basePath, newArr, oldArr, diagonalPath, equals);\r\n                if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\r\n                    return buildValues(basePath.components);\r\n                }\r\n                else {\r\n                    bestPath[diagonalPath] = basePath;\r\n                }\r\n            }\r\n            editLength++;\r\n        }\r\n        while (editLength <= maxEditLength) {\r\n            var ret = execEditLength();\r\n            if (ret) {\r\n                return ret;\r\n            }\r\n        }\r\n    }\r\n    function extractCommon(basePath, newArr, oldArr, diagonalPath, equals) {\r\n        var newLen = newArr.length;\r\n        var oldLen = oldArr.length;\r\n        var newPos = basePath.newPos;\r\n        var oldPos = newPos - diagonalPath;\r\n        var commonCount = 0;\r\n        while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\r\n            newPos++;\r\n            oldPos++;\r\n            commonCount++;\r\n        }\r\n        if (commonCount) {\r\n            basePath.components.push({\r\n                count: commonCount,\r\n                added: false,\r\n                removed: false,\r\n                indices: []\r\n            });\r\n        }\r\n        basePath.newPos = newPos;\r\n        return oldPos;\r\n    }\r\n    function pushComponent(components, added, removed) {\r\n        var last = components[components.length - 1];\r\n        if (last && last.added === added && last.removed === removed) {\r\n            components[components.length - 1] = {\r\n                count: last.count + 1,\r\n                added: added,\r\n                removed: removed,\r\n                indices: []\r\n            };\r\n        }\r\n        else {\r\n            components.push({\r\n                count: 1,\r\n                added: added,\r\n                removed: removed,\r\n                indices: []\r\n            });\r\n        }\r\n    }\r\n    function buildValues(components) {\r\n        var componentPos = 0;\r\n        var componentLen = components.length;\r\n        var newPos = 0;\r\n        var oldPos = 0;\r\n        for (; componentPos < componentLen; componentPos++) {\r\n            var component = components[componentPos];\r\n            if (!component.removed) {\r\n                var indices = [];\r\n                for (var i = newPos; i < newPos + component.count; i++) {\r\n                    indices.push(i);\r\n                }\r\n                component.indices = indices;\r\n                newPos += component.count;\r\n                if (!component.added) {\r\n                    oldPos += component.count;\r\n                }\r\n            }\r\n            else {\r\n                for (var i = oldPos; i < oldPos + component.count; i++) {\r\n                    component.indices.push(i);\r\n                }\r\n                oldPos += component.count;\r\n            }\r\n        }\r\n        return components;\r\n    }\r\n    function clonePath(path) {\r\n        return { newPos: path.newPos, components: path.components.slice(0) };\r\n    }\r\n    function arrayDiff(oldArr, newArr, equal) {\r\n        return diff(oldArr, newArr, equal);\r\n    }\n\n    var MARK_UNUSED = '0';\r\n    var MARK_USED = '1';\r\n    var Definable = (function () {\r\n        function Definable(zrId, svgRoot, tagNames, markLabel, domName) {\r\n            this.nextId = 0;\r\n            this._domName = '_dom';\r\n            this.createElement = createElement;\r\n            this._zrId = zrId;\r\n            this._svgRoot = svgRoot;\r\n            this._tagNames = typeof tagNames === 'string' ? [tagNames] : tagNames;\r\n            this._markLabel = markLabel;\r\n            if (domName) {\r\n                this._domName = domName;\r\n            }\r\n        }\r\n        Definable.prototype.getDefs = function (isForceCreating) {\r\n            var svgRoot = this._svgRoot;\r\n            var defs = this._svgRoot.getElementsByTagName('defs');\r\n            if (defs.length === 0) {\r\n                if (isForceCreating) {\r\n                    var defs_1 = svgRoot.insertBefore(this.createElement('defs'), svgRoot.firstChild);\r\n                    if (!defs_1.contains) {\r\n                        defs_1.contains = function (el) {\r\n                            var children = defs_1.children;\r\n                            if (!children) {\r\n                                return false;\r\n                            }\r\n                            for (var i = children.length - 1; i >= 0; --i) {\r\n                                if (children[i] === el) {\r\n                                    return true;\r\n                                }\r\n                            }\r\n                            return false;\r\n                        };\r\n                    }\r\n                    return defs_1;\r\n                }\r\n                else {\r\n                    return null;\r\n                }\r\n            }\r\n            else {\r\n                return defs[0];\r\n            }\r\n        };\r\n        Definable.prototype.doUpdate = function (target, onUpdate) {\r\n            if (!target) {\r\n                return;\r\n            }\r\n            var defs = this.getDefs(false);\r\n            if (target[this._domName] && defs.contains(target[this._domName])) {\r\n                if (typeof onUpdate === 'function') {\r\n                    onUpdate(target);\r\n                }\r\n            }\r\n            else {\r\n                var dom = this.add(target);\r\n                if (dom) {\r\n                    target[this._domName] = dom;\r\n                }\r\n            }\r\n        };\r\n        Definable.prototype.add = function (target) {\r\n            return null;\r\n        };\r\n        Definable.prototype.addDom = function (dom) {\r\n            var defs = this.getDefs(true);\r\n            if (dom.parentNode !== defs) {\r\n                defs.appendChild(dom);\r\n            }\r\n        };\r\n        Definable.prototype.removeDom = function (target) {\r\n            var defs = this.getDefs(false);\r\n            if (defs && target[this._domName]) {\r\n                defs.removeChild(target[this._domName]);\r\n                target[this._domName] = null;\r\n            }\r\n        };\r\n        Definable.prototype.getDoms = function () {\r\n            var defs = this.getDefs(false);\r\n            if (!defs) {\r\n                return [];\r\n            }\r\n            var doms = [];\r\n            each(this._tagNames, function (tagName) {\r\n                var tags = defs.getElementsByTagName(tagName);\r\n                for (var i = 0; i < tags.length; i++) {\r\n                    doms.push(tags[i]);\r\n                }\r\n            });\r\n            return doms;\r\n        };\r\n        Definable.prototype.markAllUnused = function () {\r\n            var doms = this.getDoms();\r\n            var that = this;\r\n            each(doms, function (dom) {\r\n                dom[that._markLabel] = MARK_UNUSED;\r\n            });\r\n        };\r\n        Definable.prototype.markDomUsed = function (dom) {\r\n            dom && (dom[this._markLabel] = MARK_USED);\r\n        };\r\n        Definable.prototype.markDomUnused = function (dom) {\r\n            dom && (dom[this._markLabel] = MARK_UNUSED);\r\n        };\r\n        Definable.prototype.isDomUnused = function (dom) {\r\n            return dom && dom[this._markLabel] !== MARK_USED;\r\n        };\r\n        Definable.prototype.removeUnused = function () {\r\n            var _this = this;\r\n            var defs = this.getDefs(false);\r\n            if (!defs) {\r\n                return;\r\n            }\r\n            var doms = this.getDoms();\r\n            each(doms, function (dom) {\r\n                if (_this.isDomUnused(dom)) {\r\n                    defs.removeChild(dom);\r\n                }\r\n            });\r\n        };\r\n        Definable.prototype.getSvgProxy = function (displayable) {\r\n            if (displayable instanceof Path) {\r\n                return svgPath;\r\n            }\r\n            else if (displayable instanceof ZRImage) {\r\n                return svgImage;\r\n            }\r\n            else if (displayable instanceof TSpan) {\r\n                return svgText;\r\n            }\r\n            else {\r\n                return svgPath;\r\n            }\r\n        };\r\n        Definable.prototype.getSvgElement = function (displayable) {\r\n            return displayable.__svgEl;\r\n        };\r\n        return Definable;\r\n    }());\n\n    function isLinearGradient(value) {\r\n        return value.type === 'linear';\r\n    }\r\n    function isRadialGradient(value) {\r\n        return value.type === 'radial';\r\n    }\r\n    function isGradient(value) {\r\n        return value && (value.type === 'linear'\r\n            || value.type === 'radial');\r\n    }\r\n    var GradientManager = (function (_super) {\r\n        __extends(GradientManager, _super);\r\n        function GradientManager(zrId, svgRoot) {\r\n            return _super.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__') || this;\r\n        }\r\n        GradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\r\n            if (displayable && displayable.style) {\r\n                var that_1 = this;\r\n                each(['fill', 'stroke'], function (fillOrStroke) {\r\n                    var value = displayable.style[fillOrStroke];\r\n                    if (isGradient(value)) {\r\n                        var gradient = value;\r\n                        var defs = that_1.getDefs(true);\r\n                        var dom = void 0;\r\n                        if (gradient.__dom) {\r\n                            dom = gradient.__dom;\r\n                            if (!defs.contains(gradient.__dom)) {\r\n                                that_1.addDom(dom);\r\n                            }\r\n                        }\r\n                        else {\r\n                            dom = that_1.add(gradient);\r\n                        }\r\n                        that_1.markUsed(displayable);\r\n                        var id = dom.getAttribute('id');\r\n                        svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        GradientManager.prototype.add = function (gradient) {\r\n            var dom;\r\n            if (isLinearGradient(gradient)) {\r\n                dom = this.createElement('linearGradient');\r\n            }\r\n            else if (isRadialGradient(gradient)) {\r\n                dom = this.createElement('radialGradient');\r\n            }\r\n            else {\r\n                logError('Illegal gradient type.');\r\n                return null;\r\n            }\r\n            gradient.id = gradient.id || this.nextId++;\r\n            dom.setAttribute('id', 'zr' + this._zrId\r\n                + '-gradient-' + gradient.id);\r\n            this.updateDom(gradient, dom);\r\n            this.addDom(dom);\r\n            return dom;\r\n        };\r\n        GradientManager.prototype.update = function (gradient) {\r\n            if (!isGradient(gradient)) {\r\n                return;\r\n            }\r\n            var that = this;\r\n            this.doUpdate(gradient, function () {\r\n                var dom = gradient.__dom;\r\n                if (!dom) {\r\n                    return;\r\n                }\r\n                var tagName = dom.tagName;\r\n                var type = gradient.type;\r\n                if (type === 'linear' && tagName === 'linearGradient'\r\n                    || type === 'radial' && tagName === 'radialGradient') {\r\n                    that.updateDom(gradient, gradient.__dom);\r\n                }\r\n                else {\r\n                    that.removeDom(gradient);\r\n                    that.add(gradient);\r\n                }\r\n            });\r\n        };\r\n        GradientManager.prototype.updateDom = function (gradient, dom) {\r\n            if (isLinearGradient(gradient)) {\r\n                dom.setAttribute('x1', gradient.x + '');\r\n                dom.setAttribute('y1', gradient.y + '');\r\n                dom.setAttribute('x2', gradient.x2 + '');\r\n                dom.setAttribute('y2', gradient.y2 + '');\r\n            }\r\n            else if (isRadialGradient(gradient)) {\r\n                dom.setAttribute('cx', gradient.x + '');\r\n                dom.setAttribute('cy', gradient.y + '');\r\n                dom.setAttribute('r', gradient.r + '');\r\n            }\r\n            else {\r\n                logError('Illegal gradient type.');\r\n                return;\r\n            }\r\n            if (gradient.global) {\r\n                dom.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n            }\r\n            else {\r\n                dom.setAttribute('gradientUnits', 'objectBoundingBox');\r\n            }\r\n            dom.innerHTML = '';\r\n            var colors = gradient.colorStops;\r\n            for (var i = 0, len = colors.length; i < len; ++i) {\r\n                var stop_1 = this.createElement('stop');\r\n                stop_1.setAttribute('offset', colors[i].offset * 100 + '%');\r\n                var color$1 = colors[i].color;\r\n                if (color$1.indexOf('rgba') > -1) {\r\n                    var opacity = parse(color$1)[3];\r\n                    var hex = toHex(color$1);\r\n                    stop_1.setAttribute('stop-color', '#' + hex);\r\n                    stop_1.setAttribute('stop-opacity', opacity + '');\r\n                }\r\n                else {\r\n                    stop_1.setAttribute('stop-color', colors[i].color);\r\n                }\r\n                dom.appendChild(stop_1);\r\n            }\r\n            gradient.__dom = dom;\r\n        };\r\n        GradientManager.prototype.markUsed = function (displayable) {\r\n            if (displayable.style) {\r\n                var gradient = displayable.style.fill;\r\n                if (gradient && gradient.__dom) {\r\n                    _super.prototype.markDomUsed.call(this, gradient.__dom);\r\n                }\r\n                gradient = displayable.style.stroke;\r\n                if (gradient && gradient.__dom) {\r\n                    _super.prototype.markDomUsed.call(this, gradient.__dom);\r\n                }\r\n            }\r\n        };\r\n        return GradientManager;\r\n    }(Definable));\n\n    function isPattern(value) {\r\n        return value && (!!value.image || !!value.svgElement);\r\n    }\r\n    var patternDomMap = new WeakMap();\r\n    var PatternManager = (function (_super) {\r\n        __extends(PatternManager, _super);\r\n        function PatternManager(zrId, svgRoot) {\r\n            return _super.call(this, zrId, svgRoot, ['pattern'], '__pattern_in_use__') || this;\r\n        }\r\n        PatternManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\r\n            if (displayable && displayable.style) {\r\n                var that_1 = this;\r\n                each(['fill', 'stroke'], function (fillOrStroke) {\r\n                    var pattern = displayable.style[fillOrStroke];\r\n                    if (isPattern(pattern)) {\r\n                        var defs = that_1.getDefs(true);\r\n                        var dom = patternDomMap.get(pattern);\r\n                        if (dom) {\r\n                            if (!defs.contains(dom)) {\r\n                                that_1.addDom(dom);\r\n                            }\r\n                        }\r\n                        else {\r\n                            dom = that_1.add(pattern);\r\n                        }\r\n                        that_1.markUsed(displayable);\r\n                        var id = dom.getAttribute('id');\r\n                        svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        PatternManager.prototype.add = function (pattern) {\r\n            if (!isPattern(pattern)) {\r\n                return;\r\n            }\r\n            var dom = this.createElement('pattern');\r\n            pattern.id = pattern.id == null ? this.nextId++ : pattern.id;\r\n            dom.setAttribute('id', 'zr' + this._zrId\r\n                + '-pattern-' + pattern.id);\r\n            dom.setAttribute('x', '0');\r\n            dom.setAttribute('y', '0');\r\n            dom.setAttribute('patternUnits', 'userSpaceOnUse');\r\n            this.updateDom(pattern, dom);\r\n            this.addDom(dom);\r\n            return dom;\r\n        };\r\n        PatternManager.prototype.update = function (pattern) {\r\n            if (!isPattern(pattern)) {\r\n                return;\r\n            }\r\n            var that = this;\r\n            this.doUpdate(pattern, function () {\r\n                var dom = patternDomMap.get(pattern);\r\n                that.updateDom(pattern, dom);\r\n            });\r\n        };\r\n        PatternManager.prototype.updateDom = function (pattern, patternDom) {\r\n            var svgElement = pattern.svgElement;\r\n            if (svgElement instanceof SVGElement) {\r\n                if (svgElement.parentNode !== patternDom) {\r\n                    patternDom.innerHTML = '';\r\n                    patternDom.appendChild(svgElement);\r\n                    patternDom.setAttribute('width', pattern.svgWidth + '');\r\n                    patternDom.setAttribute('height', pattern.svgHeight + '');\r\n                }\r\n            }\r\n            else {\r\n                var img = void 0;\r\n                var prevImage = patternDom.getElementsByTagName('image');\r\n                if (prevImage.length) {\r\n                    if (pattern.image) {\r\n                        img = prevImage[0];\r\n                    }\r\n                    else {\r\n                        patternDom.removeChild(prevImage[0]);\r\n                        return;\r\n                    }\r\n                }\r\n                else if (pattern.image) {\r\n                    img = this.createElement('image');\r\n                }\r\n                if (img) {\r\n                    var imageSrc = void 0;\r\n                    if (typeof pattern.image === 'string') {\r\n                        imageSrc = pattern.image;\r\n                    }\r\n                    else if (pattern.image instanceof HTMLImageElement) {\r\n                        imageSrc = pattern.image.src;\r\n                    }\r\n                    else if (pattern.image instanceof HTMLCanvasElement) {\r\n                        imageSrc = pattern.image.toDataURL();\r\n                    }\r\n                    if (imageSrc) {\r\n                        img.setAttribute('href', imageSrc);\r\n                        img.setAttribute('x', '0');\r\n                        img.setAttribute('y', '0');\r\n                        var hostEl = {\r\n                            dirty: function () { }\r\n                        };\r\n                        var createdImage = createOrUpdateImage(imageSrc, img, hostEl, function (img) {\r\n                            patternDom.setAttribute('width', img.width + '');\r\n                            patternDom.setAttribute('height', img.height + '');\r\n                        });\r\n                        if (createdImage && createdImage.width && createdImage.height) {\r\n                            patternDom.setAttribute('width', createdImage.width + '');\r\n                            patternDom.setAttribute('height', createdImage.height + '');\r\n                        }\r\n                        patternDom.appendChild(img);\r\n                    }\r\n                }\r\n            }\r\n            var x = pattern.x || 0;\r\n            var y = pattern.y || 0;\r\n            var rotation = (pattern.rotation || 0) / Math.PI * 180;\r\n            var scaleX = pattern.scaleX || 1;\r\n            var scaleY = pattern.scaleY || 1;\r\n            var transform = \"translate(\" + x + \", \" + y + \") rotate(\" + rotation + \") scale(\" + scaleX + \", \" + scaleY + \")\";\r\n            patternDom.setAttribute('patternTransform', transform);\r\n            patternDomMap.set(pattern, patternDom);\r\n        };\r\n        PatternManager.prototype.markUsed = function (displayable) {\r\n            if (displayable.style) {\r\n                if (isPattern(displayable.style.fill)) {\r\n                    _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.fill));\r\n                }\r\n                if (isPattern(displayable.style.stroke)) {\r\n                    _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.stroke));\r\n                }\r\n            }\r\n        };\r\n        return PatternManager;\r\n    }(Definable));\n\n    function generateClipPathsKey(clipPaths) {\r\n        var key = [];\r\n        if (clipPaths) {\r\n            for (var i = 0; i < clipPaths.length; i++) {\r\n                var clipPath = clipPaths[i];\r\n                key.push(clipPath.id);\r\n            }\r\n        }\r\n        return key.join(',');\r\n    }\r\n    function hasClipPath(displayable) {\r\n        var clipPaths = displayable.__clipPaths;\r\n        return clipPaths && clipPaths.length > 0;\r\n    }\r\n    var ClippathManager = (function (_super) {\r\n        __extends(ClippathManager, _super);\r\n        function ClippathManager(zrId, svgRoot) {\r\n            var _this = _super.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__') || this;\r\n            _this._refGroups = {};\r\n            _this._keyDuplicateCount = {};\r\n            return _this;\r\n        }\r\n        ClippathManager.prototype.markAllUnused = function () {\r\n            _super.prototype.markAllUnused.call(this);\r\n            for (var key in this._refGroups) {\r\n                this.markDomUnused(this._refGroups[key]);\r\n            }\r\n            this._keyDuplicateCount = {};\r\n        };\r\n        ClippathManager.prototype._getClipPathGroup = function (displayable, prevDisplayable) {\r\n            if (!hasClipPath(displayable)) {\r\n                return;\r\n            }\r\n            var clipPaths = displayable.__clipPaths;\r\n            var keyDuplicateCount = this._keyDuplicateCount;\r\n            var clipPathKey = generateClipPathsKey(clipPaths);\r\n            if (isClipPathChanged(clipPaths, prevDisplayable && prevDisplayable.__clipPaths)) {\r\n                keyDuplicateCount[clipPathKey] = keyDuplicateCount[clipPathKey] || 0;\r\n                keyDuplicateCount[clipPathKey] && (clipPathKey += '-' + keyDuplicateCount[clipPathKey]);\r\n                keyDuplicateCount[clipPathKey]++;\r\n            }\r\n            return this._refGroups[clipPathKey]\r\n                || (this._refGroups[clipPathKey] = this.createElement('g'));\r\n        };\r\n        ClippathManager.prototype.update = function (displayable, prevDisplayable) {\r\n            var clipGroup = this._getClipPathGroup(displayable, prevDisplayable);\r\n            if (clipGroup) {\r\n                this.markDomUsed(clipGroup);\r\n                this.updateDom(clipGroup, displayable.__clipPaths);\r\n            }\r\n            return clipGroup;\r\n        };\r\n        ClippathManager.prototype.updateDom = function (parentEl, clipPaths) {\r\n            if (clipPaths && clipPaths.length > 0) {\r\n                var defs = this.getDefs(true);\r\n                var clipPath = clipPaths[0];\r\n                var clipPathEl = void 0;\r\n                var id = void 0;\r\n                if (clipPath._dom) {\r\n                    id = clipPath._dom.getAttribute('id');\r\n                    clipPathEl = clipPath._dom;\r\n                    if (!defs.contains(clipPathEl)) {\r\n                        defs.appendChild(clipPathEl);\r\n                    }\r\n                }\r\n                else {\r\n                    id = 'zr' + this._zrId + '-clip-' + this.nextId;\r\n                    ++this.nextId;\r\n                    clipPathEl = this.createElement('clipPath');\r\n                    clipPathEl.setAttribute('id', id);\r\n                    defs.appendChild(clipPathEl);\r\n                    clipPath._dom = clipPathEl;\r\n                }\r\n                var svgProxy = this.getSvgProxy(clipPath);\r\n                svgProxy.brush(clipPath);\r\n                var pathEl = this.getSvgElement(clipPath);\r\n                clipPathEl.innerHTML = '';\r\n                clipPathEl.appendChild(pathEl);\r\n                parentEl.setAttribute('clip-path', 'url(#' + id + ')');\r\n                if (clipPaths.length > 1) {\r\n                    this.updateDom(clipPathEl, clipPaths.slice(1));\r\n                }\r\n            }\r\n            else {\r\n                if (parentEl) {\r\n                    parentEl.setAttribute('clip-path', 'none');\r\n                }\r\n            }\r\n        };\r\n        ClippathManager.prototype.markUsed = function (displayable) {\r\n            var _this = this;\r\n            if (displayable.__clipPaths) {\r\n                each(displayable.__clipPaths, function (clipPath) {\r\n                    if (clipPath._dom) {\r\n                        _super.prototype.markDomUsed.call(_this, clipPath._dom);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        ClippathManager.prototype.removeUnused = function () {\r\n            _super.prototype.removeUnused.call(this);\r\n            var newRefGroupsMap = {};\r\n            for (var key in this._refGroups) {\r\n                var group = this._refGroups[key];\r\n                if (!this.isDomUnused(group)) {\r\n                    newRefGroupsMap[key] = group;\r\n                }\r\n                else if (group.parentNode) {\r\n                    group.parentNode.removeChild(group);\r\n                }\r\n            }\r\n            this._refGroups = newRefGroupsMap;\r\n        };\r\n        return ClippathManager;\r\n    }(Definable));\n\n    var ShadowManager = (function (_super) {\r\n        __extends(ShadowManager, _super);\r\n        function ShadowManager(zrId, svgRoot) {\r\n            var _this = _super.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom') || this;\r\n            _this._shadowDomMap = {};\r\n            _this._shadowDomPool = [];\r\n            return _this;\r\n        }\r\n        ShadowManager.prototype._getFromPool = function () {\r\n            var shadowDom = this._shadowDomPool.pop();\r\n            if (!shadowDom) {\r\n                shadowDom = this.createElement('filter');\r\n                shadowDom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + this.nextId++);\r\n                var domChild = this.createElement('feDropShadow');\r\n                shadowDom.appendChild(domChild);\r\n                this.addDom(shadowDom);\r\n            }\r\n            return shadowDom;\r\n        };\r\n        ShadowManager.prototype.update = function (svgElement, displayable) {\r\n            var style = displayable.style;\r\n            if (hasShadow(style)) {\r\n                var shadowKey = getShadowKey(displayable);\r\n                var shadowDom = displayable._shadowDom = this._shadowDomMap[shadowKey];\r\n                if (!shadowDom) {\r\n                    shadowDom = this._getFromPool();\r\n                    this._shadowDomMap[shadowKey] = shadowDom;\r\n                }\r\n                this.updateDom(svgElement, displayable, shadowDom);\r\n            }\r\n            else {\r\n                this.remove(svgElement, displayable);\r\n            }\r\n        };\r\n        ShadowManager.prototype.remove = function (svgElement, displayable) {\r\n            if (displayable._shadowDom != null) {\r\n                displayable._shadowDom = null;\r\n                svgElement.style.filter = '';\r\n            }\r\n        };\r\n        ShadowManager.prototype.updateDom = function (svgElement, displayable, shadowDom) {\r\n            var domChild = shadowDom.children[0];\r\n            var style = displayable.style;\r\n            var globalScale = displayable.getGlobalScale();\r\n            var scaleX = globalScale[0];\r\n            var scaleY = globalScale[1];\r\n            if (!scaleX || !scaleY) {\r\n                return;\r\n            }\r\n            var offsetX = style.shadowOffsetX || 0;\r\n            var offsetY = style.shadowOffsetY || 0;\r\n            var blur = style.shadowBlur;\r\n            var color = style.shadowColor;\r\n            domChild.setAttribute('dx', offsetX / scaleX + '');\r\n            domChild.setAttribute('dy', offsetY / scaleY + '');\r\n            domChild.setAttribute('flood-color', color);\r\n            var stdDx = blur / 2 / scaleX;\r\n            var stdDy = blur / 2 / scaleY;\r\n            var stdDeviation = stdDx + ' ' + stdDy;\r\n            domChild.setAttribute('stdDeviation', stdDeviation);\r\n            shadowDom.setAttribute('x', '-100%');\r\n            shadowDom.setAttribute('y', '-100%');\r\n            shadowDom.setAttribute('width', '300%');\r\n            shadowDom.setAttribute('height', '300%');\r\n            displayable._shadowDom = shadowDom;\r\n            var id = shadowDom.getAttribute('id');\r\n            svgElement.style.filter = 'url(#' + id + ')';\r\n        };\r\n        ShadowManager.prototype.removeUnused = function () {\r\n            var defs = this.getDefs(false);\r\n            if (!defs) {\r\n                return;\r\n            }\r\n            var shadowDomsPool = this._shadowDomPool;\r\n            for (var key in this._shadowDomMap) {\r\n                var dom = this._shadowDomMap[key];\r\n                shadowDomsPool.push(dom);\r\n            }\r\n            this._shadowDomMap = {};\r\n        };\r\n        return ShadowManager;\r\n    }(Definable));\r\n    function hasShadow(style) {\r\n        return style\r\n            && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\r\n    }\r\n    function getShadowKey(displayable) {\r\n        var style = displayable.style;\r\n        var globalScale = displayable.getGlobalScale();\r\n        return [\r\n            style.shadowColor,\r\n            (style.shadowBlur || 0).toFixed(2),\r\n            (style.shadowOffsetX || 0).toFixed(2),\r\n            (style.shadowOffsetY || 0).toFixed(2),\r\n            globalScale[0],\r\n            globalScale[1]\r\n        ].join(',');\r\n    }\n\n    function parseInt10$1(val) {\r\n        return parseInt(val, 10);\r\n    }\r\n    function getSvgProxy(el) {\r\n        if (el instanceof Path) {\r\n            return svgPath;\r\n        }\r\n        else if (el instanceof ZRImage) {\r\n            return svgImage;\r\n        }\r\n        else if (el instanceof TSpan) {\r\n            return svgText;\r\n        }\r\n        else {\r\n            return svgPath;\r\n        }\r\n    }\r\n    function checkParentAvailable(parent, child) {\r\n        return child && parent && child.parentNode !== parent;\r\n    }\r\n    function insertAfter(parent, child, prevSibling) {\r\n        if (checkParentAvailable(parent, child) && prevSibling) {\r\n            var nextSibling = prevSibling.nextSibling;\r\n            nextSibling ? parent.insertBefore(child, nextSibling)\r\n                : parent.appendChild(child);\r\n        }\r\n    }\r\n    function prepend(parent, child) {\r\n        if (checkParentAvailable(parent, child)) {\r\n            var firstChild = parent.firstChild;\r\n            firstChild ? parent.insertBefore(child, firstChild)\r\n                : parent.appendChild(child);\r\n        }\r\n    }\r\n    function remove(parent, child) {\r\n        if (child && parent && child.parentNode === parent) {\r\n            parent.removeChild(child);\r\n        }\r\n    }\r\n    function removeFromMyParent(child) {\r\n        if (child && child.parentNode) {\r\n            child.parentNode.removeChild(child);\r\n        }\r\n    }\r\n    function getSvgElement(displayable) {\r\n        return displayable.__svgEl;\r\n    }\r\n    var SVGPainter = (function () {\r\n        function SVGPainter(root, storage, opts, zrId) {\r\n            this.type = 'svg';\r\n            this.refreshHover = createMethodNotSupport('refreshHover');\r\n            this.pathToImage = createMethodNotSupport('pathToImage');\r\n            this.configLayer = createMethodNotSupport('configLayer');\r\n            this.root = root;\r\n            this.storage = storage;\r\n            this._opts = opts = extend({}, opts || {});\r\n            var svgDom = createElement('svg');\r\n            svgDom.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n            svgDom.setAttribute('version', '1.1');\r\n            svgDom.setAttribute('baseProfile', 'full');\r\n            svgDom.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\r\n            var bgRoot = createElement('g');\r\n            svgDom.appendChild(bgRoot);\r\n            var svgRoot = createElement('g');\r\n            svgDom.appendChild(svgRoot);\r\n            this._gradientManager = new GradientManager(zrId, svgRoot);\r\n            this._patternManager = new PatternManager(zrId, svgRoot);\r\n            this._clipPathManager = new ClippathManager(zrId, svgRoot);\r\n            this._shadowManager = new ShadowManager(zrId, svgRoot);\r\n            var viewport = document.createElement('div');\r\n            viewport.style.cssText = 'overflow:hidden;position:relative';\r\n            this._svgDom = svgDom;\r\n            this._svgRoot = svgRoot;\r\n            this._backgroundRoot = bgRoot;\r\n            this._viewport = viewport;\r\n            root.appendChild(viewport);\r\n            viewport.appendChild(svgDom);\r\n            this.resize(opts.width, opts.height);\r\n            this._visibleList = [];\r\n        }\r\n        SVGPainter.prototype.getType = function () {\r\n            return 'svg';\r\n        };\r\n        SVGPainter.prototype.getViewportRoot = function () {\r\n            return this._viewport;\r\n        };\r\n        SVGPainter.prototype.getSvgDom = function () {\r\n            return this._svgDom;\r\n        };\r\n        SVGPainter.prototype.getSvgRoot = function () {\r\n            return this._svgRoot;\r\n        };\r\n        SVGPainter.prototype.getViewportRootOffset = function () {\r\n            var viewportRoot = this.getViewportRoot();\r\n            if (viewportRoot) {\r\n                return {\r\n                    offsetLeft: viewportRoot.offsetLeft || 0,\r\n                    offsetTop: viewportRoot.offsetTop || 0\r\n                };\r\n            }\r\n        };\r\n        SVGPainter.prototype.refresh = function () {\r\n            var list = this.storage.getDisplayList(true);\r\n            this._paintList(list);\r\n        };\r\n        SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n            if (this._backgroundRoot && this._backgroundNode) {\r\n                this._backgroundRoot.removeChild(this._backgroundNode);\r\n            }\r\n            var bgNode = createElement('rect');\r\n            bgNode.setAttribute('width', this.getWidth());\r\n            bgNode.setAttribute('height', this.getHeight());\r\n            bgNode.setAttribute('x', 0);\r\n            bgNode.setAttribute('y', 0);\r\n            bgNode.setAttribute('id', 0);\r\n            bgNode.style.fill = backgroundColor;\r\n            this._backgroundRoot.appendChild(bgNode);\r\n            this._backgroundNode = bgNode;\r\n        };\r\n        SVGPainter.prototype.createSVGElement = function (tag) {\r\n            return createElement(tag);\r\n        };\r\n        SVGPainter.prototype.paintOne = function (el) {\r\n            var svgProxy = getSvgProxy(el);\r\n            svgProxy && svgProxy.brush(el);\r\n            return getSvgElement(el);\r\n        };\r\n        SVGPainter.prototype._paintList = function (list) {\r\n            var gradientManager = this._gradientManager;\r\n            var patternManager = this._patternManager;\r\n            var clipPathManager = this._clipPathManager;\r\n            var shadowManager = this._shadowManager;\r\n            gradientManager.markAllUnused();\r\n            patternManager.markAllUnused();\r\n            clipPathManager.markAllUnused();\r\n            shadowManager.markAllUnused();\r\n            var svgRoot = this._svgRoot;\r\n            var visibleList = this._visibleList;\r\n            var listLen = list.length;\r\n            var newVisibleList = [];\r\n            for (var i = 0; i < listLen; i++) {\r\n                var displayable = list[i];\r\n                var svgProxy = getSvgProxy(displayable);\r\n                var svgElement = getSvgElement(displayable);\r\n                if (!displayable.invisible) {\r\n                    if (displayable.__dirty || !svgElement) {\r\n                        svgProxy && svgProxy.brush(displayable);\r\n                        svgElement = getSvgElement(displayable);\r\n                        if (svgElement && displayable.style) {\r\n                            gradientManager.update(displayable.style.fill);\r\n                            gradientManager.update(displayable.style.stroke);\r\n                            patternManager.update(displayable.style.fill);\r\n                            patternManager.update(displayable.style.stroke);\r\n                            shadowManager.update(svgElement, displayable);\r\n                        }\r\n                        displayable.__dirty = 0;\r\n                    }\r\n                    if (svgElement) {\r\n                        newVisibleList.push(displayable);\r\n                    }\r\n                }\r\n            }\r\n            var diff = arrayDiff(visibleList, newVisibleList);\r\n            var prevSvgElement;\r\n            var topPrevSvgElement;\r\n            for (var i = 0; i < diff.length; i++) {\r\n                var item = diff[i];\r\n                if (item.removed) {\r\n                    for (var k = 0; k < item.count; k++) {\r\n                        var displayable = visibleList[item.indices[k]];\r\n                        var svgElement = getSvgElement(displayable);\r\n                        hasClipPath(displayable) ? removeFromMyParent(svgElement)\r\n                            : remove(svgRoot, svgElement);\r\n                    }\r\n                }\r\n            }\r\n            var prevDisplayable;\r\n            var currentClipGroup;\r\n            for (var i = 0; i < diff.length; i++) {\r\n                var item = diff[i];\r\n                var isAdd = item.added;\r\n                if (item.removed) {\r\n                    continue;\r\n                }\r\n                for (var k = 0; k < item.count; k++) {\r\n                    var displayable = newVisibleList[item.indices[k]];\r\n                    var clipGroup = clipPathManager.update(displayable, prevDisplayable);\r\n                    if (clipGroup !== currentClipGroup) {\r\n                        prevSvgElement = topPrevSvgElement;\r\n                        if (clipGroup) {\r\n                            prevSvgElement ? insertAfter(svgRoot, clipGroup, prevSvgElement)\r\n                                : prepend(svgRoot, clipGroup);\r\n                            topPrevSvgElement = clipGroup;\r\n                            prevSvgElement = null;\r\n                        }\r\n                        currentClipGroup = clipGroup;\r\n                    }\r\n                    var svgElement = getSvgElement(displayable);\r\n                    prevSvgElement\r\n                        ? insertAfter(currentClipGroup || svgRoot, svgElement, prevSvgElement)\r\n                        : prepend(currentClipGroup || svgRoot, svgElement);\r\n                    prevSvgElement = svgElement || prevSvgElement;\r\n                    if (!currentClipGroup) {\r\n                        topPrevSvgElement = prevSvgElement;\r\n                    }\r\n                    gradientManager.markUsed(displayable);\r\n                    gradientManager.addWithoutUpdate(svgElement, displayable);\r\n                    patternManager.markUsed(displayable);\r\n                    patternManager.addWithoutUpdate(svgElement, displayable);\r\n                    clipPathManager.markUsed(displayable);\r\n                    prevDisplayable = displayable;\r\n                }\r\n            }\r\n            gradientManager.removeUnused();\r\n            patternManager.removeUnused();\r\n            clipPathManager.removeUnused();\r\n            shadowManager.removeUnused();\r\n            this._visibleList = newVisibleList;\r\n        };\r\n        SVGPainter.prototype._getDefs = function (isForceCreating) {\r\n            var svgRoot = this._svgDom;\r\n            var defs = svgRoot.getElementsByTagName('defs');\r\n            if (defs.length === 0) {\r\n                if (isForceCreating) {\r\n                    var defs_1 = svgRoot.insertBefore(createElement('defs'), svgRoot.firstChild);\r\n                    if (!defs_1.contains) {\r\n                        defs_1.contains = function (el) {\r\n                            var children = defs_1.children;\r\n                            if (!children) {\r\n                                return false;\r\n                            }\r\n                            for (var i = children.length - 1; i >= 0; --i) {\r\n                                if (children[i] === el) {\r\n                                    return true;\r\n                                }\r\n                            }\r\n                            return false;\r\n                        };\r\n                    }\r\n                    return defs_1;\r\n                }\r\n                else {\r\n                    return null;\r\n                }\r\n            }\r\n            else {\r\n                return defs[0];\r\n            }\r\n        };\r\n        SVGPainter.prototype.resize = function (width, height) {\r\n            var viewport = this._viewport;\r\n            viewport.style.display = 'none';\r\n            var opts = this._opts;\r\n            width != null && (opts.width = width);\r\n            height != null && (opts.height = height);\r\n            width = this._getSize(0);\r\n            height = this._getSize(1);\r\n            viewport.style.display = '';\r\n            if (this._width !== width || this._height !== height) {\r\n                this._width = width;\r\n                this._height = height;\r\n                var viewportStyle = viewport.style;\r\n                viewportStyle.width = width + 'px';\r\n                viewportStyle.height = height + 'px';\r\n                var svgRoot = this._svgDom;\r\n                svgRoot.setAttribute('width', width + '');\r\n                svgRoot.setAttribute('height', height + '');\r\n            }\r\n            if (this._backgroundNode) {\r\n                this._backgroundNode.setAttribute('width', width);\r\n                this._backgroundNode.setAttribute('height', height);\r\n            }\r\n        };\r\n        SVGPainter.prototype.getWidth = function () {\r\n            return this._width;\r\n        };\r\n        SVGPainter.prototype.getHeight = function () {\r\n            return this._height;\r\n        };\r\n        SVGPainter.prototype._getSize = function (whIdx) {\r\n            var opts = this._opts;\r\n            var wh = ['width', 'height'][whIdx];\r\n            var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n            var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n            var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n            if (opts[wh] != null && opts[wh] !== 'auto') {\r\n                return parseFloat(opts[wh]);\r\n            }\r\n            var root = this.root;\r\n            var stl = document.defaultView.getComputedStyle(root);\r\n            return ((root[cwh] || parseInt10$1(stl[wh]) || parseInt10$1(root.style[wh]))\r\n                - (parseInt10$1(stl[plt]) || 0)\r\n                - (parseInt10$1(stl[prb]) || 0)) | 0;\r\n        };\r\n        SVGPainter.prototype.dispose = function () {\r\n            this.root.innerHTML = '';\r\n            this._svgRoot\r\n                = this._backgroundRoot\r\n                    = this._svgDom\r\n                        = this._backgroundNode\r\n                            = this._viewport\r\n                                = this.storage\r\n                                    = null;\r\n        };\r\n        SVGPainter.prototype.clear = function () {\r\n            var viewportNode = this._viewport;\r\n            if (viewportNode && viewportNode.parentNode) {\r\n                viewportNode.parentNode.removeChild(viewportNode);\r\n            }\r\n        };\r\n        SVGPainter.prototype.toDataURL = function () {\r\n            this.refresh();\r\n            var html = encodeURIComponent(this._svgDom.outerHTML.replace(/></g, '>\\n\\r<'));\r\n            return 'data:image/svg+xml;charset=UTF-8,' + html;\r\n        };\r\n        return SVGPainter;\r\n    }());\r\n    function createMethodNotSupport(method) {\r\n        return function () {\r\n            logError('In SVG mode painter not support method \"' + method + '\"');\r\n        };\r\n    }\n\n    registerPainter('svg', SVGPainter);\n\n    exports.Axis = Axis;\n    exports.List = List;\n    exports.Model = Model;\n    exports.PRIORITY = PRIORITY;\n    exports.color = color;\n    exports.connect = connect;\n    exports.dataTool = dataTool;\n    exports.dependencies = dependencies;\n    exports.disConnect = disConnect;\n    exports.disconnect = disconnect;\n    exports.dispose = dispose$1;\n    exports.env = env;\n    exports.extendChartView = extendChartView;\n    exports.extendComponentModel = extendComponentModel;\n    exports.extendComponentView = extendComponentView;\n    exports.extendSeriesModel = extendSeriesModel;\n    exports.format = format$1;\n    exports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\n    exports.getInstanceByDom = getInstanceByDom;\n    exports.getInstanceById = getInstanceById;\n    exports.getMap = getMap;\n    exports.graphic = graphic$1;\n    exports.helper = helper;\n    exports.init = init$1;\n    exports.innerDrawElementOnCanvas = brushSingle;\n    exports.matrix = matrix;\n    exports.number = number;\n    exports.parseGeoJSON = parseGeoJSON;\n    exports.parseGeoJson = parseGeoJson;\n    exports.registerAction = registerAction;\n    exports.registerCoordinateSystem = registerCoordinateSystem;\n    exports.registerLayout = registerLayout;\n    exports.registerLoading = registerLoading;\n    exports.registerLocale = registerLocale;\n    exports.registerMap = registerMap;\n    exports.registerPostInit = registerPostInit;\n    exports.registerPostUpdate = registerPostUpdate;\n    exports.registerPreprocessor = registerPreprocessor;\n    exports.registerProcessor = registerProcessor;\n    exports.registerTheme = registerTheme;\n    exports.registerTransform = registerTransform;\n    exports.registerVisual = registerVisual;\n    exports.setCanvasCreator = setCanvasCreator;\n    exports.throttle = throttle;\n    exports.time = time;\n    exports.util = ecUtil;\n    exports.vector = vector;\n    exports.version = version$1;\n    exports.zrender = zrender;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n"]}