{"version":3,"sources":["unknown"],"names":["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","self","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","global","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","define","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":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar 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\nfunction __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\nvar __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\nfunction __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\nvar 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\nvar 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\nvar env = new Env();\r\nif (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\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\r\n    env.worker = true;\r\n    env.canvasSupported = true;\r\n}\r\nelse if (typeof navigator === 'undefined') {\r\n    env.node = true;\r\n    env.canvasSupported = true;\r\n    env.svgSupported = true;\r\n}\r\nelse {\r\n    detect(navigator.userAgent, env);\r\n}\r\nfunction 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\nvar 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\nvar 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\nvar objToString = Object.prototype.toString;\r\nvar arrayProto = Array.prototype;\r\nvar nativeForEach = arrayProto.forEach;\r\nvar nativeFilter = arrayProto.filter;\r\nvar nativeSlice = arrayProto.slice;\r\nvar nativeMap = arrayProto.map;\r\nvar ctorFunction = (function () { }).constructor;\r\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\r\nvar methods = {};\r\nfunction $override(name, fn) {\r\n    methods[name] = fn;\r\n}\r\nvar idStart = 0x0907;\r\nfunction guid() {\r\n    return idStart++;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar createCanvas = function () {\r\n    return methods.createCanvas();\r\n};\r\nmethods.createCanvas = function () {\r\n    return document.createElement('canvas');\r\n};\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar bind = (protoFunction && isFunction(protoFunction.bind))\r\n    ? protoFunction.call.bind(protoFunction.bind)\r\n    : bindPolyfill;\r\nfunction 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\nfunction 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\nfunction isFunction(value) {\r\n    return typeof value === 'function';\r\n}\r\nfunction isString(value) {\r\n    return typeof value === 'string';\r\n}\r\nfunction isStringSafe(value) {\r\n    return objToString.call(value) === '[object String]';\r\n}\r\nfunction isNumber(value) {\r\n    return typeof value === 'number';\r\n}\r\nfunction isObject(value) {\r\n    var type = typeof value;\r\n    return type === 'function' || (!!value && type === 'object');\r\n}\r\nfunction isBuiltInObject(value) {\r\n    return !!BUILTIN_OBJECT[objToString.call(value)];\r\n}\r\nfunction isTypedArray(value) {\r\n    return !!TYPED_ARRAY[objToString.call(value)];\r\n}\r\nfunction isDom(value) {\r\n    return typeof value === 'object'\r\n        && typeof value.nodeType === 'number'\r\n        && typeof value.ownerDocument === 'object';\r\n}\r\nfunction isGradientObject(value) {\r\n    return value.colorStops != null;\r\n}\r\nfunction isPatternObject(value) {\r\n    return value.image != null;\r\n}\r\nfunction isRegExp(value) {\r\n    return objToString.call(value) === '[object RegExp]';\r\n}\r\nfunction eqNaN(value) {\r\n    return value !== value;\r\n}\r\nfunction 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\nfunction retrieve2(value0, value1) {\r\n    return value0 != null\r\n        ? value0\r\n        : value1;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction assert(condition, message) {\r\n    if (!condition) {\r\n        throw new Error(message);\r\n    }\r\n}\r\nfunction 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\nvar primitiveKey = '__ec_primitive__';\r\nfunction setAsPrimitive(obj) {\r\n    obj[primitiveKey] = true;\r\n}\r\nfunction isPrimitive(obj) {\r\n    return obj[primitiveKey];\r\n}\r\nvar 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\nfunction createHashMap(obj) {\r\n    return new HashMap(obj);\r\n}\r\nfunction 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\nfunction 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\nfunction hasOwn(own, prop) {\r\n    return own.hasOwnProperty(prop);\r\n}\r\nfunction noop() { }\n\nvar 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\nfunction 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\nfunction copy(out, v) {\r\n    out[0] = v[0];\r\n    out[1] = v[1];\r\n    return out;\r\n}\r\nfunction clone$1(v) {\r\n    return [v[0], v[1]];\r\n}\r\nfunction set(out, a, b) {\r\n    out[0] = a;\r\n    out[1] = b;\r\n    return out;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction len(v) {\r\n    return Math.sqrt(lenSquare(v));\r\n}\r\nvar length = len;\r\nfunction lenSquare(v) {\r\n    return v[0] * v[0] + v[1] * v[1];\r\n}\r\nvar lengthSquare = lenSquare;\r\nfunction 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\nfunction 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\nfunction dot(v1, v2) {\r\n    return v1[0] * v2[0] + v1[1] * v2[1];\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar dist = distance;\r\nfunction 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\nvar distSquare = distanceSquare;\r\nfunction negate(out, v) {\r\n    out[0] = -v[0];\r\n    out[1] = -v[1];\r\n    return out;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar LN2 = Math.log(2);\r\nfunction 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\nfunction 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\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\r\nvar _calcOut = [];\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isCanvasEl(el) {\r\n    return el.nodeName.toUpperCase() === 'CANVAS';\r\n}\n\nvar isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\r\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\nvar _calcOut$1 = [];\r\nfunction 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\nfunction 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\nfunction getNativeEvent(e) {\r\n    return e\r\n        || window.event;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\r\n    return e.which === 2 || e.which === 3;\r\n}\n\nvar 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\nfunction 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\nfunction 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\nvar 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\nvar SILENT = 'silent';\r\nfunction 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\nfunction stopEvent() {\r\n    stop(this.event);\r\n}\r\nvar 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\nvar 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\nvar handlerNames = [\r\n    'click', 'dblclick', 'mousewheel', 'mouseout',\r\n    'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n];\r\nvar 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\neach(['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\nfunction 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\nfunction 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\nfunction create$1() {\r\n    return [1, 0, 0, 1, 0, 0];\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction clone$2(a) {\r\n    var b = create$1();\r\n    copy$1(b, a);\r\n    return b;\r\n}\n\nvar 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\nvar mIdentity = identity;\r\nvar EPSILON = 5e-5;\r\nfunction isNotAroundZero(val) {\r\n    return val > EPSILON || val < -EPSILON;\r\n}\r\nvar scaleTmp = [];\r\nvar tmpTransform = [];\r\nvar originTransform = create$1();\r\nvar abs = Math.abs;\r\nvar 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\nvar 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\nvar 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\nvar Entry = (function () {\r\n    function Entry(val) {\r\n        this.value = val;\r\n    }\r\n    return Entry;\r\n}());\r\nvar 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\nvar 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\nvar 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\nfunction clampCssByte(i) {\r\n    i = Math.round(i);\r\n    return i < 0 ? 0 : i > 255 ? 255 : i;\r\n}\r\nfunction clampCssAngle(i) {\r\n    i = Math.round(i);\r\n    return i < 0 ? 0 : i > 360 ? 360 : i;\r\n}\r\nfunction clampCssFloat(f) {\r\n    return f < 0 ? 0 : f > 1 ? 1 : f;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction lerpNumber(a, b, p) {\r\n    return a + (b - a) * p;\r\n}\r\nfunction 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\nfunction 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\nvar colorCache = new LRU(20);\r\nvar lastRemovedArr = null;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar fastMapToColor = fastLerp;\r\nfunction 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\nvar mapToColor = lerp$1;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar arraySlice = Array.prototype.slice;\r\nfunction interpolateNumber(p0, p1, percent) {\r\n    return (p1 - p0) * percent + p0;\r\n}\r\nfunction step(p0, p1, percent) {\r\n    return percent > 0.5 ? p1 : p0;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction guessArrayDim(value) {\r\n    return isArrayLike(value && value[0]) ? 2 : 1;\r\n}\r\nvar tmpRgba = [0, 0, 0, 0];\r\nvar 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\nvar 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\nvar 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\nvar mathMin = Math.min;\r\nvar mathMax = Math.max;\r\nvar lt = new Point();\r\nvar rb = new Point();\r\nvar lb = new Point();\r\nvar rt = new Point();\r\nvar minTv = new Point();\r\nvar maxTv = new Point();\r\nvar 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\nvar textWidthCache = {};\r\nvar DEFAULT_FONT = '12px sans-serif';\r\nvar _ctx;\r\nvar _cachedFont;\r\nfunction 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\nvar methods$1 = {\r\n    measureText: defaultMeasureText\r\n};\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getLineHeight(font) {\r\n    return getWidth('国', font);\r\n}\r\nfunction 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\nfunction 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\nvar dpr = 1;\r\nif (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\nvar devicePixelRatio = dpr;\r\nvar DARK_MODE_THRESHOLD = 0.4;\r\nvar DARK_LABEL_COLOR = '#333';\r\nvar LIGHT_LABEL_COLOR = '#ccc';\r\nvar LIGHTER_LABEL_COLOR = '#eee';\n\nvar PRESERVED_NORMAL_STATE = '__zr_normal__';\r\nvar PRIMARY_STATES_KEYS = ['x', 'y', 'scaleX', 'scaleY', 'originX', 'originY', 'rotation', 'ignore'];\r\nvar 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\nvar tmpTextPosCalcRes = {};\r\nvar tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\r\nvar 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\nmixin(Element, Eventful);\r\nmixin(Element, Transformable);\r\nfunction 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\nfunction copyArrShallow(source, target, len) {\r\n    for (var i = 0; i < len; i++) {\r\n        source[i] = target[i];\r\n    }\r\n}\r\nfunction is2DArray(value) {\r\n    return isArrayLike(value[0]);\r\n}\r\nfunction 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\nfunction 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\nvar DEFAULT_MIN_MERGE = 32;\r\nvar DEFAULT_MIN_GALLOPING = 7;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar invalidZErrorLogged = false;\r\nfunction 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\nfunction 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\nvar 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\nvar requestAnimationFrame;\r\nrequestAnimationFrame = (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\nvar requestAnimationFrame$1 = requestAnimationFrame;\n\nvar 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\nvar TOUCH_CLICK_DELAY = 300;\r\nvar globalEventSupported = env.domSupported;\r\nvar 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\nvar globalNativeListenerNames = {\r\n    mouse: ['mousemove', 'mouseup'],\r\n    pointer: ['pointermove', 'pointerup']\r\n};\r\nvar wheelEventSupported = false;\r\nfunction isPointerFromTouch(event) {\r\n    var pointerType = event.pointerType;\r\n    return pointerType === 'pen' || pointerType === 'touch';\r\n}\r\nfunction 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\nfunction markTouch(event) {\r\n    event && (event.zrByTouch = true);\r\n}\r\nfunction normalizeGlobalEvent(instance, event) {\r\n    return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\r\n}\r\nfunction 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\nvar 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\nvar 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\neach(['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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar 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\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\r\nvar 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\nvar 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\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\r\nvar PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible'];\r\nvar 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\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\r\nvar viewRect = new BoundingRect(0, 0, 0, 0);\r\nfunction 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\nvar mathPow = Math.pow;\r\nvar mathSqrt = Math.sqrt;\r\nvar EPSILON$1 = 1e-8;\r\nvar EPSILON_NUMERIC = 1e-4;\r\nvar THREE_SQRT = mathSqrt(3);\r\nvar ONE_THIRD = 1 / 3;\r\nvar _v0 = create();\r\nvar _v1 = create();\r\nvar _v2 = create();\r\nfunction isAroundZero(val) {\r\n    return val > -EPSILON$1 && val < EPSILON$1;\r\n}\r\nfunction isNotAroundZero$1(val) {\r\n    return val > EPSILON$1 || val < -EPSILON$1;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\r\n    return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar mathMin$1 = Math.min;\r\nvar mathMax$1 = Math.max;\r\nvar mathSin = Math.sin;\r\nvar mathCos = Math.cos;\r\nvar PI2 = Math.PI * 2;\r\nvar start = create();\r\nvar end = create();\r\nvar extremity = create();\r\nfunction 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\nfunction 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\nvar xDim = [];\r\nvar yDim = [];\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar tmpOutX = [];\r\nvar tmpOutY = [];\r\nvar min$1 = [];\r\nvar max$1 = [];\r\nvar min2 = [];\r\nvar max2 = [];\r\nvar mathMin$2 = Math.min;\r\nvar mathMax$2 = Math.max;\r\nvar mathCos$1 = Math.cos;\r\nvar mathSin$1 = Math.sin;\r\nvar mathSqrt$1 = Math.sqrt;\r\nvar mathAbs = Math.abs;\r\nvar PI = Math.PI;\r\nvar PI2$1 = PI * 2;\r\nvar hasTypedArray = typeof Float32Array !== 'undefined';\r\nvar tmpAngles = [];\r\nfunction modPI2(radian) {\r\n    var n = Math.round(radian / PI * 1e8) / 1e8;\r\n    return (n % 2) * PI;\r\n}\r\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar PI2$2 = Math.PI * 2;\r\nfunction 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\nvar PI2$3 = Math.PI * 2;\r\nfunction 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\nfunction 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\nvar CMD$1 = PathProxy.CMD;\r\nvar PI2$4 = Math.PI * 2;\r\nvar EPSILON$2 = 1e-4;\r\nfunction isAroundEqual(a, b) {\r\n    return Math.abs(a - b) < EPSILON$2;\r\n}\r\nvar roots = [-1, -1, -1];\r\nvar extrema = [-1, -1];\r\nfunction swapExtrema() {\r\n    var tmp = extrema[0];\r\n    extrema[0] = extrema[1];\r\n    extrema[1] = tmp;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction contain(pathProxy, x, y) {\r\n    return containPath(pathProxy, 0, false, x, y);\r\n}\r\nfunction containStroke$4(pathProxy, lineWidth, x, y) {\r\n    return containPath(pathProxy, lineWidth, true, x, y);\r\n}\n\nvar 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\nvar 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\nvar pathCopyParams = [\r\n    'x', 'y', 'rotation', 'scaleX', 'scaleY', 'originX', 'originY', 'invisible',\r\n    'culling', 'z', 'z2', 'zlevel', 'parent'\r\n];\r\nvar 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\nvar CMD$2 = PathProxy.CMD;\r\nvar points = [[], [], []];\r\nvar mathSqrt$2 = Math.sqrt;\r\nvar mathAtan2 = Math.atan2;\r\nfunction 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\nvar mathSqrt$3 = Math.sqrt;\r\nvar mathSin$2 = Math.sin;\r\nvar mathCos$2 = Math.cos;\r\nvar PI$1 = Math.PI;\r\nfunction vMag(v) {\r\n    return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n}\r\nfunction vRatio(u, v) {\r\n    return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n}\r\nfunction 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\nfunction 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\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\r\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\r\nfunction 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\nvar 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\nfunction isPathProxy(path) {\r\n    return path.setData != null;\r\n}\r\nfunction 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\nfunction createFromString(str, opts) {\r\n    return new SVGPath(createPathOptions(str, opts));\r\n}\r\nfunction 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\nfunction 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\nvar 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\nGroup.prototype.type = 'group';\n\nvar DEFAULT_IMAGE_STYLE = defaults({\r\n    x: 0,\r\n    y: 0\r\n}, DEFAULT_COMMON_STYLE);\r\nvar 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\nfunction isImageLike(source) {\r\n    return !!(source\r\n        && typeof source !== 'string'\r\n        && source.width && source.height);\r\n}\r\nvar 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\nZRImage.prototype.type = 'image';\n\nvar 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\nvar 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\nCircle.prototype.type = 'circle';\n\nfunction 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\nvar round = Math.round;\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar subPixelOptimizeOutputShape = {};\r\nvar 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\nRect.prototype.type = 'rect';\n\nvar 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\nvar 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\nEllipse.prototype.type = 'ellipse';\n\nvar subPixelOptimizeOutputShape$1 = {};\r\nvar 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\nvar 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\nLine.prototype.type = 'line';\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar 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\nPolygon.prototype.type = 'polygon';\n\nvar 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\nvar 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\nPolyline.prototype.type = 'polyline';\n\nvar 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\nvar 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\nvar 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\nvar 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\nTSpan.prototype.type = 'tspan';\n\nvar DILIMITER_REG = /[\\s,]+/;\r\nfunction 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\nvar nodeParsers;\r\nvar 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\nvar 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\nfunction _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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\r\nfunction 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\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\r\nfunction 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\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\r\nfunction 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\nfunction 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\nfunction parseSVG(xml, opt) {\r\n    var parser = new SVGParser();\r\n    return parser.parse(xml, opt);\r\n}\n\nvar PI$2 = Math.PI;\r\nvar PI2$5 = PI$2 * 2;\r\nvar mathSin$3 = Math.sin;\r\nvar mathCos$3 = Math.cos;\r\nvar mathACos = Math.acos;\r\nvar mathATan2 = Math.atan2;\r\nvar mathAbs$1 = Math.abs;\r\nvar mathSqrt$4 = Math.sqrt;\r\nvar mathMax$3 = Math.max;\r\nvar mathMin$3 = Math.min;\r\nvar e = 1e-4;\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar 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\nSector.prototype.type = 'sector';\n\nvar CMD$3 = PathProxy.CMD;\r\nvar PI2$6 = Math.PI * 2;\r\nvar PROP_XY = ['x', 'y'];\r\nvar PROP_WH = ['width', 'height'];\r\nvar tmpArr = [];\r\nfunction aroundEqual(a, b) {\r\n    return Math.abs(a - b) < 1e-5;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction updateIndividualMorphingPath(morphingPath, morphingData, morphT) {\r\n    morphingPath.__morphingData = morphingData;\r\n    morphingPath.__morphT = morphT;\r\n}\r\nfunction 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\nfunction isIndividualMorphingPath(path) {\r\n    return path.__oldBuildPath != null;\r\n}\r\nfunction isCombiningPath(path) {\r\n    return !!path.__combiningSubList;\r\n}\r\nfunction isInAnyMorphing(path) {\r\n    return isIndividualMorphingPath(path) || isCombiningPath(path);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction combiningAddSelfToZr(zr) {\r\n    this.__oldAddSelfToZr(zr);\r\n    combiningPathSubListAddRemoveWithZr(this, 'addSelfToZr');\r\n}\r\nfunction 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\nfunction 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\nfunction combiningChildrenRef() {\r\n    return this.__combiningSubList;\r\n}\r\nfunction 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\nfunction divideShape(path, separateCount, dividingMethod) {\r\n    return dividingMethod === 'duplicate'\r\n        ? duplicateShape(path, separateCount)\r\n        : splitShape(path, separateCount);\r\n}\r\nfunction 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\nfunction 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\nfunction normalizeRadian$1(start, end, clockwise) {\r\n    return end + PI2$6 * (Math[clockwise ? 'ceil' : 'floor']((start - end) / PI2$6));\r\n}\n\nvar 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\nvar m = [];\r\nvar 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\nvar globalImageCache = new LRU(50);\r\nfunction 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\nfunction 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\nfunction 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\nfunction isImageReady(image) {\r\n    return image && image.width && image.height;\r\n}\n\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar RichTextToken = (function () {\r\n    function RichTextToken() {\r\n    }\r\n    return RichTextToken;\r\n}());\r\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction isLatin(ch) {\r\n    var code = ch.charCodeAt(0);\r\n    return code >= 0x21 && code <= 0xFF;\r\n}\r\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\r\n    obj[ch] = true;\r\n    return obj;\r\n}, {});\r\nfunction 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\nfunction 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\nfunction 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\nvar DEFAULT_RICH_TEXT_COLOR = {\r\n    fill: '#000'\r\n};\r\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\r\nvar 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\nvar 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\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\r\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\r\nfunction normalizeTextStyle(style) {\r\n    normalizeStyle(style);\r\n    each(style.rich, normalizeStyle);\r\n    return style;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getStyleText(style) {\r\n    var text = style.text;\r\n    text != null && (text += '');\r\n    return text;\r\n}\r\nfunction needDrawBackground(style) {\r\n    return !!(style.backgroundColor\r\n        || (style.borderWidth && style.borderColor));\r\n}\n\nvar 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\nvar 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\nArc.prototype.type = 'arc';\n\nvar out = [];\r\nvar 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\nfunction 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\nvar 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\nBezierCurve.prototype.type = 'bezier-curve';\n\nvar 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\nvar 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\nDroplet.prototype.type = 'droplet';\n\nvar 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\nvar 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\nHeart.prototype.type = 'heart';\n\nvar PI$3 = Math.PI;\r\nvar sin = Math.sin;\r\nvar cos = Math.cos;\r\nvar 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\nvar 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\nIsogon.prototype.type = 'isogon';\n\nvar 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\nvar 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\nRing.prototype.type = 'ring';\n\nvar sin$1 = Math.sin;\r\nvar cos$1 = Math.cos;\r\nvar radian = Math.PI / 180;\r\nvar 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\nvar 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\nRose.prototype.type = 'rose';\n\nvar PI$4 = Math.PI;\r\nvar cos$2 = Math.cos;\r\nvar sin$2 = Math.sin;\r\nvar 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\nvar 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\nStar.prototype.type = 'star';\n\nvar cos$3 = Math.cos;\r\nvar sin$3 = Math.sin;\r\nvar 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\nvar 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\nTrochoid.prototype.type = 'trochoid';\n\nvar 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\nvar extent = [0, 0];\r\nvar extent2 = [0, 0];\r\nvar minTv$1 = new Point();\r\nvar maxTv$1 = new Point();\r\nvar 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\nvar useVML = !env.canvasSupported;\r\nvar painterCtors = {};\r\nvar instances = {};\r\nfunction delInstance(id) {\r\n    delete instances[id];\r\n}\r\nfunction 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\nvar 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\nfunction 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\nfunction dispose(zr) {\r\n    zr.dispose();\r\n}\r\nfunction 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\nfunction getInstance(id) {\r\n    return instances[id];\r\n}\r\nfunction registerPainter(name, Ctor) {\r\n    painterCtors[name] = Ctor;\r\n}\r\nvar version = '5.0.1';\n\nvar 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\nvar RADIAN_EPSILON = 1e-4;\r\nfunction _trim(str) {\r\n    return str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction asc(arr) {\r\n    arr.sort(function (a, b) {\r\n        return a - b;\r\n    });\r\n    return arr;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar MAX_SAFE_INTEGER = 9007199254740991;\r\nfunction remRadian(radian) {\r\n    var pi2 = Math.PI * 2;\r\n    return (radian % pi2 + pi2) % pi2;\r\n}\r\nfunction isRadianAroundZero(val) {\r\n    return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\r\n}\r\nvar 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\nfunction 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\nfunction quantity(val) {\r\n    return Math.pow(10, quantityExponent(val));\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isNumeric(val) {\r\n    return !isNaN(numericToNumber(val));\r\n}\r\nfunction getRandomIdBase() {\r\n    return Math.round(Math.random() * 9);\r\n}\r\nfunction getGreatestCommonDividor(a, b) {\r\n    if (b === 0) {\r\n        return a;\r\n    }\r\n    return getGreatestCommonDividor(b, a % b);\r\n}\r\nfunction 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\nvar 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\nvar ECHARTS_PREFIX = '[ECharts] ';\r\nvar storedLogs = {};\r\nvar hasConsole = typeof console !== 'undefined'\r\n    && console.warn && console.log;\r\nfunction warn(str) {\r\n    if (hasConsole) {\r\n        console.warn(ECHARTS_PREFIX + str);\r\n    }\r\n}\r\nfunction error(str) {\r\n    if (hasConsole) {\r\n        console.error(ECHARTS_PREFIX + str);\r\n    }\r\n}\r\nfunction 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\nfunction deprecateReplaceLog(oldOpt, newOpt, scope) {\r\n    if (__DEV__) {\r\n        deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\r\n    }\r\n}\r\nfunction 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\nfunction 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\nfunction throwError(msg) {\r\n    throw new Error(msg);\r\n}\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\r\nvar INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\r\nfunction normalizeToArray(value) {\r\n    return value instanceof Array\r\n        ? value\r\n        : value == null\r\n            ? []\r\n            : [value];\r\n}\r\nfunction 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\nvar 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\nfunction getDataItemValue(dataItem) {\r\n    return (isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date))\r\n        ? dataItem.value : dataItem;\r\n}\r\nfunction isDataItemOption(dataItem) {\r\n    return isObject(dataItem)\r\n        && !(dataItem instanceof Array);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isValidIdOrName(idOrName) {\r\n    return isStringSafe(idOrName) || isNumeric(idOrName);\r\n}\r\nfunction isNameSpecified(componentModel) {\r\n    var name = componentModel.name;\r\n    return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\r\n}\r\nfunction 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\nfunction makeInternalComponentId(idSuffix) {\r\n    return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar innerUniqueIndex = getRandomIdBase();\r\nfunction 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\nvar SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false };\r\nvar MULTIPLE_REFERRING = { useDefault: false, enableAll: true, enableNone: true };\r\nfunction 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\nfunction setAttribute(dom, key, value) {\r\n    dom.setAttribute\r\n        ? dom.setAttribute(key, value)\r\n        : (dom[key] = value);\r\n}\r\nfunction getAttribute(dom, key) {\r\n    return dom.getAttribute\r\n        ? dom.getAttribute(key)\r\n        : dom[key];\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar TYPE_DELIMITER = '.';\r\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\r\nvar IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\r\nfunction 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\nfunction checkClassType(componentType) {\r\n    assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\r\n}\r\nfunction isExtendedClass(clz) {\r\n    return !!(clz && clz[IS_EXTENDED_CLASS]);\r\n}\r\nfunction 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\nfunction isESClass(fn) {\r\n    return typeof fn === 'function'\r\n        && /^class\\s/.test(Function.prototype.toString.call(fn));\r\n}\r\nfunction mountExtend(SubClz, SupperClz) {\r\n    SubClz.extend = SupperClz.extend;\r\n}\r\nvar classBase = Math.round(Math.random() * 10);\r\nfunction 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\nfunction 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\nfunction superApply(context, methodName, args) {\r\n    return this.superClass.prototype[methodName].apply(context, args);\r\n}\r\nfunction 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\nfunction 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\nvar 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\nvar getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\r\nvar 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\nvar getECData = makeInner();\n\nvar _highlightNextDigit = 1;\r\nvar _highlightKeyMap = {};\r\nvar getSavedStates = makeInner();\r\nvar HOVER_STATE_NORMAL = 0;\r\nvar HOVER_STATE_BLUR = 1;\r\nvar HOVER_STATE_EMPHASIS = 2;\r\nvar SPECIAL_STATES = ['emphasis', 'blur', 'select'];\r\nvar DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\r\nvar Z2_EMPHASIS_LIFT = 10;\r\nvar Z2_SELECT_LIFT = 9;\r\nvar HIGHLIGHT_ACTION_TYPE = 'highlight';\r\nvar DOWNPLAY_ACTION_TYPE = 'downplay';\r\nvar SELECT_ACTION_TYPE = 'select';\r\nvar UNSELECT_ACTION_TYPE = 'unselect';\r\nvar TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\r\nfunction hasFillOrStroke(fillOrStroke) {\r\n    return fillOrStroke != null && fillOrStroke !== 'none';\r\n}\r\nvar liftedColorCache = new LRU(100);\r\nfunction 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\nfunction 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\nfunction singleEnterEmphasis(el) {\r\n    doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\r\n}\r\nfunction singleLeaveEmphasis(el) {\r\n    if (el.hoverState === HOVER_STATE_EMPHASIS) {\r\n        doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n    }\r\n}\r\nfunction singleEnterBlur(el) {\r\n    doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\r\n}\r\nfunction singleLeaveBlur(el) {\r\n    if (el.hoverState === HOVER_STATE_BLUR) {\r\n        doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n    }\r\n}\r\nfunction singleEnterSelect(el) {\r\n    el.selected = true;\r\n}\r\nfunction singleLeaveSelect(el) {\r\n    el.selected = false;\r\n}\r\nfunction updateElementState(el, updater, commonParam) {\r\n    updater(el, commonParam);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction enterEmphasisWhenMouseOver(el, e) {\r\n    !shouldSilent(el, e)\r\n        && !el.__highByOuter\r\n        && traverseUpdateState(el, singleEnterEmphasis);\r\n}\r\nfunction leaveEmphasisWhenMouseOut(el, e) {\r\n    !shouldSilent(el, e)\r\n        && !el.__highByOuter\r\n        && traverseUpdateState(el, singleLeaveEmphasis);\r\n}\r\nfunction enterEmphasis(el, highlightDigit) {\r\n    el.__highByOuter |= 1 << (highlightDigit || 0);\r\n    traverseUpdateState(el, singleEnterEmphasis);\r\n}\r\nfunction leaveEmphasis(el, highlightDigit) {\r\n    !(el.__highByOuter &= ~(1 << (highlightDigit || 0)))\r\n        && traverseUpdateState(el, singleLeaveEmphasis);\r\n}\r\nfunction enterBlur(el) {\r\n    traverseUpdateState(el, singleEnterBlur);\r\n}\r\nfunction leaveBlur(el) {\r\n    traverseUpdateState(el, singleLeaveBlur);\r\n}\r\nfunction enterSelect(el) {\r\n    traverseUpdateState(el, singleEnterSelect);\r\n}\r\nfunction leaveSelect(el) {\r\n    traverseUpdateState(el, singleLeaveSelect);\r\n}\r\nfunction shouldSilent(el, e) {\r\n    return el.__highDownSilentOnTouch && e.zrByTouch;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction enableHoverEmphasis(el, focus, blurScope) {\r\n    setAsHighDownDispatcher(el, true);\r\n    traverseUpdateState(el, setDefaultStateProxy);\r\n    enableHoverFocus(el, focus, blurScope);\r\n}\r\nfunction 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\nvar OTHER_STATES = ['emphasis', 'blur', 'select'];\r\nvar defaultStyleGetterMap = {\r\n    itemStyle: 'getItemStyle',\r\n    lineStyle: 'getLineStyle',\r\n    areaStyle: 'getAreaStyle'\r\n};\r\nfunction 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\nfunction 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\nfunction isHighDownDispatcher(el) {\r\n    return !!(el && el.__highDownDispatcher);\r\n}\r\nfunction 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\nfunction 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\nfunction isHighDownPayload(payload) {\r\n    var payloadType = payload.type;\r\n    return payloadType === HIGHLIGHT_ACTION_TYPE\r\n        || payloadType === DOWNPLAY_ACTION_TYPE;\r\n}\r\nfunction 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\nvar mathMax$4 = Math.max;\r\nvar mathMin$4 = Math.min;\r\nvar _customShapeMap = {};\r\nfunction extendShape(opts) {\r\n    return Path.extend(opts);\r\n}\r\nvar extendPathFromString = extendFromString;\r\nfunction extendPath(pathData, opts) {\r\n    return extendPathFromString(pathData, opts);\r\n}\r\nfunction registerShape(name, ShapeClass) {\r\n    _customShapeMap[name] = ShapeClass;\r\n}\r\nfunction getShapeClass(name) {\r\n    if (_customShapeMap.hasOwnProperty(name)) {\r\n        return _customShapeMap[name];\r\n    }\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar mergePath$1 = mergePath;\r\nfunction 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\nfunction subPixelOptimizeLine$1(param) {\r\n    subPixelOptimizeLine(param.shape, param.shape, param.style);\r\n    return param;\r\n}\r\nfunction subPixelOptimizeRect$1(param) {\r\n    subPixelOptimizeRect(param.shape, param.shape, param.style);\r\n    return param;\r\n}\r\nvar subPixelOptimize$1 = subPixelOptimize;\r\nfunction 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\nfunction updateProps(el, props, animatableModel, dataIndex, cb, during) {\r\n    animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\r\n}\r\nfunction initProps(el, props, animatableModel, dataIndex, cb, during) {\r\n    animateOrSetProps('init', el, props, animatableModel, dataIndex, cb, during);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isNotGroup(el) {\r\n    return !el.isGroup;\r\n}\r\nfunction isPath(el) {\r\n    return el.shape != null;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction crossProduct2d(x1, y1, x2, y2) {\r\n    return x1 * y2 - x2 * y1;\r\n}\r\nfunction nearZero(val) {\r\n    return val <= (1e-6) && val >= -(1e-6);\r\n}\r\nregisterShape('circle', Circle);\r\nregisterShape('ellipse', Ellipse);\r\nregisterShape('sector', Sector);\r\nregisterShape('ring', Ring);\r\nregisterShape('polygon', Polygon);\r\nregisterShape('polyline', Polyline);\r\nregisterShape('rect', Rect);\r\nregisterShape('line', Line);\r\nregisterShape('bezierCurve', BezierCurve);\r\nregisterShape('arc', Arc);\n\nvar 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\nvar EMPTY_OBJ = {};\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar TEXT_PROPS_WITH_GLOBAL = [\r\n    'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n    'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'\r\n];\r\nvar TEXT_PROPS_SELF = [\r\n    'align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'\r\n];\r\nvar TEXT_PROPS_BOX = [\r\n    'padding', 'borderWidth', 'borderRadius', 'borderDashOffset',\r\n    'backgroundColor', 'borderColor',\r\n    'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n];\r\nfunction 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\nfunction 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\nvar labelInner = makeInner();\r\nfunction 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\nfunction 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\nvar PATH_COLOR = ['textStyle', 'color'];\r\nvar tmpRichText = new ZRText();\r\nvar 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\nvar 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\nvar getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\r\nvar 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\nvar 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\nvar getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\r\nvar 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\nvar 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\nenableClassExtend(Model);\r\nenableClassCheck(Model);\r\nmixin(Model, LineStyleMixin);\r\nmixin(Model, ItemStyleMixin);\r\nmixin(Model, AreaStyleMixin);\r\nmixin(Model, TextStyleMixin);\n\nvar base = Math.round(Math.random() * 10);\r\nfunction getUID(type) {\r\n    return [(type || ''), base++].join('_');\r\n}\r\nfunction 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\nfunction 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\nfunction inheritDefaultOption(superOption, subOption) {\r\n    return merge(merge({}, superOption, true), subOption, true);\r\n}\n\nvar 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\nvar 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\nvar LOCALE_ZH = 'ZH';\r\nvar LOCALE_EN = 'EN';\r\nvar DEFAULT_LOCALE = LOCALE_EN;\r\nvar localeStorage = {};\r\nvar localeModels = {};\r\nvar 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\nfunction registerLocale(locale, localeObj) {\r\n    locale = locale.toUpperCase();\r\n    localeModels[locale] = new Model(localeObj);\r\n    localeStorage[locale] = localeObj;\r\n}\r\nfunction 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\nfunction getLocaleModel(lang) {\r\n    return localeModels[lang];\r\n}\r\nfunction getDefaultLocaleModel() {\r\n    return localeModels[DEFAULT_LOCALE];\r\n}\r\nregisterLocale(LOCALE_EN, langEN);\r\nregisterLocale(LOCALE_ZH, langZH);\n\nvar ONE_SECOND = 1000;\r\nvar ONE_MINUTE = ONE_SECOND * 60;\r\nvar ONE_HOUR = ONE_MINUTE * 60;\r\nvar ONE_DAY = ONE_HOUR * 24;\r\nvar ONE_YEAR = ONE_DAY * 365;\r\nvar 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\nvar fullDayFormatter = '{yyyy}-{MM}-{dd}';\r\nvar 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\nvar primaryTimeUnits = [\r\n    'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\r\n];\r\nvar 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\nfunction pad(str, len) {\r\n    str += '';\r\n    return '0000'.substr(0, len - str.length) + str;\r\n}\r\nfunction 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\nfunction isPrimaryTimeUnit(timeUnit) {\r\n    return timeUnit === getPrimaryTimeUnit(timeUnit);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction fullYearGetterName(isUTC) {\r\n    return isUTC ? 'getUTCFullYear' : 'getFullYear';\r\n}\r\nfunction monthGetterName(isUTC) {\r\n    return isUTC ? 'getUTCMonth' : 'getMonth';\r\n}\r\nfunction dateGetterName(isUTC) {\r\n    return isUTC ? 'getUTCDate' : 'getDate';\r\n}\r\nfunction hoursGetterName(isUTC) {\r\n    return isUTC ? 'getUTCHours' : 'getHours';\r\n}\r\nfunction minutesGetterName(isUTC) {\r\n    return isUTC ? 'getUTCMinutes' : 'getMinutes';\r\n}\r\nfunction secondsGetterName(isUTC) {\r\n    return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n}\r\nfunction millisecondsGetterName(isUTC) {\r\n    return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n}\r\nfunction fullYearSetterName(isUTC) {\r\n    return isUTC ? 'setUTCFullYear' : 'setFullYear';\r\n}\r\nfunction monthSetterName(isUTC) {\r\n    return isUTC ? 'setUTCMonth' : 'setMonth';\r\n}\r\nfunction dateSetterName(isUTC) {\r\n    return isUTC ? 'setUTCDate' : 'setDate';\r\n}\r\nfunction hoursSetterName(isUTC) {\r\n    return isUTC ? 'setUTCHours' : 'setHours';\r\n}\r\nfunction minutesSetterName(isUTC) {\r\n    return isUTC ? 'setUTCMinutes' : 'setMinutes';\r\n}\r\nfunction secondsSetterName(isUTC) {\r\n    return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n}\r\nfunction millisecondsSetterName(isUTC) {\r\n    return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n}\n\nfunction 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\nfunction 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\nfunction 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\nvar normalizeCssArray$1 = normalizeCssArray;\r\nvar replaceReg = /([&<>\"'])/g;\r\nvar replaceMap = {\r\n    '&': '&amp;',\r\n    '<': '&lt;',\r\n    '>': '&gt;',\r\n    '\"': '&quot;',\r\n    '\\'': '&#39;'\r\n};\r\nfunction 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\nfunction 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\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\nvar wrapVar = function (varName, seriesIdx) {\r\n    return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\r\n};\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction capitalFirst(str) {\r\n    return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\r\n}\r\nfunction 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\nfunction 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\nvar 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\nvar each$1 = each;\r\nvar LOCATION_PARAMS = [\r\n    'left', 'right', 'top', 'bottom', 'width', 'height'\r\n];\r\nvar HV_NAMES = [\r\n    ['width', 'left', 'right'],\r\n    ['height', 'top', 'bottom']\r\n];\r\nfunction 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\nvar box = boxLayout;\r\nvar vbox = curry(boxLayout, 'vertical');\r\nvar hbox = curry(boxLayout, 'horizontal');\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getLayoutParams(source) {\r\n    return copyLayoutParams({}, source);\r\n}\r\nfunction 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\nvar inner = makeInner();\r\nvar 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\nmountExtend(ComponentModel, Model);\r\nenableClassManagement(ComponentModel, { registerWhenExtend: true });\r\nenableSubTypeDefaulter(ComponentModel);\r\nenableTopologicalTravel(ComponentModel, getDependencies);\r\nfunction 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\nvar platform = '';\r\nif (typeof navigator !== 'undefined') {\r\n    platform = navigator.platform || '';\r\n}\r\nvar decalColor = 'rgba(0, 0, 0, 0.2)';\r\nvar 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\nvar VISUAL_DIMENSIONS = createHashMap([\r\n    'tooltip', 'label', 'itemName', 'itemId', 'seriesName'\r\n]);\r\nvar SOURCE_FORMAT_ORIGINAL = 'original';\r\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\r\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\r\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\r\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\r\nvar SOURCE_FORMAT_UNKNOWN = 'unknown';\r\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\r\nvar SERIES_LAYOUT_BY_ROW = 'row';\n\nvar BE_ORDINAL = {\r\n    Must: 1,\r\n    Might: 2,\r\n    Not: 3\r\n};\r\nvar innerGlobalModel = makeInner();\r\nfunction resetSourceDefaulter(ecModel) {\r\n    innerGlobalModel(ecModel).datasetMap = createHashMap();\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction guessOrdinal(source, dimIndex) {\r\n    return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\r\n}\r\nfunction 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\nvar internalOptionCreatorMap = createHashMap();\r\nfunction registerInternalOptionCreator(mainType, creator) {\r\n    assert(internalOptionCreatorMap.get(mainType) == null && creator);\r\n    internalOptionCreatorMap.set(mainType, creator);\r\n}\r\nfunction 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\nvar innerColor = makeInner();\r\nvar innerDecal = makeInner();\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction clearPalette(that, inner) {\r\n    inner(that).paletteIdx = 0;\r\n    inner(that).paletteNameMap = {};\r\n}\n\nvar reCreateSeriesIndices;\r\nvar assertSeriesInitialized;\r\nvar initBase;\r\nvar OPTION_INNER_KEY = '\\0_ec_inner';\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nmixin(GlobalModel, PaletteMixin);\n\nvar 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\nvar 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\nvar coordinateSystemCreators = {};\r\nvar 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\nvar QUERY_REG = /^(min|max)?(.+)$/;\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction indicesEquals(indices1, indices2) {\r\n    return indices1.join(',') === indices2.join(',');\r\n}\n\nvar each$2 = each;\r\nvar isObject$1 = isObject;\r\nvar POSSIBLE_STYLES = [\r\n    'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',\r\n    'chordStyle', 'label', 'labelLine'\r\n];\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction toArr(o) {\r\n    return isArray(o) ? o : o ? [o] : [];\r\n}\r\nfunction toObj(o) {\r\n    return (isArray(o) ? o[0] : o) || {};\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar LAYOUT_PROPERTIES = [\r\n    ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']\r\n];\r\nvar COMPATITABLE_COMPONENTS = [\r\n    'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'\r\n];\r\nvar BAR_ITEM_STYLE_MAP = [\r\n    ['borderRadius', 'barBorderRadius'],\r\n    ['borderColor', 'barBorderColor'],\r\n    ['borderWidth', 'barBorderWidth']\r\n];\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction isSourceInstance(val) {\r\n    return val instanceof SourceImpl;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction makeEncodeDefine(encodeDefine) {\r\n    return encodeDefine\r\n        ? createHashMap(encodeDefine)\r\n        : null;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar _a, _b, _c;\r\nvar providerMethods;\r\nvar mountMethods;\r\nvar 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\nvar getItemSimply = function (rawData, startIndex, dimsDef, idx) {\r\n    return rawData[idx];\r\n};\r\nvar 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\nfunction 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\nvar countSimply = function (rawData, startIndex, dimsDef) {\r\n    return rawData.length;\r\n};\r\nvar 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\nfunction 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\nvar getRawValueSimply = function (dataItem, dimIndex, dimName) {\r\n    return dimIndex != null ? dataItem[dimIndex] : dataItem;\r\n};\r\nvar 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\nfunction 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\nfunction getMethodMapKey(sourceFormat, seriesLayoutBy) {\r\n    return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n        ? sourceFormat + '_' + seriesLayoutBy\r\n        : sourceFormat;\r\n}\r\nfunction 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\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\r\nvar 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\nfunction 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\nfunction createTask(define) {\r\n    return new Task(define);\r\n}\r\nvar 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\nvar 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\nfunction 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\nvar 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\nfunction getRawValueParser(type) {\r\n    return valueParserMap.get(type);\r\n}\r\nvar 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\nvar 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\nvar 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\nvar 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction cloneAllDimensionInfo(dimensions) {\r\n    return clone(dimensions);\r\n}\r\nvar externalTransformMap = createHashMap();\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction disableTransformOptionMerge(datasetModel) {\r\n    var transformOption = datasetModel.option.transform;\r\n    transformOption && setAsPrimitive(datasetModel.option.transform);\r\n}\r\nfunction isSeries(sourceHost) {\r\n    return sourceHost.mainType === 'series';\r\n}\r\nfunction doThrow(errMsg) {\r\n    throw new Error(errMsg);\r\n}\n\nvar TOOLTIP_NAME_TEXT_STYLE_CSS = 'font-size:12px;color:#6e7079';\r\nvar TOOLTIP_TEXT_STYLE_RICH = {\r\n    fontSize: 12,\r\n    fill: '#6e7079'\r\n};\r\nvar TOOLTIP_VALUE_TEXT_STYLE_CSS = 'font-size:14px;color:#464646;font-weight:900';\r\nvar TOOLTIP_VALUE_TEXT_STYLE_RICH = {\r\n    fontSize: 14,\r\n    fill: '#464646',\r\n    fontWeight: 900\r\n};\r\nvar TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1';\r\nvar HTML_GAPS = [0, 10, 20, 30];\r\nvar RICH_TEXT_GAPS = ['', '\\n', '\\n\\n', '\\n\\n\\n'];\r\nfunction createTooltipMarkup(type, option) {\r\n    option.type = type;\r\n    return option;\r\n}\r\nfunction getBuilder(fragment) {\r\n    return hasOwn(builderMap, fragment.type) && builderMap[fragment.type];\r\n}\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction wrapInlineNameRichText(ctx, name) {\r\n    return ctx.markupStyleCreator.wrapRichTextStyle(name, TOOLTIP_TEXT_STYLE_RICH);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nvar inner$1 = makeInner();\r\nfunction getSelectionKey(data, dataIndex) {\r\n    return data.getName(dataIndex) || data.getId(dataIndex);\r\n}\r\nvar 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\nmixin(SeriesModel, DataFormatMixin);\r\nmixin(SeriesModel, PaletteMixin);\r\nmountExtend(SeriesModel, ComponentModel);\r\nfunction 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\nfunction 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\nfunction dataTaskCount(context) {\r\n    return context.model.getRawData().count();\r\n}\r\nfunction dataTaskReset(context) {\r\n    var seriesModel = context.model;\r\n    seriesModel.setData(seriesModel.getRawData().cloneShallow());\r\n    return dataTaskProgress;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nenableClassExtend(ComponentView);\r\nenableClassManagement(ComponentView, { registerWhenExtend: true });\n\nfunction 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\nvar inner$2 = makeInner();\r\nvar renderPlanner = createRenderPlanner();\r\nvar 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\nfunction elSetState(el, state, highlightDigit) {\r\n    if (el) {\r\n        (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\r\n    }\r\n}\r\nfunction 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\nenableClassExtend(ChartView, ['dispose']);\r\nenableClassManagement(ChartView, { registerWhenExtend: true });\r\nfunction renderTaskPlan(context) {\r\n    return renderPlanner(context.model);\r\n}\r\nfunction 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\nvar 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\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\r\nvar RATE = '\\0__throttleRate';\r\nvar THROTTLE_TYPE = '\\0__throttleType';\r\nfunction 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\nfunction 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\nfunction 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\nvar inner$3 = makeInner();\r\nvar defaultStyleMappers = {\r\n    itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\r\n    lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\r\n};\r\nvar defaultColorKey = {\r\n    lineStyle: 'stroke',\r\n    itemStyle: 'fill'\r\n};\r\nfunction 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\nfunction 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\nvar 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\nvar sharedModel = new Model();\r\nvar 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\nvar 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\nvar PI$5 = Math.PI;\r\nfunction 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\nvar 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\nfunction overallTaskReset(context) {\r\n    context.overallReset(context.ecModel, context.api, context.payload);\r\n}\r\nfunction stubReset(context) {\r\n    return context.overallProgress && stubProgress;\r\n}\r\nfunction stubProgress() {\r\n    this.agent.dirty();\r\n    this.getDownstream().dirty();\r\n}\r\nfunction stubOnDirty() {\r\n    this.agent && this.agent.dirty();\r\n}\r\nfunction seriesTaskPlan(context) {\r\n    return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\r\n}\r\nfunction 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\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\r\nfunction 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\nfunction seriesTaskCount(context) {\r\n    return context.data.count();\r\n}\r\nfunction 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\nvar ecModelMock = {};\r\nvar apiMock = {};\r\nvar seriesType;\r\nmockMethods(ecModelMock, GlobalModel);\r\nmockMethods(apiMock, ExtensionAPI);\r\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\r\n    seriesType = type;\r\n};\r\necModelMock.eachComponent = function (cond) {\r\n    if (cond.mainType === 'series' && cond.subType) {\r\n        seriesType = cond.subType;\r\n    }\r\n};\r\nfunction mockMethods(target, Clz) {\r\n    for (var name_1 in Clz.prototype) {\r\n        target[name_1] = noop;\r\n    }\r\n}\n\nvar colorAll = [\r\n    '#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f',\r\n    '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'\r\n];\r\nvar 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\nvar contrastColor = '#B9B8CE';\r\nvar backgroundColor = '#100C2A';\r\nvar 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\nvar 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\nvar 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\ntheme.categoryAxis.splitLine.show = false;\n\nvar 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\nComponentModel.registerClass(DatasetModel);\r\nvar 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\nComponentView.registerClass(DatasetView);\n\nvar storage = createHashMap();\r\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar PI2$7 = Math.PI * 2;\r\nvar CMD$4 = PathProxy.CMD;\r\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar tmpPt = [];\r\nfunction 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\nfunction 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\nvar pt0 = new Point();\r\nvar pt1 = new Point();\r\nvar pt2 = new Point();\r\nvar dir = new Point();\r\nvar dir2 = new Point();\r\nfunction 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\nvar tmpArr$1 = [];\r\nvar tmpProjPoint = new Point();\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {\r\n    return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\r\n}\r\nfunction shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {\r\n    return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\r\nvar dummyTransformable = new Transformable();\r\nvar labelLayoutInnerStore = makeInner();\r\nvar labelLineAnimationStore = makeInner();\r\nfunction 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\nvar LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar pathProxyForDraw = new PathProxy(true);\r\nfunction styleHasStroke(style) {\r\n    var stroke = style.stroke;\r\n    return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n}\r\nfunction styleHasFill(style) {\r\n    var fill = style.fill;\r\n    return fill != null && fill !== 'none';\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\nvar STROKE_PROPS = [\r\n    ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n];\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar DRAW_TYPE_PATH = 1;\r\nvar DRAW_TYPE_IMAGE = 2;\r\nvar DRAW_TYPE_TEXT = 3;\r\nvar DRAW_TYPE_INCREMENTAL = 4;\r\nfunction 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\nfunction 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\nfunction getStyle(el, inHover) {\r\n    return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n}\r\nfunction brushSingle(ctx, el) {\r\n    brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\r\n}\r\nfunction 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\nfunction 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\nfunction returnFalse() {\r\n    return false;\r\n}\r\nfunction 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\nvar 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\nvar HOVER_LAYER_ZLEVEL = 1e5;\r\nvar CANVAS_ZLEVEL = 314159;\r\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\r\nvar INCREMENTAL_INC = 0.001;\r\nfunction parseInt10(val) {\r\n    return parseInt(val, 10);\r\n}\r\nfunction 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\nfunction 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\nvar 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\nregisterPainter('canvas', CanvasPainter);\n\nfunction 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\nvar wmUniqueIndex = Math.round(Math.random() * 9);\r\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar symbolBuildProxies = {};\r\neach(symbolCtors, function (Ctor, name) {\r\n    symbolBuildProxies[name] = new Ctor();\r\n});\r\nvar 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\nfunction 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\nfunction 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\nvar decalMap = new WeakMap();\r\nvar decalCache = new LRU(100);\r\nvar decalKeys = [\r\n    'symbol', 'symbolSize', 'symbolKeepAspect',\r\n    'color', 'backgroundColor',\r\n    'dashArrayX', 'dashArrayY', 'dashLineOffset',\r\n    'maxTileWidth', 'maxTileHeight'\r\n];\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getLineBlockLengthX(dash) {\r\n    return map(dash, function (line) {\r\n        return getLineBlockLengthY(line);\r\n    });\r\n}\r\nfunction 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\nfunction 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\nvar assert$1 = assert;\r\nvar each$3 = each;\r\nvar isFunction$1 = isFunction;\r\nvar isObject$2 = isObject;\r\nvar version$1 = '5.0.0';\r\nvar dependencies = {\r\n    zrender: '5.0.1'\r\n};\r\nvar TEST_FRAME_REMAIN_TIME = 1;\r\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\r\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\r\nvar PRIORITY_PROCESSOR_FILTER = 1000;\r\nvar PRIORITY_PROCESSOR_DEFAULT = 2000;\r\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\r\nvar PRIORITY_VISUAL_LAYOUT = 1000;\r\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\r\nvar PRIORITY_VISUAL_GLOBAL = 2000;\r\nvar PRIORITY_VISUAL_CHART = 3000;\r\nvar PRIORITY_VISUAL_COMPONENT = 4000;\r\nvar PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;\r\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\r\nvar PRIORITY_VISUAL_BRUSH = 5000;\r\nvar PRIORITY_VISUAL_ARIA = 6000;\r\nvar PRIORITY_VISUAL_DECAL = 7000;\r\nvar 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\nvar IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\r\nvar OPTION_UPDATED_KEY = '__optionUpdated';\r\nvar STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\r\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\r\nvar CONNECT_STATUS_KEY = '__connectUpdateStatus';\r\nvar CONNECT_STATUS_PENDING = 0;\r\nvar CONNECT_STATUS_UPDATING = 1;\r\nvar CONNECT_STATUS_UPDATED = 2;\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar messageCenterProto = MessageCenter.prototype;\r\nmessageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\r\nmessageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off');\r\nvar prepare;\r\nvar prepareView;\r\nvar updateDirectly;\r\nvar updateMethods;\r\nvar doConvertPixel;\r\nvar updateStreamModes;\r\nvar doDispatchAction;\r\nvar flushPendingActions;\r\nvar triggerUpdatedEvent;\r\nvar bindRenderedEvent;\r\nvar bindMouseEvent;\r\nvar clearColorPalette;\r\nvar render;\r\nvar renderComponents;\r\nvar renderSeries;\r\nvar performPostUpdateFuncs;\r\nvar createExtensionAPI;\r\nvar enableConnect;\r\nvar setTransitionOpt;\r\nvar markStatusToUpdate;\r\nvar applyChangedStates;\r\nvar 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\nvar echartsProto = ECharts.prototype;\r\nechartsProto.on = createRegisterEventWithLowercaseECharts('on');\r\nechartsProto.off = createRegisterEventWithLowercaseECharts('off');\r\nechartsProto.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\nvar MOUSE_EVENT_NAMES = [\r\n    'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove',\r\n    'mousedown', 'mouseup', 'globalout', 'contextmenu'\r\n];\r\nfunction disposedWarning(id) {\r\n    if (__DEV__) {\r\n        console.warn('Instance ' + id + ' has been disposed');\r\n    }\r\n}\r\nvar actions = {};\r\nvar eventActionMap = {};\r\nvar dataProcessorFuncs = [];\r\nvar optionPreprocessorFuncs = [];\r\nvar postInitFuncs = [];\r\nvar postUpdateFuncs = [];\r\nvar visualFuncs = [];\r\nvar themeStorage = {};\r\nvar loadingEffects = {};\r\nvar instances$1 = {};\r\nvar connectedGroups = {};\r\nvar idBase = +(new Date()) - 0;\r\nvar groupIdBase = +(new Date()) - 0;\r\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\r\nfunction 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\nfunction 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\nfunction disConnect(groupId) {\r\n    connectedGroups[groupId] = false;\r\n}\r\nvar disconnect = disConnect;\r\nfunction 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\nfunction getInstanceByDom(dom) {\r\n    return instances$1[getAttribute(dom, DOM_ATTRIBUTE_KEY)];\r\n}\r\nfunction getInstanceById(key) {\r\n    return instances$1[key];\r\n}\r\nfunction registerTheme(name, theme) {\r\n    themeStorage[name] = theme;\r\n}\r\nfunction registerPreprocessor(preprocessorFunc) {\r\n    optionPreprocessorFuncs.push(preprocessorFunc);\r\n}\r\nfunction registerProcessor(priority, processor) {\r\n    normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\r\n}\r\nfunction registerPostInit(postInitFunc) {\r\n    postInitFunc && postInitFuncs.push(postInitFunc);\r\n}\r\nfunction registerPostUpdate(postUpdateFunc) {\r\n    postUpdateFunc && postUpdateFuncs.push(postUpdateFunc);\r\n}\r\nfunction 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\nfunction registerCoordinateSystem(type, coordSysCreator) {\r\n    CoordinateSystemManager.register(type, coordSysCreator);\r\n}\r\nfunction 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\nfunction registerLayout(priority, layoutTask) {\r\n    normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\r\n}\r\nfunction registerVisual(priority, visualTask) {\r\n    normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\r\n}\r\nfunction 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\nfunction registerLoading(name, loadingFx) {\r\n    loadingEffects[name] = loadingFx;\r\n}\r\nfunction extendComponentModel(proto) {\r\n    return ComponentModel.extend(proto);\r\n}\r\nfunction extendComponentView(proto) {\r\n    return ComponentView.extend(proto);\r\n}\r\nfunction extendSeriesModel(proto) {\r\n    return SeriesModel.extend(proto);\r\n}\r\nfunction extendChartView(proto) {\r\n    return ChartView.extend(proto);\r\n}\r\nfunction setCanvasCreator(creator) {\r\n    $override('createCanvas', creator);\r\n}\r\nfunction registerMap(mapName, geoJson, specialAreas) {\r\n    mapDataStorage.registerMap(mapName, geoJson, specialAreas);\r\n}\r\nfunction 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\nvar registerTransform = registerExternalTransform;\r\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\r\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\r\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\r\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\r\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\r\nregisterVisual(PRIORITY_VISUAL_DECAL, decalVisual);\r\nregisterPreprocessor(globalBackwardCompat);\r\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\r\nregisterLoading('default', defaultLoading);\r\nregisterAction({\r\n    type: HIGHLIGHT_ACTION_TYPE,\r\n    event: HIGHLIGHT_ACTION_TYPE,\r\n    update: HIGHLIGHT_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n    type: DOWNPLAY_ACTION_TYPE,\r\n    event: DOWNPLAY_ACTION_TYPE,\r\n    update: DOWNPLAY_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n    type: SELECT_ACTION_TYPE,\r\n    event: SELECT_ACTION_TYPE,\r\n    update: SELECT_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n    type: UNSELECT_ACTION_TYPE,\r\n    event: UNSELECT_ACTION_TYPE,\r\n    update: UNSELECT_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\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\nregisterTheme('light', lightTheme);\r\nregisterTheme('dark', theme);\r\nvar dataTool = {};\n\nfunction dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\r\n    return valNumOrArrLengthMoreThan2 == null\r\n        ? 0\r\n        : (valNumOrArrLengthMoreThan2.length || 1);\r\n}\r\nfunction defaultKeyGetter(item) {\r\n    return item;\r\n}\r\nvar 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\nfunction 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\nfunction getOrCreateEncodeArr(encode, dim) {\r\n    if (!encode.hasOwnProperty(dim)) {\r\n        encode[dim] = [];\r\n    }\r\n    return encode[dim];\r\n}\r\nfunction getDimensionTypeByAxis(axisType) {\r\n    return axisType === 'category'\r\n        ? 'ordinal'\r\n        : axisType === 'time'\r\n            ? 'time'\r\n            : 'float';\r\n}\r\nfunction mayLabelDimType(dimType) {\r\n    return !(dimType === 'ordinal' || dimType === 'time');\r\n}\n\nvar 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\nvar mathFloor = Math.floor;\r\nvar isObject$3 = isObject;\r\nvar map$1 = map;\r\nvar UNDEFINED = 'undefined';\r\nvar INDEX_NOT_FOUND = -1;\r\nvar ID_PREFIX = 'e\\0\\0';\r\nvar 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\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\r\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\r\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\r\nvar TRANSFERABLE_PROPERTIES = [\r\n    'hasItemOption', '_nameList', '_idList', '_invertedIndicesMap',\r\n    '_rawData', '_dimValueGetter',\r\n    '_count', '_rawCount', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'\r\n];\r\nvar CLONE_PROPERTIES = [\r\n    '_extent', '_approximateExtent', '_rawExtent'\r\n];\r\nvar defaultDimValueGetters;\r\nvar prepareInvertedIndex;\r\nvar getIndicesCtor;\r\nvar prepareStorage;\r\nvar getRawIndexWithoutIndices;\r\nvar getRawIndexWithIndices;\r\nvar getId;\r\nvar getIdNameFromStore;\r\nvar makeIdFromName;\r\nvar normalizeDimensions;\r\nvar validateDimensions;\r\nvar cloneListForMapAndSample;\r\nvar getInitialExtent;\r\nvar setItemDataAndSeriesIndex;\r\nvar transferProperties;\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nvar 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\nfunction isCategory(axisModel) {\r\n    return axisModel.get('type') === 'category';\r\n}\n\nfunction 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\nfunction isDimensionStacked(data, stackedDim) {\r\n    return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\r\n}\r\nfunction getStackedDimension(data, targetDim) {\r\n    return isDimensionStacked(data, targetDim)\r\n        ? data.getCalculationInfo('stackResultDimension')\r\n        : targetDim;\r\n}\n\nfunction 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\nfunction 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\nfunction 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\nvar 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\nenableClassManagement(Scale, {\r\n    registerWhenExtend: true\r\n});\n\nvar 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\nfunction 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\nvar roundNumber = round$1;\r\nfunction 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\nfunction getIntervalPrecision(interval) {\r\n    return getPrecisionSafe(interval) + 2;\r\n}\r\nfunction clamp(niceTickExtent, idx, extent) {\r\n    niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\r\n}\r\nfunction 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\nfunction contain$1(val, extent) {\r\n    return val >= extent[0] && val <= extent[1];\r\n}\r\nfunction 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\nfunction scale$2(val, extent) {\r\n    return val * (extent[1] - extent[0]) + extent[0];\r\n}\n\nvar 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\nScale.registerClass(OrdinalScale);\n\nvar roundNumber$1 = round$1;\r\nvar 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\nScale.registerClass(IntervalScale);\n\nvar STACK_PREFIX = '__ec_stack_';\r\nvar LARGE_BAR_MIN_WIDTH = 0.5;\r\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\nfunction getSeriesStackId(seriesModel) {\r\n    return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\r\n}\r\nfunction getAxisKey(axis) {\r\n    return axis.dim + axis.index;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction isOnCartesian(seriesModel) {\r\n    return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\r\n}\r\nfunction isInLargeMode(seriesModel) {\r\n    return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\r\n}\r\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\r\n    return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\r\n}\n\nvar 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\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getMillisecondsInterval(approxInterval) {\r\n    return nice(approxInterval, true);\r\n}\r\nfunction 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\nfunction 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\nScale.registerClass(TimeScale);\n\nvar scaleProto = Scale.prototype;\r\nvar intervalScaleProto = IntervalScale.prototype;\r\nvar getPrecisionSafe$1 = getPrecisionSafe;\r\nvar roundingErrorFix = round$1;\r\nvar mathFloor$1 = Math.floor;\r\nvar mathCeil = Math.ceil;\r\nvar mathPow$1 = Math.pow;\r\nvar mathLog = Math.log;\r\nvar 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\nvar proto = LogScale.prototype;\r\nproto.getMinorTicks = intervalScaleProto.getMinorTicks;\r\nproto.getLabel = intervalScaleProto.getLabel;\r\nfunction fixRoundingError(val, originalVal) {\r\n    return roundingErrorFix(val, getPrecisionSafe$1(originalVal));\r\n}\r\nScale.registerClass(LogScale);\n\nvar 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\nvar DETERMINED_MIN_MAX_ATTR = { min: '_determinedMin', max: '_determinedMax' };\r\nvar DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' };\r\nfunction 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\nfunction parseAxisModelMinMax(scale, minMax) {\r\n    return minMax == null ? null\r\n        : eqNaN(minMax) ? NaN\r\n            : scale.parse(minMax);\r\n}\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getAxisRawValue(axis, tick) {\r\n    return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\r\n}\r\nfunction 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\nfunction 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\nfunction getOptionCategoryInterval(model) {\r\n    var interval = model.get('interval');\r\n    return interval == null ? 'auto' : interval;\r\n}\r\nfunction shouldShowAllLabels(axis) {\r\n    return axis.type === 'category'\r\n        && getOptionCategoryInterval(axis.getLabelModel()) === 0;\r\n}\r\nfunction 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\nfunction 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\nvar 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\nfunction createList(seriesModel) {\r\n    return createListFromArray(seriesModel.getSource(), seriesModel);\r\n}\r\nvar dataStack$1 = {\r\n    isDimensionStacked: isDimensionStacked,\r\n    enableDataStack: enableDataStack,\r\n    getStackedDimension: getStackedDimension\r\n};\r\nfunction 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\nfunction mixinAxisModelCommonMethods(Model) {\r\n    mixin(Model, AxisModelCommonMixin);\r\n}\n\nvar 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\nvar EPSILON$3 = 1e-8;\r\nfunction isAroundEqual$1(a, b) {\r\n    return Math.abs(a - b) < EPSILON$3;\r\n}\r\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar inner$4 = makeInner();\r\nfunction createAxisLabels(axis) {\r\n    return axis.type === 'category'\r\n        ? makeCategoryLabels(axis)\r\n        : makeRealNumberLabels(axis);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getListCache(axis, prop) {\r\n    return inner$4(axis)[prop] || (inner$4(axis)[prop] = []);\r\n}\r\nfunction 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\nfunction listCacheSet(cache, key, value) {\r\n    cache.push({ key: key, value: value });\r\n    return value;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar NORMALIZED_EXTENT = [0, 1];\r\nvar 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\nfunction 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\nfunction 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\nvar parseGeoJson = parseGeoJSON;\r\nvar number = {};\r\neach([\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\nvar format$1 = {};\r\neach([\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\nvar time = {\r\n    parse: parseDate,\r\n    format: format\r\n};\r\nvar ecUtil = {};\r\neach([\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\nvar 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\nvar graphic$1 = {};\r\neach(GRAPHIC_KEYS, function (name) {\r\n    graphic$1[name] = graphic[name];\r\n});\n\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isObjectNotArray(val) {\r\n    return isObject(val) && !isArrayLike(val);\r\n}\r\nvar 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\nfunction parseConditionalExpression(exprOption, getters) {\r\n    return new ConditionalExpressionParsed(exprOption, getters);\r\n}\n\nvar 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\nvar sampleLog = '';\r\nif (__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\nvar 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\nregisterTransform(filterTransform);\r\nregisterTransform(sortTransform);\n\nvar 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\nSeriesModel.registerClass(LineSeriesModel);\n\nfunction 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\nfunction 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\nvar 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\nfunction driftSymbol(dx, dy) {\r\n    this.parent.drift(dx, dy);\r\n}\n\nfunction 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\nfunction normalizeUpdateOpt(opt) {\r\n    if (opt != null && !isObject(opt)) {\r\n        opt = { isIgnore: opt };\r\n    }\r\n    return opt || {};\r\n}\r\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar supportFloat32Array = typeof Float32Array !== 'undefined';\r\nvar Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\r\nfunction 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\nfunction 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\nfunction 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\nvar mathMin$5 = Math.min;\r\nvar mathMax$5 = Math.max;\r\nfunction isPointNull(x, y) {\r\n    return isNaN(x) || isNaN(y);\r\n}\r\nfunction 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\nvar 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\nvar 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\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction isCoordinateSystemType(coordSys, type) {\r\n    return coordSys.type === type;\r\n}\n\nfunction 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\nfunction 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\nfunction 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\nfunction getSmooth(smooth) {\r\n    return typeof smooth === 'number' ? smooth : (smooth ? 0.5 : 0);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isPointNull$1(x, y) {\r\n    return isNaN(x) || isNaN(y);\r\n}\r\nfunction 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\nfunction getPointAtIndex(points, idx) {\r\n    return [points[idx * 2], points[idx * 2 + 1]];\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nChartView.registerClass(LineView);\n\nfunction 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\nvar 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\nvar indexSampler = function (frame) {\r\n    return Math.round(frame.length / 2);\r\n};\r\nfunction 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar logAxis = defaults({\r\n    scale: true,\r\n    logBase: 10\r\n}, valueAxis);\r\nvar axisDefault = {\r\n    category: categoryAxis,\r\n    value: valueAxis,\r\n    time: timeAxis,\r\n    log: logAxis\r\n};\n\nvar AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 };\n\nfunction 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\nfunction getAxisType(option) {\r\n    return option.type || (option.data ? 'category' : 'value');\r\n}\n\nvar 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\nmixin(CartesianAxisModel, AxisModelCommonMixin);\r\nvar extraOption = {\r\n    offset: 0,\r\n    categorySortInfo: []\r\n};\r\naxisModelCreator('x', CartesianAxisModel, extraOption);\r\naxisModelCreator('y', CartesianAxisModel, extraOption);\n\nvar PI$6 = Math.PI;\r\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction ignoreEl(el) {\r\n    el && (el.ignore = true);\r\n}\r\nfunction 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\nfunction isNameLocationCenter(nameLocation) {\r\n    return nameLocation === 'middle' || nameLocation === 'center';\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction checkPropInLink(linkPropValue, axisPropValue) {\r\n    return linkPropValue === 'all'\r\n        || (isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0)\r\n        || linkPropValue === axisPropValue;\r\n}\r\nfunction 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\nfunction getAxisInfo(axisModel) {\r\n    var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})\r\n        .coordSysAxesInfo;\r\n    return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\r\n}\r\nfunction getAxisPointerModel(axisModel) {\r\n    var axisInfo = getAxisInfo(axisModel);\r\n    return axisInfo && axisInfo.axisPointerModel;\r\n}\r\nfunction isHandleTrigger(axisPointerModel) {\r\n    return !!axisPointerModel.get(['handle', 'show']);\r\n}\r\nfunction makeKey(model) {\r\n    return model.type + '||' + model.id;\r\n}\n\nvar axisPointerClazz = {};\r\nvar 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\nfunction 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\nfunction isCartesian2DSeries(seriesModel) {\r\n    return seriesModel.get('coordinateSystem') === 'cartesian2d';\r\n}\r\nfunction 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\nvar inner$5 = makeInner();\r\nfunction 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\nfunction rectCoordAxisHandleRemove(axisView) {\r\n    inner$5(axisView).splitAreaColors = null;\r\n}\n\nvar axisBuilderAttrs = [\r\n    'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar selfBuilderAttrs = [\r\n    'splitArea', 'splitLine', 'minorSplitLine'\r\n];\r\nvar 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\nvar 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\nvar 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\nvar 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\nComponentView.registerClass(CartesianXAxisView);\r\nComponentView.registerClass(CartesianYAxisView);\n\nregisterProcessor(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\nfunction 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\nfunction 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\nfunction 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\nfunction prepareAxisRecord(axisRecordMap, axisModel) {\r\n    return axisRecordMap.get(axisModel.uid)\r\n        || axisRecordMap.set(axisModel.uid, { condExtent: initExtent() });\r\n}\r\nfunction initExtent() {\r\n    return [Infinity, -Infinity];\r\n}\r\nfunction unionExtent(extent, val) {\r\n    val < extent[0] && (extent[0] = val);\r\n    val > extent[1] && (extent[1] = val);\r\n}\n\nvar 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\nvar 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\nComponentView.registerClass(GridView);\r\nComponentModel.registerClass(GridModel);\r\nregisterPreprocessor(function (option) {\r\n    if (option.xAxis && option.yAxis && !option.grid) {\r\n        option.grid = {};\r\n    }\r\n});\n\nregisterLayout(pointsLayout('line', true));\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\nvar 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\nvar cartesian2DDimensions = ['x', 'y'];\r\nfunction canCalculateAffineTransform(scale) {\r\n    return scale.type === 'interval' || scale.type === 'time';\r\n}\r\nvar 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\nvar 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\nvar 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\nfunction isAxisUsedInTheGrid(axisModel, gridModel) {\r\n    return axisModel.getCoordSysModel() === gridModel;\r\n}\r\nfunction 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\nfunction canOnZeroToAxis(axis) {\r\n    return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\r\n}\r\nfunction 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\nCoordinateSystemManager.register('cartesian2d', Grid);\n\nvar 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\nSeriesModel.registerClass(BaseBarSeriesModel);\n\nvar 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\nSeriesModel.registerClass(BarSeriesModel);\n\nvar 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\nvar 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\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth'];\r\nvar BAR_BORDER_RADIUS_QUERY = ['itemStyle', 'borderRadius'];\r\nvar _eventPos = [0, 0];\r\nvar mathMax$6 = Math.max;\r\nvar mathMin$6 = Math.min;\r\nfunction 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\nvar 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\nvar 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\nvar 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\nfunction 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\nvar 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\nfunction isZeroOnPolar(layout) {\r\n    return layout.startAngle != null\r\n        && layout.endAngle != null\r\n        && layout.startAngle === layout.endAngle;\r\n}\r\nfunction 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\nfunction 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\nvar LagePathShape = (function () {\r\n    function LagePathShape() {\r\n    }\r\n    return LagePathShape;\r\n}());\r\nvar 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nChartView.registerClass(BarView);\n\nregisterAction({\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\nregisterLayout(PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar'));\r\nregisterLayout(PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\r\nregisterVisual({\r\n    seriesType: 'bar',\r\n    reset: function (seriesModel) {\r\n        seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n    }\r\n});\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n\nfunction 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\nvar 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\nvar 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\nSeriesModel.registerClass(PieSeriesModel);\n\nvar RADIAN = Math.PI / 180;\r\nfunction 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\nfunction 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\nfunction isPositionCenter(sectorShape) {\r\n    return sectorShape.position === 'center';\r\n}\r\nfunction 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\nfunction 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\nvar 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\nvar 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\nChartView.registerClass(PieView);\n\nvar PI2$8 = Math.PI * 2;\r\nvar RADIAN$1 = Math.PI / 180;\r\nfunction getViewRect(seriesModel, api) {\r\n    return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n        width: api.getWidth(),\r\n        height: api.getHeight()\r\n    });\r\n}\r\nfunction 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\nfunction 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\ncreateLegacyDataSelectAction('pie', registerAction);\r\nregisterLayout(curry(pieLayout, 'pie'));\r\nregisterProcessor(dataFilter('pie'));\n\nvar 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\nSeriesModel.registerClass(ScatterSeriesModel);\n\nvar BOOST_SIZE_THRESHOLD = 4;\r\nvar LargeSymbolPathShape = (function () {\r\n    function LargeSymbolPathShape() {\r\n    }\r\n    return LargeSymbolPathShape;\r\n}());\r\nvar 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\nvar 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\nvar 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\nChartView.registerClass(ScatterView);\n\nregisterLayout(pointsLayout('scatter'));\n\nvar 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\nvar 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\nCoordinateSystemManager.register('radar', Radar);\n\nvar valueAxisDefault = axisDefault.value;\r\nfunction defaultsShow(opt, show) {\r\n    return defaults({\r\n        show: show\r\n    }, opt);\r\n}\r\nvar 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\nComponentModel.registerClass(RadarModel);\n\nvar axisBuilderAttrs$1 = [\r\n    'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar 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\nComponentView.registerClass(RadarView);\n\nvar 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\nSeriesModel.registerClass(RadarSeriesModel);\n\nfunction normalizeSymbolSize(symbolSize) {\r\n    if (!isArray(symbolSize)) {\r\n        symbolSize = [+symbolSize, +symbolSize];\r\n    }\r\n    return symbolSize;\r\n}\r\nvar 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\nChartView.registerClass(RadarView$1);\n\nfunction 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\nfunction isValidPoint(point) {\r\n    return !isNaN(point[0]) && !isNaN(point[1]);\r\n}\r\nfunction getValueMissingPoint(coordSys) {\r\n    return [coordSys.cx, coordSys.cy];\r\n}\n\nfunction 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\nregisterLayout(radarLayout);\r\nregisterProcessor(dataFilter('radar'));\r\nregisterPreprocessor(radarBackwardCompat);\n\nvar geoCoord = [126, 25];\r\nvar 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\nfor (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\nfunction 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\nvar coordsOffsetMap = {\r\n    '南海诸岛': [32, 80],\r\n    '广东': [0, -10],\r\n    '香港': [10, 5],\r\n    '澳门': [-10, 10],\r\n    '天津': [5, 5]\r\n};\r\nfunction 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\nvar geoCoordMap = {\r\n    'Russia': [100, 60],\r\n    'United States': [-99, 38],\r\n    'United States of America': [-99, 38]\r\n};\r\nfunction 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\nvar 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\nfunction 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\nvar inner$6 = makeInner();\r\nvar 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\nfunction 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\nvar inner$7 = makeInner();\r\nvar 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\nfunction 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\nvar loaders = {\r\n    geoJSON: geoJSONLoader,\r\n    svg: geoSVGLoader\r\n};\r\nvar 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\nfunction 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\nfunction 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\nvar 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\nSeriesModel.registerClass(MapSeries);\n\nvar ATTR = '\\0_ec_interaction_mutex';\r\nfunction take(zr, resourceKey, userKey) {\r\n    var store = getStore(zr);\r\n    store[resourceKey] = userKey;\r\n}\r\nfunction 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\nfunction isTaken(zr, resourceKey) {\r\n    return !!getStore(zr)[resourceKey];\r\n}\r\nfunction getStore(zr) {\r\n    return zr[ATTR] || (zr[ATTR] = {});\r\n}\r\nregisterAction({ type: 'takeGlobalCursor', event: 'globalCursorTaken', update: 'update' }, function () { });\n\nvar 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\nfunction 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\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n    contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e);\r\n    controller.trigger(eventName, contollerEvent);\r\n}\r\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\r\n    var setting = settings[behaviorToCheck];\r\n    return !behaviorToCheck || (setting && (!isString(setting) || e.event[setting + 'Key']));\r\n}\n\nfunction 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\nfunction 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\nvar IRRELEVANT_EXCLUDES = { 'axisPointer': 1, 'tooltip': 1, 'brush': 1 };\r\nfunction 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\nfunction 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\nvar 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\nvar 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\nChartView.registerClass(MapView);\n\nfunction 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\nregisterAction({\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\nvar v2ApplyTransform = applyTransform;\r\nvar 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\nfunction getCoordSys(finder) {\r\n    var seriesModel = finder.seriesModel;\r\n    return seriesModel ? seriesModel.coordinateSystem : null;\r\n}\n\nvar 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\nmixin(Geo, View);\r\nfunction 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\nfunction 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\nfunction setGeoCoords(geo, model) {\r\n    each(model.get('geoCoord'), function (geoCoord, name) {\r\n        geo.addGeoCoord(name, geoCoord);\r\n    });\r\n}\r\nvar 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\nvar geoCreator = new GeoCreator();\r\nregisterCoordinateSystem('geo', geoCreator);\n\nfunction 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\nfunction 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\nfunction 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\nregisterLayout(mapSymbolLayout);\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\r\ncreateLegacyDataSelectAction('map', registerAction);\n\nvar inner$8 = makeInner();\r\nfunction 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\nfunction 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\nfunction changeInjection(opt, res) {\r\n    opt.struct && opt.struct.update();\r\n    return res;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction isMainData(data) {\r\n    return inner$8(data).mainData === data;\r\n}\r\nfunction 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\nfunction 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\nvar 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\nvar 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\nfunction 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\nvar 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\nSeriesModel.registerClass(TreeSeriesModel);\n\nfunction 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\nfunction 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\nfunction 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\nfunction separation(cb) {\r\n    return arguments.length ? cb : defaultSeparation;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction nextLeft(node) {\r\n    var children = node.children;\r\n    return children.length && node.isExpand ? children[0] : node.hierNode.thread;\r\n}\r\nfunction nextAncestor(nodeInLeft, node, ancestor) {\r\n    return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode\r\n        ? nodeInLeft.hierNode.ancestor : ancestor;\r\n}\r\nfunction 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\nfunction defaultSeparation(node1, node2) {\r\n    return node1.parentNode === node2.parentNode ? 1 : 2;\r\n}\n\nvar TreeEdgeShape = (function () {\r\n    function TreeEdgeShape() {\r\n        this.parentPoint = [];\r\n        this.childPoints = [];\r\n    }\r\n    return TreeEdgeShape;\r\n}());\r\nvar 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nChartView.registerClass(TreeView);\n\nregisterAction({\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\nregisterAction({\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\nfunction 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\nfunction 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\nfunction treeLayout(ecModel, api) {\r\n    ecModel.eachSeriesByType('tree', function (seriesModel) {\r\n        commonLayout(seriesModel, api);\r\n    });\r\n}\r\nfunction 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\nfunction 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\nregisterLayout(treeLayout);\r\nregisterVisual(treeVisual);\n\nfunction 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\nfunction 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\nfunction aboveViewRoot(viewRoot, node) {\r\n    var viewPath = getPathToRoot(viewRoot);\r\n    return indexOf(viewPath, node) >= 0;\r\n}\r\nfunction 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nSeriesModel.registerClass(TreemapSeriesModel);\n\nvar TEXT_PADDING = 8;\r\nvar ITEM_GAP = 8;\r\nvar ARRAY_LENGTH = 5;\r\nvar 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\nfunction 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\nfunction 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\nvar 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\nfunction createWrap() {\r\n    return new AnimationWrap();\r\n}\n\nvar Group$1 = Group;\r\nvar Rect$1 = Rect;\r\nvar DRAG_THRESHOLD = 3;\r\nvar PATH_LABEL_NOAMAL = 'label';\r\nvar PATH_UPPERLABEL_NORMAL = 'upperLabel';\r\nvar Z_BASE = 10;\r\nvar Z_BG = 1;\r\nvar Z_CONTENT = 2;\r\nvar 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\nvar 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\nvar inner$9 = makeInner();\r\nvar 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\nfunction createStorage() {\r\n    return {\r\n        nodeGroup: [],\r\n        background: [],\r\n        content: []\r\n    };\r\n}\r\nfunction 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\nfunction calculateZ(depth, zInLevel) {\r\n    var zb = depth * Z_BASE + zInLevel;\r\n    return (zb - 1) / zb;\r\n}\r\nChartView.registerClass(TreemapView);\n\nvar noop$1 = function () { };\r\nvar actionTypes = [\r\n    'treemapZoomToNode',\r\n    'treemapRender',\r\n    'treemapMove'\r\n];\r\nfor (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\nregisterAction({ 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\nvar each$4 = each;\r\nvar isObject$4 = isObject;\r\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction makeApplyVisual(visualType) {\r\n    return function (value, getter, setter) {\r\n        setter(visualType, this.mapValueToVisual(value));\r\n    };\r\n}\r\nfunction 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\nfunction doMapFixed() {\r\n    return this.option.visual[0];\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction littleThan(close, a, b) {\r\n    return close ? a <= b : a < b;\r\n}\n\nvar ITEM_STYLE_NORMAL = 'itemStyle';\r\nvar inner$a = makeInner();\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\r\n    return thisNodeColor != null\r\n        ? modifyHSL(thisNodeColor, null, null, borderColorSaturation)\r\n        : null;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar mathMax$7 = Math.max;\r\nvar mathMin$7 = Math.min;\r\nvar retrieveValue = retrieve;\r\nvar each$5 = each;\r\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\r\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\r\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\r\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getUpperLabelHeight(model) {\r\n    return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\r\n}\n\nregisterVisual(treemapVisual);\r\nregisterLayout(treemapLayout);\n\nfunction generateNodeKey(id) {\r\n    return '_EC_' + id;\r\n}\r\nvar 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\nvar 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\nvar 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\nfunction 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\nmixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data'));\r\nmixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\n\nfunction 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\nvar KEY_DELIMITER = '-->';\r\nvar getAutoCurvenessParams = function (seriesModel) {\r\n    return seriesModel.get('autoCurveness') || null;\r\n};\r\nvar 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\nvar 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\nvar 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\nvar getEdgeFromMap = function (edge, seriesModel) {\r\n    var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\r\n    return seriesModel.__edgeMap[key];\r\n};\r\nvar 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\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\r\n    var edgeMap = seriesModel.__edgeMap;\r\n    return edgeMap[key] ? edgeMap[key].length : 0;\r\n};\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nSeriesModel.registerClass(GraphSeriesModel);\n\nvar straightLineProto = Line.prototype;\r\nvar bezierCurveProto = BezierCurve.prototype;\r\nvar 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\nvar 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\nfunction isStraightLine(shape) {\r\n    return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\r\n}\r\nvar 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\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\r\nfunction makeSymbolTypeKey(symbolCategory) {\r\n    return '_' + symbolCategory + 'Type';\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar 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\nfunction isEffectObject(el) {\r\n    return el.animators && el.animators.length > 0;\r\n}\r\nfunction 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\nfunction isPointNaN(pt) {\r\n    return isNaN(pt[0]) || isNaN(pt[1]);\r\n}\r\nfunction lineNeedsDraw(pts) {\r\n    return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\r\n}\n\nfunction 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\nfunction 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\nvar v1 = [];\r\nvar v2 = [];\r\nvar v3 = [];\r\nvar quadraticAt$1 = quadraticAt;\r\nvar v2DistSquare = distSquare;\r\nvar mathAbs$2 = Math.abs;\r\nfunction 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\nfunction 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\nfunction isViewCoordSys(coordSys) {\r\n    return coordSys.type === 'view';\r\n}\r\nvar 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\nChartView.registerClass(GraphView);\n\nregisterAction({\r\n    type: 'focusNodeAdjacency',\r\n    event: 'focusNodeAdjacency',\r\n    update: 'series:focusNodeAdjacency'\r\n}, function () { });\r\nregisterAction({\r\n    type: 'unfocusNodeAdjacency',\r\n    event: 'unfocusNodeAdjacency',\r\n    update: 'series:unfocusNodeAdjacency'\r\n}, function () { });\n\nvar actionInfo = {\r\n    type: 'graphRoam',\r\n    event: 'graphRoam',\r\n    update: 'none'\r\n};\r\nregisterAction(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\nfunction 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\nfunction 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\nfunction normalize$2(a) {\r\n    if (!(a instanceof Array)) {\r\n        a = [a, a];\r\n    }\r\n    return a;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar PI$7 = Math.PI;\r\nvar _symbolRadiansHalf = [];\r\nfunction 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\nvar _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\nfunction 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\nvar scaleAndAdd$1 = scaleAndAdd;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nregisterProcessor(categoryFilter);\r\nregisterVisual(categoryVisual);\r\nregisterVisual(graphEdgeVisual);\r\nregisterLayout(graphSimpleLayout);\r\nregisterLayout(PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout);\r\nregisterLayout(graphForceLayout);\r\nregisterCoordinateSystem('graphView', {\r\n    dimensions: View.dimensions,\r\n    create: createViewCoordSys\r\n});\n\nvar 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\nSeriesModel.registerClass(GaugeSeriesModel);\n\nvar 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\nvar 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\nfunction 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\nfunction 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\nvar PI2$9 = Math.PI * 2;\r\nvar 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\nChartView.registerClass(GaugeView);\n\nvar 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\nComponentModel.registerClass(FunnelSeriesModel);\n\nvar opacityAccessPath = ['itemStyle', 'opacity'];\r\nvar 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\nvar 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\nChartView.registerClass(FunnelView);\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nregisterLayout(funnelLayout);\r\nregisterProcessor(dataFilter('funnel'));\n\nfunction parallelPreprocessor(option) {\r\n    createParallelIfNeeded(option);\r\n    mergeAxisOptionFromParallel(option);\r\n}\r\nfunction 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar each$6 = each;\r\nvar mathMin$8 = Math.min;\r\nvar mathMax$8 = Math.max;\r\nvar mathFloor$2 = Math.floor;\r\nvar mathCeil$1 = Math.ceil;\r\nvar round$2 = round$1;\r\nvar PI$8 = Math.PI;\r\nvar 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\nfunction restrict$1(len, extent) {\r\n    return mathMin$8(mathMax$8(len, extent[0]), extent[1]);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nCoordinateSystemManager.register('parallel', { create: create$2 });\n\nvar 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\nvar 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\nComponentModel.registerClass(ParallelAxisModel);\r\nmixin(ParallelAxisModel, AxisModelCommonMixin);\r\naxisModelCreator('parallel', ParallelAxisModel, defaultOption$1);\n\nvar 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\nComponentModel.registerClass(ParallelModel);\n\nvar actionInfo$1 = {\r\n    type: 'axisAreaSelect',\r\n    event: 'axisAreaSelected'\r\n};\r\nregisterAction(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\nregisterAction('parallelAxisExpand', function (payload, ecModel) {\r\n    ecModel.eachComponent({ mainType: 'parallel', query: payload }, function (parallelModel) {\r\n        parallelModel.setAxisExpand(payload);\r\n    });\r\n});\n\nvar BRUSH_PANEL_GLOBAL = true;\r\nvar mathMin$9 = Math.min;\r\nvar mathMax$9 = Math.max;\r\nvar mathPow$2 = Math.pow;\r\nvar COVER_Z = 10000;\r\nvar UNSELECT_THRESHOLD = 6;\r\nvar MIN_RESIZE_LINE_WIDTH = 6;\r\nvar MUTEX_RESOURCE_KEY = 'globalPan';\r\nvar 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\nvar 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\nvar 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\nvar baseUID = 0;\r\nvar 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\nfunction 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\nfunction 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\nfunction updateCoverShape(controller, cover) {\r\n    var brushOption = cover.__brushOption;\r\n    getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\r\n}\r\nfunction 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\nfunction updateCoverAfterCreation(controller, cover) {\r\n    getCoverRenderer(cover).updateCommon(controller, cover);\r\n    updateCoverShape(controller, cover);\r\n}\r\nfunction getCoverRenderer(cover) {\r\n    return coverRenderers[cover.__brushOption.brushType];\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction makeStyle(brushOption) {\r\n    return defaults({ strokeNoScale: true }, brushOption.brushStyle);\r\n}\r\nfunction 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\nfunction getTransform$1(controller) {\r\n    return getTransform(controller.group);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction preventDefault(e) {\r\n    var rawE = e.event;\r\n    rawE.preventDefault && rawE.preventDefault();\r\n}\r\nfunction mainShapeContain(cover, x, y) {\r\n    return cover.childOfName('main').contain(x, y);\r\n}\r\nfunction 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nfunction makeRectPanelClipPath(rect) {\r\n    rect = normalizeRect(rect);\r\n    return function (localPoints) {\r\n        return clipPointsByRect(localPoints, rect);\r\n    };\r\n}\r\nfunction 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\nfunction 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\nfunction normalizeRect(rect) {\r\n    return BoundingRect.create(rect);\r\n}\n\nvar elementList = ['axisLine', 'axisTickLabel', 'axisName'];\r\nvar 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\nComponentView.registerClass(ParallelAxisView);\r\nfunction 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\nfunction 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\nfunction getCoordSysModel(axisModel, ecModel) {\r\n    return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\r\n}\n\nvar CLICK_THRESHOLD = 5;\r\nvar 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\nComponentView.registerClass(ParallelView);\r\nvar 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\nfunction checkTrigger(view, triggerOn) {\r\n    var model = view._model;\r\n    return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\r\n}\r\nregisterPreprocessor(parallelPreprocessor);\n\nvar 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\nSeriesModel.registerClass(ParallelSeriesModel);\r\nfunction 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\nfunction convertDimNameToNumber(dimName) {\r\n    return +dimName.replace('dim', '');\r\n}\n\nvar DEFAULT_SMOOTH = 0.3;\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isEmptyValue(val, axisType) {\r\n    return axisType === 'category'\r\n        ? val == null\r\n        : (val == null || isNaN(val));\r\n}\r\nChartView.registerClass(ParallelView$1);\n\nvar opacityAccessPath$1 = ['lineStyle', 'opacity'];\r\nvar 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\nregisterVisual(PRIORITY.VISUAL.BRUSH, parallelVisual);\n\nvar 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\nSeriesModel.registerClass(SankeySeriesModel);\n\nvar 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\nvar 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\nvar 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\nfunction 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\nChartView.registerClass(SankeyView);\n\nregisterAction({\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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction isNodeDepth(node) {\r\n    var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\r\n    return item.depth != null && item.depth >= 0;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction weightedTarget(edge, orient) {\r\n    return center$1(edge.node2, orient) * edge.getValue();\r\n}\r\nfunction centerTarget(edge, orient) {\r\n    return center$1(edge.node2, orient);\r\n}\r\nfunction weightedSource(edge, orient) {\r\n    return center$1(edge.node1, orient) * edge.getValue();\r\n}\r\nfunction centerSource(edge, orient) {\r\n    return center$1(edge.node1, orient);\r\n}\r\nfunction 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\nfunction getEdgeValue(edge) {\r\n    return edge.getValue();\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nregisterLayout(sankeyLayout);\r\nregisterVisual(sankeyVisual);\n\nvar 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\nvar 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\nmixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);\r\nSeriesModel.registerClass(BoxplotSeriesModel);\n\nvar 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\nvar BoxPathShape = (function () {\r\n    function BoxPathShape() {\r\n    }\r\n    return BoxPathShape;\r\n}());\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nChartView.registerClass(BoxplotView);\n\nfunction boxplotVisual(ecModel, api) {\r\n    ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\r\n        seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n    });\r\n}\n\nvar each$7 = each;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nregisterVisual(boxplotVisual);\r\nregisterLayout(boxplotLayout);\r\nregisterTransform(boxplotTransform);\n\nvar 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\nmixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);\r\nSeriesModel.registerClass(CandlestickSeriesModel);\n\nvar SKIP_PROPS = ['color', 'borderColor'];\r\nvar 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\nChartView.registerClass(CandlestickView);\r\nvar NormalBoxPathShape = (function () {\r\n    function NormalBoxPathShape() {\r\n    }\r\n    return NormalBoxPathShape;\r\n}());\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar LargeBoxPathShape = (function () {\r\n    function LargeBoxPathShape() {\r\n    }\r\n    return LargeBoxPathShape;\r\n}());\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\r\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\r\nvar positiveColorQuery = ['itemStyle', 'color'];\r\nvar negativeColorQuery = ['itemStyle', 'color0'];\r\nvar 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\nvar LargeArr$1 = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\nvar 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\nfunction 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\nfunction 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\nregisterPreprocessor(candlestickPreprocessor);\r\nregisterVisual(candlestickVisual);\r\nregisterLayout(candlestickLayout);\n\nvar 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\nSeriesModel.registerClass(EffectScatterSeriesModel);\n\nvar EFFECT_RIPPLE_NUMBER = 3;\r\nfunction normalizeSymbolSize$1(symbolSize) {\r\n    if (!isArray(symbolSize)) {\r\n        symbolSize = [+symbolSize, +symbolSize];\r\n    }\r\n    return symbolSize;\r\n}\r\nfunction 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\nvar 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\ninherits(EffectSymbol, Group);\n\nvar 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\nChartView.registerClass(EffectScatterView);\n\nregisterLayout(pointsLayout('effectScatter'));\n\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\r\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\r\nfunction 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\nvar 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\nSeriesModel.registerClass(LinesSeriesModel);\n\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nChartView.registerClass(LinesView);\n\nfunction normalize$3(a) {\r\n    if (!(a instanceof Array)) {\r\n        a = [a, a];\r\n    }\r\n    return a;\r\n}\r\nvar 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\nregisterLayout(linesLayout);\r\nregisterVisual(linesVisual);\n\nvar 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\nSeriesModel.registerClass(HeatmapSeriesModel);\n\nvar GRADIENT_LEVELS = 256;\r\nvar 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\nfunction 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\nfunction 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\nfunction isGeoCoordSys(coordSys) {\r\n    var dimensions = coordSys.dimensions;\r\n    return dimensions[0] === 'lng' && dimensions[1] === 'lat';\r\n}\r\nvar 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\nChartView.registerClass(HeatmapView);\n\nvar 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\nSeriesModel.registerClass(PictorialBarSeriesModel);\n\nvar BAR_BORDER_WIDTH_QUERY$1 = ['itemStyle', 'borderWidth'];\r\nvar 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\nvar pathForLineWidth = new Circle();\r\nvar 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\nfunction 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\nfunction 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\nfunction convertToCoordOnAxis(axis, value) {\r\n    return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction getAnimationDelayParams(path) {\r\n    return {\r\n        index: path.__pictorialAnimationIndex,\r\n        count: path.__pictorialRepeatTimes\r\n    };\r\n}\r\nfunction isAnimationEnabled() {\r\n    return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nChartView.registerClass(PictorialBarView);\n\nregisterLayout(curry(layout, 'pictorialBar'));\n\nvar 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\nvar 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\nfunction 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\nfunction 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\nCoordinateSystemManager.register('single', {\r\n    create: create$3,\r\n    dimensions: Single.prototype.dimensions\r\n});\n\nfunction 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\nvar axisBuilderAttrs$2 = [\r\n    'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar selfBuilderAttrs$1 = ['splitArea', 'splitLine'];\r\nvar 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\nvar 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\nComponentView.registerClass(SingleAxisView);\n\nvar 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\nComponentModel.registerClass(SingleAxisModel);\r\nmixin(SingleAxisModel, AxisModelCommonMixin.prototype);\r\naxisModelCreator('single', SingleAxisModel, SingleAxisModel.defaultOption);\n\nfunction 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\nvar inner$b = makeInner();\r\nfunction 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\nfunction 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\nfunction 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\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\r\n    showValueMap[axisInfo.key] = {\r\n        value: value,\r\n        payloadBatch: payloadBatch\r\n    };\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction illegalPoint(point) {\r\n    return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\r\n}\n\nvar inner$c = makeInner();\r\nvar each$8 = each;\r\nfunction 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\nfunction 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\nfunction 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\nfunction onLeave(record, e, dispatchAction) {\r\n    record.handler('leave', null, dispatchAction);\r\n}\r\nfunction doEnter(currTrigger, record, e, dispatchAction) {\r\n    record.handler(currTrigger, e, dispatchAction);\r\n}\r\nfunction 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\nfunction 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\nvar 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\nComponentView.registerClass(AxisPointerView);\n\nvar inner$d = makeInner();\r\nvar clone$3 = clone;\r\nvar bind$1 = bind;\r\nvar 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\nfunction 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\nfunction 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\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\r\n    labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']();\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction getCartesian(grid, axis) {\r\n    var opt = {};\r\n    opt[axis.dim + 'AxisIndex'] = axis.index;\r\n    return grid.getCartesian(opt);\r\n}\r\nvar 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\nfunction getAxisDimIndex(axis) {\r\n    return axis.dim === 'x' ? 0 : 1;\r\n}\r\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\n\nvar 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\nComponentModel.registerClass(AxisPointerModel);\r\nregisterPreprocessor(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\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\r\n    ecModel.getComponent('axisPointer').coordSysAxesInfo =\r\n        collect(ecModel, api);\r\n});\r\nregisterAction({\r\n    type: 'updateAxisPointer',\r\n    event: 'updateAxisPointer',\r\n    update: ':updateAxisPointer'\r\n}, axisTrigger);\n\nvar XY = ['x', 'y'];\r\nvar WH = ['width', 'height'];\r\nvar 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\nvar 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\nfunction getPointDimIndex(axis) {\r\n    return axis.isHorizontal() ? 0 : 1;\r\n}\r\nfunction getGlobalExtent(coordSys, dimIndex) {\r\n    var rect = coordSys.getRect();\r\n    return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\r\n}\r\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\n\nextendComponentView({\r\n    type: 'single'\r\n});\n\nvar DATA_NAME_INDEX = 2;\r\nvar 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\nSeriesModel.registerClass(ThemeRiverSeriesModel);\n\nvar 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\nfunction 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\nChartView.registerClass(ThemeRiverView);\n\nfunction 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\nfunction 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\nfunction 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\nregisterLayout(themeRiverLayout);\r\nregisterProcessor(dataFilter('themeRiver'));\n\nvar 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\nfunction 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\nSeriesModel.registerClass(SunburstSeriesModel);\n\nvar DEFAULT_SECTOR_Z = 2;\r\nvar DEFAULT_TEXT_Z = 4;\r\nvar 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\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\r\nregisterAction({ 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\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\r\nregisterAction({ 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\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\r\nregisterAction({ 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\nvar 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\nChartView.registerClass(SunburstView);\n\nvar RADIAN$2 = Math.PI / 180;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nregisterLayout(curry(sunburstLayout, 'sunburst'));\r\nregisterProcessor(curry(dataFilter, 'sunburst'));\r\nregisterVisual(sunburstVisual);\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar deprecatedLogs = {};\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar inner$e = makeInner();\r\nvar 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\nvar transformPropNamesStr = keys(TRANSFORM_PROPS).join(', ');\r\nvar STYLE_VISUAL_TYPE = {\r\n    color: 'fill',\r\n    borderColor: 'stroke'\r\n};\r\nvar 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\nvar EMPHASIS = 'emphasis';\r\nvar NORMAL = 'normal';\r\nvar BLUR = 'blur';\r\nvar SELECT = 'select';\r\nvar STATES = [NORMAL, EMPHASIS, BLUR, SELECT];\r\nvar 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\nvar PATH_LABEL = {\r\n    normal: ['label'],\r\n    emphasis: [EMPHASIS, 'label'],\r\n    blur: [BLUR, 'label'],\r\n    select: [SELECT, 'label']\r\n};\r\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\r\nvar attachedTxInfoTmp = {\r\n    normal: {},\r\n    emphasis: {},\r\n    blur: {},\r\n    select: {}\r\n};\r\nvar LEGACY_TRANSFORM_PROPS = {\r\n    position: ['x', 'y'],\r\n    scale: ['scaleX', 'scaleY'],\r\n    origin: ['originX', 'originY']\r\n};\r\nvar tmpTransformable = new Transformable();\r\nvar prepareCustoms = {\r\n    cartesian2d: cartesianPrepareCustom,\r\n    geo: geoPrepareCustom,\r\n    singleAxis: singlePrepareCustom,\r\n    polar: polarPrepareCustom,\r\n    calendar: calendarPrepareCustom\r\n};\r\nvar 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\nComponentModel.registerClass(CustomSeriesModel);\r\nvar 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\nChartView.registerClass(CustomSeriesView);\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar checkNonStyleTansitionRefer;\r\nif (__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\nfunction isNonStyleTransitionEnabled(optVal, elVal) {\r\n    return !isArrayLike(optVal)\r\n        ? (optVal != null && isFinite(optVal))\r\n        : optVal !== elVal;\r\n}\r\nvar checkTransformPropRefer;\r\nif (__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\nfunction getOrCreateLeaveToPropsFromEl(el) {\r\n    var innerEl = inner$e(el);\r\n    return innerEl.leaveToProps || (innerEl.leaveToProps = {});\r\n}\r\nvar tmpDuringScope = {};\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction setTransformPropToTransitionFrom(transitionFrom, name, fromTransformable) {\r\n    if (fromTransformable) {\r\n        transitionFrom[name] = fromTransformable[name];\r\n    }\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction retrieveStateOption(elOption, state) {\r\n    return !state ? elOption : elOption ? elOption[state] : null;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction getKey(item, idx) {\r\n    var name = item && item.name;\r\n    return name != null ? name : GROUP_DIFF_PREFIX + idx;\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction getPathData(shape) {\r\n    return shape && (shape.pathData || shape.d);\r\n}\r\nfunction hasOwnPathData(shape) {\r\n    return shape && (hasOwn(shape, 'pathData') || hasOwn(shape, 'd'));\r\n}\r\nfunction isPath$1(el) {\r\n    return el && el instanceof Path;\r\n}\r\nfunction removeElementDirectly(el, group) {\r\n    el && group.remove(el);\r\n}\r\nvar 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\nfunction 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\nfunction getSeriesStackId$1(seriesModel) {\r\n    return seriesModel.get('stack')\r\n        || '__ec_stack_' + seriesModel.seriesIndex;\r\n}\r\nfunction getAxisKey$1(polar, axis) {\r\n    return axis.dim + polar.model.componentIndex;\r\n}\r\nfunction 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\nfunction 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\nvar 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\nComponentModel.registerClass(PolarModel);\n\nvar 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\nmixin(PolarAxisModel, AxisModelCommonMixin);\r\nvar 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\nvar 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\nvar 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\nvar radiusAxisExtraOption = {\r\n    splitNumber: 5\r\n};\r\naxisModelCreator('angle', AngleAxisModel, angleAxisExtraOption);\r\naxisModelCreator('radius', RadiusAxisModel, radiusAxisExtraOption);\n\nvar 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\nRadiusAxis.prototype.dataToRadius = Axis.prototype.dataToCoord;\r\nRadiusAxis.prototype.radiusToData = Axis.prototype.coordToData;\n\nvar inner$f = makeInner();\r\nvar 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\nAngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord;\r\nAngleAxis.prototype.angleToData = Axis.prototype.coordToData;\n\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction isAngleAxisModel(axisModel) {\r\n    return axisModel.mainType === 'angleAxis';\r\n}\r\nfunction 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\nvar 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\nCoordinateSystemManager.register('polar', polarCreator);\n\nvar 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\nfunction 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\nfunction getRadiusIdx(polar) {\r\n    var radiusAxis = polar.getRadiusAxis();\r\n    return radiusAxis.inverse ? 0 : 1;\r\n}\r\nfunction 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\nvar 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\nvar 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\nComponentView.registerClass(AngleAxisView);\n\nvar axisBuilderAttrs$3 = [\r\n    'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar selfBuilderAttrs$2 = [\r\n    'splitLine', 'splitArea', 'minorSplitLine'\r\n];\r\nvar 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\nvar 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\nfunction 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\nAxisView.registerClass(RadiusAxisView);\n\nvar 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\nfunction 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\nvar 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\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\n\nregisterLayout(curry(barLayoutPolar, 'bar'));\r\nextendComponentView({\r\n    type: 'polar'\r\n});\n\nvar 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\nComponentView.registerClass(GeoView);\n\nvar 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\nComponentModel.registerClass(GeoModel);\n\nfunction 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\nmakeAction('toggleSelected', {\r\n    type: 'geoToggleSelect',\r\n    event: 'geoselectchanged'\r\n});\r\nmakeAction('select', {\r\n    type: 'geoSelect',\r\n    event: 'geoselected'\r\n});\r\nmakeAction('unSelect', {\r\n    type: 'geoUnSelect',\r\n    event: 'geounselected'\r\n});\n\nvar PROXIMATE_ONE_DAY = 86400000;\r\nvar 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\nfunction 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\nCoordinateSystemManager.register('calendar', Calendar);\n\nvar 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\nfunction 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\nComponentModel.registerClass(CalendarModel);\n\nvar 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\nvar WEEK_TEXT = {\r\n    EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\r\n    CN: ['日', '一', '二', '三', '四', '五', '六']\r\n};\r\nvar 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\nComponentView.registerClass(CalendarView);\n\nvar inner$g = makeInner();\r\nvar _nonShapeGraphicElements = {\r\n    path: null,\r\n    compoundPath: null,\r\n    group: Group,\r\n    image: ZRImage,\r\n    text: ZRText\r\n};\r\nregisterPreprocessor(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\nvar 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\nComponentModel.registerClass(GraphicComponentModel);\r\nvar 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\nComponentView.registerClass(GraphicComponentView);\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar ToolboxFeature = (function () {\r\n    function ToolboxFeature() {\r\n    }\r\n    return ToolboxFeature;\r\n}());\r\nvar features = {};\r\nfunction registerFeature(name, ctor) {\r\n    features[name] = ctor;\r\n}\r\nfunction getFeature(name) {\r\n    return features[name];\r\n}\n\nvar 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\nComponentModel.registerClass(ToolboxModel);\n\nfunction 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\nfunction 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\nvar 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\nComponentView.registerClass(ToolboxView);\r\nfunction isUserFeatureName(featureName) {\r\n    return featureName.indexOf('my') === 0;\r\n}\n\nvar 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\nSaveAsImage.prototype.unusable = !env.canvasSupported;\r\nregisterFeature('saveAsImage', SaveAsImage);\n\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\r\nvar radioTypes = [\r\n    ['line', 'bar'],\r\n    ['stack']\r\n];\r\nvar 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\nvar 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\nregisterAction({\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\nregisterFeature('magicType', MagicType);\n\nvar BLOCK_SPLITER = new Array(60).join('-');\r\nvar ITEM_SPLITER = '\\t';\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction trim$1(str) {\r\n    return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\r\n}\r\nfunction 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\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nregisterFeature('dataView', DataView);\r\nregisterAction({\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\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData'];\r\nvar INCLUDE_FINDER_MAIN_TYPES = [\r\n    'grid', 'xAxis', 'yAxis', 'geo', 'graph',\r\n    'polar', 'radiusAxis', 'angleAxis', 'bmap'\r\n];\r\nvar 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\nfunction formatMinMax(minMax) {\r\n    minMax[0] > minMax[1] && minMax.reverse();\r\n    return minMax;\r\n}\r\nfunction parseFinder$1(ecModel, finder) {\r\n    return parseFinder(ecModel, finder, { includeMainTypes: INCLUDE_FINDER_MAIN_TYPES });\r\n}\r\nvar 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\nvar 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\nvar 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\nvar 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\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nvar each$9 = each;\r\nvar inner$h = makeInner();\r\nfunction 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\nfunction 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\nfunction clear$1(ecModel) {\r\n    inner$h(ecModel).snapshots = null;\r\n}\r\nfunction count(ecModel) {\r\n    return getStoreSnapshots(ecModel).length;\r\n}\r\nfunction 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\nComponentModel.registerSubTypeDefaulter('dataZoom', function () {\r\n    return 'slider';\r\n});\n\nvar DATA_ZOOM_AXIS_DIMENSIONS = [\r\n    'x', 'y', 'radius', 'angle', 'single'\r\n];\r\nvar SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis'];\r\nfunction isCoordSupported(seriesModel) {\r\n    var coordType = seriesModel.get('coordinateSystem');\r\n    return indexOf(SERIES_COORDS, coordType) >= 0;\r\n}\r\nfunction getAxisMainType(axisDim) {\r\n    if (__DEV__) {\r\n        assert(axisDim);\r\n    }\r\n    return axisDim + 'Axis';\r\n}\r\nfunction 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\nfunction 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\nvar 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\nvar 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\nfunction 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\nvar 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\nComponentView.registerClass(DataZoomView);\n\nvar 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\nComponentModel.registerClass(SelectDataZoomModel);\n\nvar 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\nComponentView.registerClass(SelectDataZoomView);\n\nvar each$a = each;\r\nvar asc$1 = asc;\r\nvar 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\nfunction 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\nregisterProcessor(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\nregisterAction('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\nvar each$b = each;\r\nvar DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_');\r\nvar 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\nvar 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\nfunction 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\nfunction updateBackBtnStatus(featureModel, ecModel) {\r\n    featureModel.setIconStatus('back', count(ecModel) > 1 ? 'emphasis' : 'normal');\r\n}\r\nfunction 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\nregisterFeature('dataZoom', DataZoomFeature);\r\nregisterInternalOptionCreator('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\nvar 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\nregisterFeature('restore', RestoreOption);\r\nregisterAction({ type: 'restore', event: 'restore', update: 'prepareAndUpdate' }, function (payload, ecModel) {\r\n    ecModel.resetOption('recreate');\r\n});\n\nvar 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\nComponentModel.registerClass(TooltipModel);\n\nfunction 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\nvar vendors = ['-ms-', '-moz-', '-o-', '-webkit-', ''];\r\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nvar 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\nfunction mathMaxWith0(val) {\r\n    return Math.max(0, val);\r\n}\r\nfunction 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\nfunction 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\nvar bind$2 = bind;\r\nvar each$c = each;\r\nvar parsePercent$3 = parsePercent$2;\r\nvar proxyRect = new Rect({\r\n    shape: { x: -1, y: -1, width: 2, height: 2 }\r\n});\r\nvar 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\nfunction 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\nfunction makeDispatchAction$1(payload, api) {\r\n    return payload.dispatchAction || bind(api.dispatchAction, api);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nfunction isCenterAlign(align) {\r\n    return align === 'center' || align === 'middle';\r\n}\r\nComponentView.registerClass(TooltipView);\n\nregisterAction({\r\n    type: 'showTip',\r\n    event: 'showTip',\r\n    update: 'tooltip:manuallyShowTip'\r\n}, function () { });\r\nregisterAction({\r\n    type: 'hideTip',\r\n    event: 'hideTip',\r\n    update: 'tooltip:manuallyHideTip'\r\n}, function () { });\n\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\r\nfunction 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\nfunction 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\nvar each$d = each;\r\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nfunction inLineRange(p, range) {\r\n    return range[0] <= p && p <= range[1];\r\n}\n\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\r\nvar DISPATCH_METHOD = '__ecBrushSelect';\r\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\r\nvar PRIORITY_BRUSH = PRIORITY.VISUAL.BRUSH;\r\nfunction 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\nregisterVisual(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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nvar DEFAULT_OUT_OF_BRUSH_COLOR = '#ddd';\r\nvar 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\nComponentModel.registerClass(BrushModel);\r\nfunction 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\nvar 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\nComponentView.registerClass(BrushView);\n\nregisterAction({ 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\nregisterAction({ type: 'brushSelect', event: 'brushSelected', update: 'none' }, function () { });\r\nregisterAction({ type: 'brushEnd', event: 'brushEnd', update: 'none' }, function () { });\n\nvar ICON_TYPES = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'];\r\nvar 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\nregisterFeature('brush', BrushFeature);\n\nregisterPreprocessor(brushPreprocessor);\n\nvar 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\nComponentModel.registerClass(TitleModel);\r\nvar 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\nComponentView.registerClass(TitleView);\n\nfunction 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\nfunction 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\nfunction 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\nfunction has(obj, attr) {\r\n    return obj.hasOwnProperty(attr);\r\n}\n\nComponentModel.registerSubTypeDefaulter('timeline', function () {\r\n    return 'slider';\r\n});\n\nregisterAction({ 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\nregisterAction({ 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\nvar 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\nComponentModel.registerClass(TimelineModel);\n\nvar 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\nmixin(SliderTimelineModel, DataFormatMixin.prototype);\r\nComponentModel.registerClass(SliderTimelineModel);\n\nvar 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\nvar 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\nvar PI$9 = Math.PI;\r\nvar labelDataIndexStore = makeInner();\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nComponentView.registerClass(SliderTimelineView);\n\nregisterPreprocessor(timelinePreprocessor);\n\nfunction fillLabel(opt) {\r\n    defaultEmphasis(opt, 'label', ['show']);\r\n}\r\nvar inner$i = makeInner();\r\nvar 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\nmixin(MarkerModel, DataFormatMixin.prototype);\n\nvar 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\nComponentModel.registerClass(MarkPointModel);\n\nfunction hasXOrY(item) {\r\n    return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\r\n}\r\nfunction hasXAndY(item) {\r\n    return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\r\n}\r\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction dataFilter$1(coordSys, item) {\r\n    return (coordSys && coordSys.containData && item.coord && !hasXOrY(item))\r\n        ? coordSys.containData(item.coord) : true;\r\n}\r\nfunction 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\nfunction 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\nvar inner$j = makeInner();\r\nvar 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\nfunction 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\nvar 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\nfunction 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\nComponentView.registerClass(MarkPointView);\n\nregisterPreprocessor(function (opt) {\r\n    opt.markPoint = opt.markPoint || {};\r\n});\n\nvar 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\nComponentModel.registerClass(MarkLineModel);\n\nvar inner$k = makeInner();\r\nvar 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\nfunction isInifinity(val) {\r\n    return !isNaN(val) && !isFinite(val);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar 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\nfunction 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\nComponentView.registerClass(MarkLineView);\n\nregisterPreprocessor(function (opt) {\r\n    opt.markLine = opt.markLine || {};\r\n});\n\nvar 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\nComponentModel.registerClass(MarkAreaModel);\n\nvar inner$l = makeInner();\r\nvar 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\nfunction isInifinity$1(val) {\r\n    return !isNaN(val) && !isFinite(val);\r\n}\r\nfunction 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\nfunction 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\nfunction 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\nvar dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\r\nvar 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\nfunction 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\nComponentView.registerClass(MarkAreaView);\n\nregisterPreprocessor(function (opt) {\r\n    opt.markArea = opt.markArea || {};\r\n});\n\nvar 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\nvar 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\nComponentModel.registerClass(LegendModel);\n\nfunction 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\nregisterAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\r\nregisterAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\r\nregisterAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\r\nregisterAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\r\nregisterAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n\nvar curry$1 = curry;\r\nvar each$e = each;\r\nvar Group$2 = Group;\r\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nComponentView.registerClass(LegendView);\n\nfunction 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\nregisterProcessor(PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\r\nComponentModel.registerSubTypeDefaulter('legend', function () {\r\n    return 'plain';\r\n});\n\nvar 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\nfunction 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\nComponentModel.registerClass(ScrollableLegendModel);\n\nvar Group$3 = Group;\r\nvar WH$1 = ['width', 'height'];\r\nvar XY$1 = ['x', 'y'];\r\nvar 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\nComponentView.registerClass(ScrollableLegendView);\n\nregisterAction('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\nvar 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\nComponentModel.registerClass(SliderZoomModel);\n\nvar Rect$2 = Rect;\r\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\r\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\r\nvar DEFAULT_FILLER_SIZE = 30;\r\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\r\nvar HORIZONTAL = 'horizontal';\r\nvar VERTICAL = 'vertical';\r\nvar LABEL_GAP = 5;\r\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\r\nvar REALTIME_ANIMATION_CONFIG = {\r\n    easing: 'cubicOut',\r\n    duration: 100\r\n};\r\nvar 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\nfunction getOtherDim(thisDim) {\r\n    var map = { x: 'y', y: 'x', radius: 'angle', angle: 'radius' };\r\n    return map[thisDim];\r\n}\r\nfunction getCursor(orient) {\r\n    return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n}\r\nComponentView.registerClass(SliderZoomView);\n\nvar 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\nComponentModel.registerClass(InsideZoomModel);\n\nvar inner$m = makeInner();\r\nregisterProcessor(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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction containsPoint(coordSysModel, e, x, y) {\r\n    return coordSysModel.coordinateSystem.containPoint([x, y]);\r\n}\r\nfunction 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\nvar 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\nvar 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\nfunction 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\nvar 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\nComponentView.registerClass(InsideZoomView);\n\nvar each$f = each;\r\nfunction 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\nfunction has$1(obj, name) {\r\n    return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\r\n}\n\nComponentModel.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\nvar VISUAL_PRIORITY = PRIORITY.VISUAL.COMPONENT;\r\nregisterVisual(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\nregisterVisual(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\nfunction 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\nvar 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\nvar 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\nvar mapVisual$1 = VisualMapping.mapVisual;\r\nvar eachVisual = VisualMapping.eachVisual;\r\nvar isArray$1 = isArray;\r\nvar each$g = each;\r\nvar asc$2 = asc;\r\nvar linearMap$1 = linearMap;\r\nvar 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\nvar DEFAULT_BAR_BOUND = [20, 140];\r\nvar 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\nfunction 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\nComponentModel.registerClass(ContinuousModel);\n\nvar 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\nComponentView.registerClass(VisualMapView);\n\nvar paramsSet = [\r\n    ['left', 'right', 'width'],\r\n    ['top', 'bottom', 'height']\r\n];\r\nfunction 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\nfunction 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\nvar linearMap$2 = linearMap;\r\nvar each$h = each;\r\nvar mathMin$a = Math.min;\r\nvar mathMax$a = Math.max;\r\nvar HOVER_LINK_SIZE = 12;\r\nvar HOVER_LINK_OUT = 6;\r\nvar 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\nfunction 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\nfunction 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\nfunction useHoverLinkOnHandle(visualMapModel) {\r\n    var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\r\n    return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\r\n}\r\nfunction getCursor$1(orient) {\r\n    return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n}\r\nComponentView.registerClass(ContinuousView);\n\nvar actionInfo$2 = {\r\n    type: 'selectDataRange',\r\n    event: 'dataRangeSelected',\r\n    update: 'update'\r\n};\r\nregisterAction(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\nregisterPreprocessor(visualMapPreprocessor);\n\nvar 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\nvar 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\nfunction 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\nComponentModel.registerClass(PiecewiseModel);\n\nvar 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\nComponentView.registerClass(PiecewiseVisualMapView);\n\nregisterPreprocessor(visualMapPreprocessor);\n\nvar DEFAULT_OPTION = {\r\n    label: {\r\n        enabled: true\r\n    },\r\n    decal: {\r\n        show: false\r\n    }\r\n};\r\nvar inner$n = makeInner();\r\nvar decalPaletteScope = {};\r\nfunction 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\nfunction 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\nvar PRIORITY_VISUAL_ARIA$1 = PRIORITY.VISUAL.ARIA;\r\nregisterPreprocessor(ariaPreprocessor);\r\nregisterVisual(PRIORITY_VISUAL_ARIA$1, ariaVisual);\n\nfunction createElement(name) {\r\n    return document.createElementNS('http://www.w3.org/2000/svg', name);\r\n}\n\nvar NONE = 'none';\r\nvar mathRound = Math.round;\r\nvar mathSin$4 = Math.sin;\r\nvar mathCos$4 = Math.cos;\r\nvar PI$a = Math.PI;\r\nvar PI2$a = Math.PI * 2;\r\nvar degree = 180 / PI$a;\r\nvar EPSILON$4 = 1e-4;\r\nfunction round3(val) {\r\n    return mathRound(val * 1e3) / 1e3;\r\n}\r\nfunction round4(val) {\r\n    return mathRound(val * 1e4) / 1e4;\r\n}\r\nfunction isAroundZero$1(val) {\r\n    return val < EPSILON$4 && val > -EPSILON$4;\r\n}\r\nfunction pathHasFill(style) {\r\n    var fill = style.fill;\r\n    return fill != null && fill !== NONE;\r\n}\r\nfunction pathHasStroke(style) {\r\n    var stroke = style.stroke;\r\n    return stroke != null && stroke !== NONE;\r\n}\r\nfunction 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\nfunction 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\nfunction attrXLink(el, key, val) {\r\n    el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\r\n}\r\nfunction attrXML(el, key, val) {\r\n    el.setAttributeNS('http://www.w3.org/XML/1998/namespace', key, val);\r\n}\r\nfunction 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\nvar 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\nvar 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\nvar 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\nvar TEXT_ALIGN_TO_ANCHOR = {\r\n    left: 'start',\r\n    right: 'end',\r\n    center: 'middle',\r\n    middle: 'middle'\r\n};\r\nfunction 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\nvar 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction clonePath(path) {\r\n    return { newPos: path.newPos, components: path.components.slice(0) };\r\n}\r\nfunction arrayDiff(oldArr, newArr, equal) {\r\n    return diff(oldArr, newArr, equal);\r\n}\n\nvar MARK_UNUSED = '0';\r\nvar MARK_USED = '1';\r\nvar 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\nfunction isLinearGradient(value) {\r\n    return value.type === 'linear';\r\n}\r\nfunction isRadialGradient(value) {\r\n    return value.type === 'radial';\r\n}\r\nfunction isGradient(value) {\r\n    return value && (value.type === 'linear'\r\n        || value.type === 'radial');\r\n}\r\nvar 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\nfunction isPattern(value) {\r\n    return value && (!!value.image || !!value.svgElement);\r\n}\r\nvar patternDomMap = new WeakMap();\r\nvar 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\nfunction 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\nfunction hasClipPath(displayable) {\r\n    var clipPaths = displayable.__clipPaths;\r\n    return clipPaths && clipPaths.length > 0;\r\n}\r\nvar 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\nvar 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\nfunction hasShadow(style) {\r\n    return style\r\n        && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\r\n}\r\nfunction 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\nfunction parseInt10$1(val) {\r\n    return parseInt(val, 10);\r\n}\r\nfunction 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\nfunction checkParentAvailable(parent, child) {\r\n    return child && parent && child.parentNode !== parent;\r\n}\r\nfunction 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\nfunction 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\nfunction remove(parent, child) {\r\n    if (child && parent && child.parentNode === parent) {\r\n        parent.removeChild(child);\r\n    }\r\n}\r\nfunction removeFromMyParent(child) {\r\n    if (child && child.parentNode) {\r\n        child.parentNode.removeChild(child);\r\n    }\r\n}\r\nfunction getSvgElement(displayable) {\r\n    return displayable.__svgEl;\r\n}\r\nvar 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\nfunction createMethodNotSupport(method) {\r\n    return function () {\r\n        logError('In SVG mode painter not support method \"' + method + '\"');\r\n    };\r\n}\n\nregisterPainter('svg', SVGPainter);\n\nexport { Axis, List, Model, PRIORITY, color, connect, dataTool, dependencies, disConnect, disconnect, dispose$1 as dispose, env, extendChartView, extendComponentModel, extendComponentView, extendSeriesModel, format$1 as format, getCoordinateSystemDimensions, getInstanceByDom, getInstanceById, getMap, graphic$1 as graphic, helper, init$1 as init, brushSingle as innerDrawElementOnCanvas, matrix, number, parseGeoJSON, parseGeoJson, registerAction, registerCoordinateSystem, registerLayout, registerLoading, registerLocale, registerMap, registerPostInit, registerPostUpdate, registerPreprocessor, registerProcessor, registerTheme, registerTransform, registerVisual, setCanvasCreator, throttle, time, ecUtil as util, vector, version$1 as version, zrender };\n\n"]}